r44 - in trunk: . oe oe/conf oe/conf/distro oe/conf/distro/include oe/conf/machine oe/packages oe/packages/base-files oe/packages/base-files/base-files oe/packages/base-files/base-files/akita oe/packages/base-files/base-files/amsdelta oe/packages/base-files/base-files/armzone-qt2410 oe/packages/base-files/base-files/c7x0 oe/packages/base-files/base-files/collie oe/packages/base-files/base-files/epia oe/packages/base-files/base-files/familiar oe/packages/base-files/base-files/h2200 oe/packages/base-files/base-files/h3600 oe/packages/base-files/base-files/h3900 oe/packages/base-files/base-files/h5xxx oe/packages/base-files/base-files/h6300 oe/packages/base-files/base-files/htcuniversal oe/packages/base-files/base-files/ipaq-pxa270 oe/packages/base-files/base-files/jornada56x oe/packages/base-files/base-files/jornada6xx oe/packages/base-files/base-files/jornada7xx oe/packages/base-files/base-files/licenses oe/packages/base-files/base-files/mtx-1 oe/packages/base-files/base-files/netbook-pro oe/packages/base-files/base-files/netvista oe/packages/base-files/base-files/nokia770 oe/packages/base-files/base-files/nylon oe/packages/base-files/base-files/openmn oe/packages/base-files/base-files/opensimpad oe/packages/base-files/base-files/openzaurus oe/packages/base-files/base-files/poodle oe/packages/base-files/base-files/share oe/packages/base-files/base-files/simpad oe/packages/base-files/base-files/slugos oe/packages/base-files/base-files/spitz oe/packages/base-files/base-files/tosa oe/packages/base-files/base-files/wrt54 oe/packages/base-files/base-files/xxs1500 oe/packages/images oe/packages/initscripts oe/packages/initscripts/initscripts-1.0 oe/packages/initscripts/initscripts-1.0/akita oe/packages/initscripts/initscripts-1.0/arm oe/packages/initscripts/initscripts-1.0/armzone-qt2410 oe/packages/initscripts/initscripts-1.0/c7x0 oe/packages/initscripts/initscripts-1.0/collie oe/packages/initscripts/initscripts-1.0/h3600 oe/packages/initscripts/initscripts-1.0/h3900 oe/packages/initscripts/initscripts-1.0/jornada56x oe/packages/initscripts/initscripts-1.0/jornada6xx oe/packages/initscripts/initscripts-1.0/jornada7xx oe/packages/initscripts/initscripts-1.0/openmn oe/packages/initscripts/initscripts-1.0/openzaurus oe/packages/initscripts/initscripts-1.0/poodle oe/packages/initscripts/initscripts-1.0/simpad oe/packages/initscripts/initscripts-1.0/slugos oe/packages/initscripts/initscripts-1.0/spitz oe/packages/initscripts/initscripts-1.0/tosa oe/packages/initscripts/initscripts-1.0/uml oe/packages/linux oe/packages/linux/linux-qt2410 oe/packages/linux/linux-qt2410/new oe/packages/linux/linux-qt2410/new/patches oe/packages/qt2410-utils oe/packages/qt2410-utils/files oe/packages/tasks oe/packages/uboot oe/packages/uboot/files oe/packages/uucp

mickey at gta01.hmw-consulting.de mickey at gta01.hmw-consulting.de
Fri Sep 8 08:42:13 CEST 2006


Author: mickey
Date: 2006-09-08 06:42:04 +0000 (Fri, 08 Sep 2006)
New Revision: 44

Added:
   trunk/oe/
   trunk/oe/conf/
   trunk/oe/conf/distro/
   trunk/oe/conf/distro/include/
   trunk/oe/conf/distro/include/preferred-openmoko-versions.inc
   trunk/oe/conf/distro/include/sane-srcdates.inc
   trunk/oe/conf/distro/openmoko.conf
   trunk/oe/conf/machine/
   trunk/oe/conf/machine/armzone-qt2410.conf
   trunk/oe/conf/site.conf
   trunk/oe/packages/
   trunk/oe/packages/base-files/
   trunk/oe/packages/base-files/base-files/
   trunk/oe/packages/base-files/base-files/akita/
   trunk/oe/packages/base-files/base-files/akita/fstab
   trunk/oe/packages/base-files/base-files/amsdelta/
   trunk/oe/packages/base-files/base-files/amsdelta/fstab
   trunk/oe/packages/base-files/base-files/armzone-qt2410/
   trunk/oe/packages/base-files/base-files/armzone-qt2410/fstab
   trunk/oe/packages/base-files/base-files/c7x0/
   trunk/oe/packages/base-files/base-files/c7x0/fstab
   trunk/oe/packages/base-files/base-files/c7x0/usbd
   trunk/oe/packages/base-files/base-files/collie/
   trunk/oe/packages/base-files/base-files/collie/fstab
   trunk/oe/packages/base-files/base-files/collie/usbd
   trunk/oe/packages/base-files/base-files/epia/
   trunk/oe/packages/base-files/base-files/epia/fstab
   trunk/oe/packages/base-files/base-files/familiar/
   trunk/oe/packages/base-files/base-files/familiar/issue
   trunk/oe/packages/base-files/base-files/familiar/issue.net
   trunk/oe/packages/base-files/base-files/filesystems
   trunk/oe/packages/base-files/base-files/fstab
   trunk/oe/packages/base-files/base-files/h2200/
   trunk/oe/packages/base-files/base-files/h2200/fstab
   trunk/oe/packages/base-files/base-files/h3600/
   trunk/oe/packages/base-files/base-files/h3600/fstab
   trunk/oe/packages/base-files/base-files/h3900/
   trunk/oe/packages/base-files/base-files/h3900/fstab
   trunk/oe/packages/base-files/base-files/h5xxx/
   trunk/oe/packages/base-files/base-files/h5xxx/fstab
   trunk/oe/packages/base-files/base-files/h6300/
   trunk/oe/packages/base-files/base-files/h6300/fstab
   trunk/oe/packages/base-files/base-files/host.conf
   trunk/oe/packages/base-files/base-files/htcuniversal/
   trunk/oe/packages/base-files/base-files/htcuniversal/fstab
   trunk/oe/packages/base-files/base-files/inputrc
   trunk/oe/packages/base-files/base-files/ipaq-pxa270/
   trunk/oe/packages/base-files/base-files/ipaq-pxa270/fstab
   trunk/oe/packages/base-files/base-files/issue
   trunk/oe/packages/base-files/base-files/issue.net
   trunk/oe/packages/base-files/base-files/jornada56x/
   trunk/oe/packages/base-files/base-files/jornada56x/fstab
   trunk/oe/packages/base-files/base-files/jornada6xx/
   trunk/oe/packages/base-files/base-files/jornada6xx/fstab
   trunk/oe/packages/base-files/base-files/jornada7xx/
   trunk/oe/packages/base-files/base-files/jornada7xx/fstab
   trunk/oe/packages/base-files/base-files/licenses/
   trunk/oe/packages/base-files/base-files/licenses/Artistic
   trunk/oe/packages/base-files/base-files/licenses/BSD
   trunk/oe/packages/base-files/base-files/licenses/GPL-2
   trunk/oe/packages/base-files/base-files/licenses/LGPL-2
   trunk/oe/packages/base-files/base-files/licenses/LGPL-2.1
   trunk/oe/packages/base-files/base-files/motd
   trunk/oe/packages/base-files/base-files/mtx-1/
   trunk/oe/packages/base-files/base-files/mtx-1/fstab
   trunk/oe/packages/base-files/base-files/mtx-1/profile
   trunk/oe/packages/base-files/base-files/netbook-pro/
   trunk/oe/packages/base-files/base-files/netbook-pro/fstab
   trunk/oe/packages/base-files/base-files/netvista/
   trunk/oe/packages/base-files/base-files/netvista/fstab
   trunk/oe/packages/base-files/base-files/nokia770/
   trunk/oe/packages/base-files/base-files/nokia770/fstab
   trunk/oe/packages/base-files/base-files/nsswitch.conf
   trunk/oe/packages/base-files/base-files/nylon/
   trunk/oe/packages/base-files/base-files/nylon/issue
   trunk/oe/packages/base-files/base-files/nylon/issue.net
   trunk/oe/packages/base-files/base-files/openmn/
   trunk/oe/packages/base-files/base-files/openmn/fstab
   trunk/oe/packages/base-files/base-files/openmn/issue
   trunk/oe/packages/base-files/base-files/openmn/issue.net
   trunk/oe/packages/base-files/base-files/openmn/profile
   trunk/oe/packages/base-files/base-files/openmn/usbd
   trunk/oe/packages/base-files/base-files/opensimpad/
   trunk/oe/packages/base-files/base-files/opensimpad/issue
   trunk/oe/packages/base-files/base-files/opensimpad/issue.net
   trunk/oe/packages/base-files/base-files/openzaurus/
   trunk/oe/packages/base-files/base-files/openzaurus/issue
   trunk/oe/packages/base-files/base-files/openzaurus/issue.net
   trunk/oe/packages/base-files/base-files/poodle/
   trunk/oe/packages/base-files/base-files/poodle/fstab
   trunk/oe/packages/base-files/base-files/poodle/usbd
   trunk/oe/packages/base-files/base-files/profile
   trunk/oe/packages/base-files/base-files/share/
   trunk/oe/packages/base-files/base-files/share/dot.bashrc
   trunk/oe/packages/base-files/base-files/share/dot.profile
   trunk/oe/packages/base-files/base-files/simpad/
   trunk/oe/packages/base-files/base-files/simpad/fstab
   trunk/oe/packages/base-files/base-files/slugos/
   trunk/oe/packages/base-files/base-files/slugos/fstab
   trunk/oe/packages/base-files/base-files/spitz/
   trunk/oe/packages/base-files/base-files/spitz/fstab
   trunk/oe/packages/base-files/base-files/tosa/
   trunk/oe/packages/base-files/base-files/tosa/fstab
   trunk/oe/packages/base-files/base-files/tosa/usbd
   trunk/oe/packages/base-files/base-files/usbd
   trunk/oe/packages/base-files/base-files/wrt54/
   trunk/oe/packages/base-files/base-files/wrt54/fstab
   trunk/oe/packages/base-files/base-files/wrt54/profile
   trunk/oe/packages/base-files/base-files/xxs1500/
   trunk/oe/packages/base-files/base-files/xxs1500/fstab
   trunk/oe/packages/base-files/base-files_3.0.14.bb
   trunk/oe/packages/images/
   trunk/oe/packages/images/openmoko-devel-image.bb
   trunk/oe/packages/images/openmoko-image.bb
   trunk/oe/packages/initscripts/
   trunk/oe/packages/initscripts/initscripts-1.0/
   trunk/oe/packages/initscripts/initscripts-1.0/akita/
   trunk/oe/packages/initscripts/initscripts-1.0/akita/devices
   trunk/oe/packages/initscripts/initscripts-1.0/arm/
   trunk/oe/packages/initscripts/initscripts-1.0/arm/alignment.sh
   trunk/oe/packages/initscripts/initscripts-1.0/armzone-qt2410/
   trunk/oe/packages/initscripts/initscripts-1.0/armzone-qt2410/devices
   trunk/oe/packages/initscripts/initscripts-1.0/banner
   trunk/oe/packages/initscripts/initscripts-1.0/bootmisc.sh
   trunk/oe/packages/initscripts/initscripts-1.0/c7x0/
   trunk/oe/packages/initscripts/initscripts-1.0/c7x0/devices
   trunk/oe/packages/initscripts/initscripts-1.0/checkfs.sh
   trunk/oe/packages/initscripts/initscripts-1.0/checkroot.sh
   trunk/oe/packages/initscripts/initscripts-1.0/collie/
   trunk/oe/packages/initscripts/initscripts-1.0/collie/devices
   trunk/oe/packages/initscripts/initscripts-1.0/device_table.txt
   trunk/oe/packages/initscripts/initscripts-1.0/devices
   trunk/oe/packages/initscripts/initscripts-1.0/devpts
   trunk/oe/packages/initscripts/initscripts-1.0/devpts.sh
   trunk/oe/packages/initscripts/initscripts-1.0/finish
   trunk/oe/packages/initscripts/initscripts-1.0/h3600/
   trunk/oe/packages/initscripts/initscripts-1.0/h3600/devices
   trunk/oe/packages/initscripts/initscripts-1.0/h3900/
   trunk/oe/packages/initscripts/initscripts-1.0/h3900/devices
   trunk/oe/packages/initscripts/initscripts-1.0/halt
   trunk/oe/packages/initscripts/initscripts-1.0/hostname.sh
   trunk/oe/packages/initscripts/initscripts-1.0/jornada56x/
   trunk/oe/packages/initscripts/initscripts-1.0/jornada56x/devices
   trunk/oe/packages/initscripts/initscripts-1.0/jornada6xx/
   trunk/oe/packages/initscripts/initscripts-1.0/jornada6xx/devices
   trunk/oe/packages/initscripts/initscripts-1.0/jornada7xx/
   trunk/oe/packages/initscripts/initscripts-1.0/jornada7xx/devices
   trunk/oe/packages/initscripts/initscripts-1.0/mountall.sh
   trunk/oe/packages/initscripts/initscripts-1.0/mountnfs.sh
   trunk/oe/packages/initscripts/initscripts-1.0/openmn/
   trunk/oe/packages/initscripts/initscripts-1.0/openmn/extractfs
   trunk/oe/packages/initscripts/initscripts-1.0/openmn/packages
   trunk/oe/packages/initscripts/initscripts-1.0/openmn/umountfs
   trunk/oe/packages/initscripts/initscripts-1.0/openzaurus/
   trunk/oe/packages/initscripts/initscripts-1.0/openzaurus/checkversion
   trunk/oe/packages/initscripts/initscripts-1.0/poodle/
   trunk/oe/packages/initscripts/initscripts-1.0/poodle/devices
   trunk/oe/packages/initscripts/initscripts-1.0/populate-volatile.sh
   trunk/oe/packages/initscripts/initscripts-1.0/ramdisk
   trunk/oe/packages/initscripts/initscripts-1.0/reboot
   trunk/oe/packages/initscripts/initscripts-1.0/rmnologin
   trunk/oe/packages/initscripts/initscripts-1.0/save-rtc.sh
   trunk/oe/packages/initscripts/initscripts-1.0/sendsigs
   trunk/oe/packages/initscripts/initscripts-1.0/simpad/
   trunk/oe/packages/initscripts/initscripts-1.0/simpad/devices
   trunk/oe/packages/initscripts/initscripts-1.0/single
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/alignment.sh
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/banner
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/checkroot.sh
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/devices.patch
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/domainname.sh
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/mountall.sh
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/rootopts.patch
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountfs
   trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountnfs.sh
   trunk/oe/packages/initscripts/initscripts-1.0/spitz/
   trunk/oe/packages/initscripts/initscripts-1.0/spitz/devices
   trunk/oe/packages/initscripts/initscripts-1.0/sysfs.sh
   trunk/oe/packages/initscripts/initscripts-1.0/tosa/
   trunk/oe/packages/initscripts/initscripts-1.0/tosa/devices
   trunk/oe/packages/initscripts/initscripts-1.0/uml/
   trunk/oe/packages/initscripts/initscripts-1.0/uml/devices
   trunk/oe/packages/initscripts/initscripts-1.0/umountfs
   trunk/oe/packages/initscripts/initscripts-1.0/umountnfs.sh
   trunk/oe/packages/initscripts/initscripts-1.0/urandom
   trunk/oe/packages/initscripts/initscripts-1.0/volatiles
   trunk/oe/packages/initscripts/initscripts-slugos_1.0.bb
   trunk/oe/packages/initscripts/initscripts_1.0.bb
   trunk/oe/packages/linux/
   trunk/oe/packages/linux/README
   trunk/oe/packages/linux/linux-qt2410/
   trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410
   trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410.laforge
   trunk/oe/packages/linux/linux-qt2410/new/
   trunk/oe/packages/linux/linux-qt2410/new/patches-20060907.tar.bz2
   trunk/oe/packages/linux/linux-qt2410/new/patches/
   trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdebugp.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdmalockup.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-get_ro.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-sdipre_limit.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-tt1104.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/mmc.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-base.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-biglcd.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-cs8900.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/s3c2410_serial-nodebug.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/series
   trunk/oe/packages/linux/linux-qt2410/new/patches/touchscreen.patch
   trunk/oe/packages/linux/linux-qt2410/new/patches/udc.patch
   trunk/oe/packages/linux/linux-qt2410/patches-2.6.17.7-qt2401-20060806.tar.bz2
   trunk/oe/packages/linux/linux-qt2410/qt2410-biglcd.patch
   trunk/oe/packages/linux/linux-qt2410/qt2410-touchscreen.patch
   trunk/oe/packages/linux/linux-qt2410_2.6.17.7.bb
   trunk/oe/packages/linux/qt2410-kernel_2.6.bb
   trunk/oe/packages/qt2410-utils/
   trunk/oe/packages/qt2410-utils/files/
   trunk/oe/packages/qt2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
   trunk/oe/packages/qt2410-utils/files/sjf2410-linux-20060807.tar.bz2
   trunk/oe/packages/qt2410-utils/s3c2410-boot-usb-native_20060807.bb
   trunk/oe/packages/qt2410-utils/sjf2410-linux-native_20060807.bb
   trunk/oe/packages/tasks/
   trunk/oe/packages/tasks/task-openmoko.bb
   trunk/oe/packages/uboot/
   trunk/oe/packages/uboot/files/
   trunk/oe/packages/uboot/files/arm_flags.patch
   trunk/oe/packages/uboot/files/qt2410.h
   trunk/oe/packages/uboot/files/qt2410_nand.h
   trunk/oe/packages/uboot/files/qt2410_ram.h
   trunk/oe/packages/uboot/files/u-boot-20060807-qt2410.patch
   trunk/oe/packages/uboot/files/u-boot-20060807.tar.bz2
   trunk/oe/packages/uboot/files/u-boot-20060907.tar.bz2
   trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060807.bb
   trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060907.bb
   trunk/oe/packages/uucp/
   trunk/oe/packages/uucp/uucp_1.07.bb
Log:
initial commit of OpenMoko SDK metadata as per 20060908 release


Added: trunk/oe/conf/distro/include/preferred-openmoko-versions.inc
===================================================================
--- trunk/oe/conf/distro/include/preferred-openmoko-versions.inc	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/conf/distro/include/preferred-openmoko-versions.inc	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,19 @@
+#
+# Specify which versions of packages to build
+#
+
+#work around some breakages
+#SRCDATE_minimo=20050401
+
+#set some preferred providers:
+PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
+PREFERRED_PROVIDER_gconf = "gconf-dbus"
+PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs-dbus"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+PREFERRED_PROVIDER_bluez-utils = "bluez-utils-dbus"
+
+PREFERRED_VERSION_atk = "1.9.0"
+PREFERRED_VERSION_pango = "1.8.2"
+PREFERRED_VERSION_glib-2.0 = "2.6.4"
+PREFERRED_VERSION_gtk+ = "2.6.10" 
+PREFERRED_VERSION_gtk-engines = "2.6.5"

Added: trunk/oe/conf/distro/include/sane-srcdates.inc
===================================================================
--- trunk/oe/conf/distro/include/sane-srcdates.inc	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/conf/distro/include/sane-srcdates.inc	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,85 @@
+# Lock down some SRCDATEs, see http://svn.o-hand.com/view/poky/trunk/openembedded/conf/distro/poky.conf for the original version 
+
+# Kernel modules
+SRCDATE_at76c503a-modules ?= "20060814"
+SRCDATE_prism54-module ?= "20060814"
+
+# X11 libs, extentions and protos
+SRCDATE_xcalibrate ?= "20060804"
+SRCDATE_compositeext ?= "20060814"
+SRCDATE_drm ?= "20060814"
+SRCDATE_drm-kernel ?= "20060814"
+SRCDATE_fixesext ?= "20060814"
+SRCDATE_libxext-native ?= "20060814"
+SRCDATE_libxss ?= "20060814"
+SRCDATE_recordext ?= "20060814"
+SRCDATE_renderext ?= "20060814"
+SRCDATE_xcalibrate ?= "20060814"
+SRCDATE_xcalibrateext ?= "20060814"
+SRCDATE_xxf86dgaext ?= "20060814"
+SRCDATE_xxf86vmext ?= "20060814" 
+
+# Matchbox / O-hand
+SRCDATE_contacts ?= "20060707"
+SRCDATE_dates ?= "20060707"
+SRCDATE_web ?= "20060613"
+SRCDATE_eds-dbus ?= "20060126"
+SRCDATE_matchbox-common ?= "20060612"
+SRCDATE_matchbox-config-gtk ?= "20060612"
+SRCDATE_matchbox-desktop ?= "20060612"
+SRCDATE_matchbox-keyboard ?= "20060612"
+SRCDATE_matchbox-panel ?= "20060612"
+SRCDATE_matchbox-panel-manager ?= "20060612"
+SRCDATE_matchbox-stroke ?= "20060612"
+SRCDATE_matchbox-themes-extra ?= "20060612"
+SRCDATE_matchbox-wm ?= "20060612"
+SRCDATE_libmatchbox ?= "20060612"
+SRCDATE_libfakekey ?= "20051101"
+SRCDATE_zaurusd ?= "20060628"
+
+# GPE
+SRCDATE_dasher-gpe  ?= "20060814"
+SRCDATE_rosetta ?= "20060804"
+
+# GNOME
+SRCDATE_gconf-dbus ?= "20060719"
+SRCDATE_gnome-vfs-dbus ?= "20060119"
+SRCDATE_gtkhtml2 ?= "20060323"
+
+#Misc apps, sorted by alphabet
+SRCDATE_avetanabt ?= "20060814"
+SRCDATE_bl ?= "20060814"
+SRCDATE_dvbstream ?= "20060814"
+SRCDATE_dvbtraffic ?= "20060814"
+SRCDATE_dvbtune ?= "20060814"
+SRCDATE_fdclock ?= "20060814"
+SRCDATE_fltk ?= "20060814"
+SRCDATE_ipkg-link ?= "20050930"
+SRCDATE_ipkg-link-1 ?= "20050930"
+SRCDATE_ipkg-utils ?= "20050930"
+SRCDATE_ipkg-utils-native ?= "20050930"
+SRCDATE_kaffe-qt ?= "20060814"
+SRCDATE_kbdd ?= "20060814"
+SRCDATE_led ?= "20060814"
+SRCDATE_linux-input ?= "20060814"
+SRCDATE_madwifi-modules ?= "20060814"
+SRCDATE_mileage ?= "20060814"
+SRCDATE_minimo ?= "20050401"
+SRCDATE_mystun-server ?= "20060814"
+SRCDATE_olsrd ?= "20060814"
+SRCDATE_opencvs ?= "20060814"
+SRCDATE_oprofile ?= "20060214"
+SRCDATE_portaudio ?= "20060814"
+SRCDATE_putty ?= "20060814"
+SRCDATE_python-cairo ?= "20060814"
+SRCDATE_qemu-native ?= "20060723"
+SRCDATE_roadster ?= "20060814"
+SRCDATE_sctzap ?= "20060814"
+SRCDATE_tslib ?= "20051101"
+SRCDATE_waimea ?= "20060814"
+SRCDATE_xcompmgr ?= "20060814"
+SRCDATE_xirssi ?= "20060814"
+SRCDATE_xsvg ?= "20060814"
+SRCDATE_yamonenv ?= "20060814"
+SRCDATE_zroadmap ?= "20060814"
+

Added: trunk/oe/conf/distro/openmoko.conf
===================================================================
--- trunk/oe/conf/distro/openmoko.conf	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/conf/distro/openmoko.conf	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,100 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: OpenMoKo
+#@DESCRIPTION: Linux Distribution Configuration for the FIC GTA01 Project
+#-----------------------------------------------------------------------------
+
+#
+# Header
+#
+DISTRO_NAME = "OpenMoKo"
+DISTRO_VERSION = ".dev-snapshot-${SRCDATE}"
+#DISTRO_TYPE = "release"
+DISTRO_TYPE = "debug"
+
+#
+# Naming schemes
+#
+PARALLEL_INSTALL_MODULES = "1"
+INHERIT += "debian multimachine"
+
+#
+# Packaging and output format
+#
+INHERIT += "package_ipk"
+IMAGE_FSTYPES = "tar.gz ext2.gz jffs2"
+
+#
+# Binutils & Compiler
+#
+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"
+
+# NOTE: 4.1.1 should be used eventually
+PREFERRED_VERSION_gcc = "3.4.4"
+PREFERRED_VERSION_gcc-cross = "3.4.4"
+PREFERRED_VERSION_gcc-cross-initial = "3.4.4"
+PREFERRED_VERSION_binutils-cross = "2.15.94.0.1"
+PREFERRED_VERSION_binutils = "2.15.94.0.1"
+
+#
+# Target OS & FPU system
+# 
+TARGET_OS = "linux"
+TARGET_FPU_arm = "soft"
+TARGET_FPU_armeb = "soft"
+PREFERRED_PROVIDER_virtual/libiconv = "glibc"
+PREFERRED_PROVIDER_virtual/libintl = "glibc"
+PREFERRED_VERSION_glibc = "2.3.5+cvs20050627"
+
+#
+# Features
+#
+DISTRO_FEATURES = "alsa bluetooth ext2 ipsec nfs ppp smbfs usbgadget"
+
+#
+# Bootstrap & Init
+#
+PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
+require conf/distro/include/sane-srcdates.inc
+
+#
+# Framebuffer & X
+#
+PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
+PREFERRED_PROVIDER_virtual/ecore ?= "ecore-x11"
+PREFERRED_PROVIDER_virtual/evas ?= "evas-x11"
+PREFERRED_PROVIDER_virtual/esmart ?= "esmart-x11"
+PREFERRED_PROVIDER_virtual/libsdl = "libsdl-x11"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
+PREFERRED_VERSION_xserver-kdrive = "1.1.0+git${SRCDATE}"
+require conf/distro/include/preferred-xorg-versions-X11R7.1.inc
+
+#
+# Core System
+#
+PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
+PREFERRED_PROVIDER_gconf = "gconf-dbus"
+PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs-dbus"
+PREFERRED_PROVIDER_bluez-utils = "bluez-utils-dbus"
+
+#
+# Opie
+#
+QTE_VERSION = "2.3.10"
+PALMTOP_USE_MULTITHREADED_QTE = "yes"
+require conf/distro/include/preferred-opie-versions.inc
+
+#
+# Enlightenment
+#
+require conf/distro/include/preferred-e-versions.inc
+
+#
+# Versions for OpenMoko
+#
+require conf/distro/include/preferred-openmoko-versions.inc
+

Added: trunk/oe/conf/machine/armzone-qt2410.conf
===================================================================
--- trunk/oe/conf/machine/armzone-qt2410.conf	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/conf/machine/armzone-qt2410.conf	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,34 @@
+#-----------------------------------------------------------------------------
+#@TYPE: Machine
+#@NAME: armzone.com QT-2410
+#@DESCRIPTION: Machine configuration for armzone.com QT-2410 Development Board
+#-----------------------------------------------------------------------------
+
+TARGET_ARCH = "arm"
+IPKG_EXTRA_ARCHS = "armv4t"
+
+PREFERRED_PROVIDER_virtual/kernel = "qt2410-kernel"
+
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget"
+
+MACHINE_EXTRA_RDEPENDS = ""
+MACHINE_EXTRA_RRECOMMENDS = ""
+
+MACHINE_TASK_PROVIDER = "task-base"
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "-h 115200 ttyS0"
+
+# used by some images
+ROOT_FLASH_SIZE = "60M"
+# extra jffs2 tweaks
+EXTRA_IMAGECMD_jffs2 = "--eraseblock=0x4000 --pad -n"
+
+# build tools
+EXTRA_IMAGEDEPENDS += "s3c2410-boot-usb-native sjf2410-linux-native"
+
+# gcc optimization
+PACKAGE_ARCH = "armv4t"
+TARGET_CC_ARCH = "-march=armv4t -mtune=arm920t"
+# -mcpu=arm920t"
+#include conf/machine/include/tune-arm920t.conf

Added: trunk/oe/conf/site.conf
===================================================================
--- trunk/oe/conf/site.conf	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/conf/site.conf	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,26 @@
+# OpenMoko site configuration file
+#
+# History:
+#
+# 2006.08.16	mickey	created.
+
+DL_DIR = "${OMDIR}/sources"
+
+BBFILES := "${OMDIR}/openembedded/packages/*/*.bb ${OMDIR}/metadata/packages/*/*.bb"
+BBFILE_COLLECTIONS = "upstream local"
+BBFILE_PATTERN_upstream = "^${OMDIR}/openembedded/"
+BBFILE_PATTERN_local = "^/${OMDIR}/metadata/"
+BBFILE_PRIORITY_upstream = "5"
+BBFILE_PRIORITY_local = "10"
+
+BBINCLUDELOGS = "yes"
+KERNEL_CONSOLE = "tty1"
+#DEBUG_OPTIMIZATION = "-O -g3"
+#DEBUG_BUILD = "1"
+#INHIBIT_PACKAGE_STRIP = "1"
+SOURCEFORGE_MIRROR = "http://heanet.dl.sf.net"
+PARALLEL_MAKE = ""
+INHERIT += "patcher"
+
+SRCDATE = "20060814"
+

Added: trunk/oe/packages/base-files/base-files/akita/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/akita/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/akita/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,16 @@
+/dev/mtdblock2	/ 	jffs2	rw,noatime	1  1 
+/dev/mtdblock3	/home 	jffs2	defaults,noatime	1  2
+proc		/proc	proc	defaults	0  0
+/dev/hda1	/media/cf	auto	defaults,sync,noauto	0  0
+
+tmpfs		/var		tmpfs   defaults        0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0
+
+# SD/MMC in kernel 2.4
+/dev/mmcda1	/media/card	auto	defaults,sync,noauto	0  0
+# SD/MMC in kernel 2.6
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto	0  0
+
+# USB Storage
+/dev/sda1 /media/usbhdd		vfat	noauto,umask=000,noatime,iocharset=utf8,codepage=932	0	0
+

Added: trunk/oe/packages/base-files/base-files/amsdelta/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/amsdelta/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/amsdelta/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+/dev/mtdblock4	/ 	jffs2	defaults	1  1 
+proc            /proc   proc    defaults        0  0
+tmpfs		/var	tmpfs	defaults	0  0
+
+# we use a non-volatile ramdisk, see /etc/init.d/ramdisk
+tmpfs		/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/armzone-qt2410/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/armzone-qt2410/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/armzone-qt2410/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,16 @@
+# Root and Pseudo
+/dev/mtdblock4	/ 		jffs2	rw,noatime		1  1 
+proc		/proc		proc	defaults		0  0
+
+# devpts?
+# usb?
+
+# Temporary
+tmpfs		/var		tmpfs   defaults        	0  0
+tmpfs		/media/ram	tmpfs	defaults		0  0
+
+# SD/MMC
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto	0  0
+
+# USB Storage
+/dev/sda1 /media/hdd         vfat    noauto,umask=000,noatime,iocharset=utf8,codepage=932    0       0

Added: trunk/oe/packages/base-files/base-files/c7x0/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/c7x0/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/c7x0/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,12 @@
+/dev/mtdblock2	/ 	jffs2	rw,noatime	1  1 
+/dev/mtdblock3	/home 	jffs2	defaults,noatime	1  2
+proc		/proc	proc	defaults	0  0
+/dev/hda1	/media/cf	auto	defaults,sync,noauto	0  0
+
+tmpfs		/var		tmpfs   defaults        0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0
+
+# SD/MMC in kernel 2.4
+/dev/mmcda1	/media/card	auto	defaults,sync,noauto	0  0
+# SD/MMC in kernel 2.6
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto	0  0

Added: trunk/oe/packages/base-files/base-files/c7x0/usbd
===================================================================
--- trunk/oe/packages/base-files/base-files/c7x0/usbd	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/c7x0/usbd	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1 @@
+usbdmodule=pxa_bi

Added: trunk/oe/packages/base-files/base-files/collie/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/collie/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/collie/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+/dev/mtdblock4	/ 	jffs2	defaults	1  1 
+proc            /proc   proc    defaults        0  0
+/dev/hda1	/media/cf	auto	defaults,sync,noauto,noatime,user,exec,suid,gid=100,umask=0002	0  0
+/dev/mmcda1	/media/card	auto	defaults,sync,noauto,noatime,user,exec,suid	0  0
+tmpfs		/var	tmpfs	defaults	0  0
+
+# we use a non-volatile ramdisk, see /etc/init.d/ramdisk
+#tmpfs		/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/collie/usbd
===================================================================
--- trunk/oe/packages/base-files/base-files/collie/usbd	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/collie/usbd	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1 @@
+usbdmodule=sa1100_bi

Added: trunk/oe/packages/base-files/base-files/epia/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/epia/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/epia/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,4 @@
+/dev/ram0	/ 	ext2	rw		1  1 
+tmpfs		/var	tmpfs	defaults	0  0
+proc		/proc	proc	defaults	0  0
+tmpfs		/tmp	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/familiar/issue
===================================================================
--- trunk/oe/packages/base-files/base-files/familiar/issue	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/familiar/issue	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+Familiar Linux Unofficial Snapshot \n \l
+

Added: trunk/oe/packages/base-files/base-files/familiar/issue.net
===================================================================
--- trunk/oe/packages/base-files/base-files/familiar/issue.net	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/familiar/issue.net	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,3 @@
+Familiar Linux Unofficial Snapshot %h
+
+

Added: trunk/oe/packages/base-files/base-files/filesystems
===================================================================
--- trunk/oe/packages/base-files/base-files/filesystems	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/filesystems	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+minix
+fat
+vfat
+ext2
+ext3
+*

Added: trunk/oe/packages/base-files/base-files/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,12 @@
+# stock fstab - you probably want to override this with a machine specific one
+
+rootfs               /                    auto       defaults              1  1
+proc                 /proc                proc       defaults              0  0
+devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
+usbdevfs             /proc/bus/usb        usbdevfs   noauto                0  0
+tmpfs                /var                 tmpfs      defaults              0  0
+tmpfs                /media/ram           tmpfs      defaults              0  0
+
+# uncomment this if your device has a SD/MMC/Transflash slot
+#/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0
+

Added: trunk/oe/packages/base-files/base-files/h2200/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/h2200/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/h2200/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+/dev/mtdblock3	/		jffs2	defaults	1  1		
+proc            /proc		proc    defaults        0  0
+sys             /sys		sysfs	defaults        0  0
+tmpfs		/var		tmpfs	defaults	0  0
+/dev/hda1	/media/cf	auto	defaults,sync,noauto,noatime,exec,suid	0  0
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto,noatime,exec,suid	0  0

Added: trunk/oe/packages/base-files/base-files/h3600/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/h3600/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/h3600/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+/dev/mtdblock4	/ 	jffs2	defaults	1  1 
+proc            /proc   proc    defaults        0  0
+/dev/hda1	/media/cf	auto	defaults,noauto,noatime,user,exec,suid	0  0
+/dev/mmc/part1	/media/card	auto	defaults,noauto,noatime,user,exec,suid	0  0
+tmpfs		/var	tmpfs	defaults	0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/h3900/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/h3900/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/h3900/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+/dev/mtdblock/1	/ 	jffs2	defaults	1  1 
+#breaks h51xx
+#/dev/mtdblock/2 /home   jffs2   defaults        1  1
+proc            /proc   proc    defaults        0  0
+/dev/hda1	/media/cf	auto	defaults,noauto,noatime,user,exec,suid	0  0
+/dev/mmc/part1	/media/card	auto	defaults,noauto,noatime,user,exec,suid	0  0
+tmpfs		/var	tmpfs	defaults	0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/h5xxx/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/h5xxx/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/h5xxx/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+/dev/mtdblock/1	/ 	jffs2	defaults	1  1 
+#breaks h51xx
+/dev/mtdblock/2 /home   jffs2   defaults        1  1
+proc            /proc   proc    defaults        0  0
+/dev/hda1	/media/cf	auto	defaults,noauto,noatime,user,exec,suid	0  0
+/dev/mmc/part1	/media/card	auto	defaults,noauto,noatime,user,exec,suid	0  0
+tmpfs		/var	tmpfs	defaults	0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/h6300/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/h6300/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/h6300/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+rootfs       	/		auto	defaults	1  1
+proc            /proc		proc    defaults        0  0
+sys             /sys		sysfs	defaults        0  0
+tmpfs		/var		tmpfs	defaults	0  0
+#The devpts file system provides an interface to pseudo terminal (pty) devices. 
+devpts		/dev/pts	devpts	mode=0620,gid=5	0  0
+#Mount first partition from the mmc card.
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto,noatime,exec,suid	0  0

Added: trunk/oe/packages/base-files/base-files/host.conf
===================================================================
--- trunk/oe/packages/base-files/base-files/host.conf	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/host.conf	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+order hosts,bind
+multi on

Added: trunk/oe/packages/base-files/base-files/htcuniversal/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/htcuniversal/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/htcuniversal/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,12 @@
+# stock fstab - you probably want to override this with a machine specific one
+
+rootfs               /                    auto       defaults              1  1
+proc                 /proc                proc       defaults              0  0
+devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
+#usbfs               /proc/bus/usb        usbfs   noauto                0  0
+tmpfs                /var                 tmpfs      defaults              0  0
+tmpfs                /media/ram           tmpfs      defaults              0  0
+
+# uncomment this if your device has a SD/MMC/Transflash slot
+#/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0
+

Added: trunk/oe/packages/base-files/base-files/inputrc
===================================================================
--- trunk/oe/packages/base-files/base-files/inputrc	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/inputrc	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,61 @@
+# /etc/inputrc - global inputrc for libreadline
+# See readline(3readline) and `info rluserman' for more information.
+
+# Be 8 bit clean.
+set input-meta on
+set output-meta on
+
+# To allow the use of 8bit-characters like the german umlauts, comment out
+# the line below. However this makes the meta key not work as a meta key,
+# which is annoying to those which don't need to type in 8-bit characters.
+
+# set convert-meta off
+
+# try to enable the application keypad when it is called.  Some systems
+# need this to enable the arrow keys.
+# set enable-keypad on
+
+# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys
+
+# do not bell on tab-completion 
+# set bell-style none 
+
+# some defaults / modifications for the emacs mode
+$if mode=emacs
+
+# allow the use of the Home/End keys
+# "\e[1~": beginning-of-line
+# "\e[4~": end-of-line
+
+# allow the use of the Delete/Insert keys
+# "\e[3~": delete-char
+# "\e[2~": quoted-insert
+
+# mappings for "page up" and "page down" to step to the beginning/end 
+# of the history
+# "\e[5~": beginning-of-history
+# "\e[6~": end-of-history
+
+# alternate mappings for "page up" and "page down" to search the history
+# "\e[5~": history-search-backward
+# "\e[6~": history-search-forward
+
+# # mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
+# "\e[5C": forward-word
+# "\e[5D": backward-word
+# "\e\e[C": forward-word
+# "\e\e[D": backward-word
+
+# $if term=rxvt
+# "\e[8~": end-of-line
+# $endif
+
+# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
+# "\eOH": beginning-of-line
+# "\eOF": end-of-line
+
+# for freebsd console
+# "\e[H": beginning-of-line
+# "\e[F": end-of-line
+
+$endif

Added: trunk/oe/packages/base-files/base-files/ipaq-pxa270/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/ipaq-pxa270/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/ipaq-pxa270/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,9 @@
+/dev/mtdblock2 	/		jffs2	defaults		1  1		
+/dev/mtdblock3 	/home   jffs2   defaults        1  1
+
+proc            /proc		proc    defaults        0  0
+sys             /sys        sysfs	defaults        0  0
+
+/dev/hda1		/media/cf	auto	defaults,noauto,noatime,exec,suid	0  0
+tmpfs			/var		tmpfs	defaults	0  0
+tmpfs			/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/issue
===================================================================
--- trunk/oe/packages/base-files/base-files/issue	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/issue	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+OpenEmbedded Linux \n \l
+

Added: trunk/oe/packages/base-files/base-files/issue.net
===================================================================
--- trunk/oe/packages/base-files/base-files/issue.net	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/issue.net	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,3 @@
+OpenEmbedded Linux %h
+
+

Added: trunk/oe/packages/base-files/base-files/jornada56x/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/jornada56x/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/jornada56x/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+/dev/mtdblock1	/ 	jffs2	rw,noatime	1  1 
+proc		/proc	proc	defaults	0  0
+/dev/hda1	/mnt/cf	auto	defaults,sync,noauto	0  0
+tmpfs		/var	tmpfs	defaults	0  0
+tmpfs		/mnt/ram	tmpfs	defaults	0  0
+devpts		/dev/pts	devpts	defaults	0  0
\ No newline at end of file

Added: trunk/oe/packages/base-files/base-files/jornada6xx/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/jornada6xx/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/jornada6xx/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,7 @@
+proc		/proc	proc	defaults	        0  0
+/dev/hda2       /       ext2    defaults                0  0
+/dev/hda1	/mnt/cf	auto	defaults,sync,noauto	0  0
+/dev/hda3       none    swap    sw                      0  0
+tmpfs		/var	tmpfs	defaults	        0  0
+tmpfs		/mnt/ram	tmpfs	defaults	0  0
+devpts		/dev/pts	devpts	defaults	0  0
\ No newline at end of file

Added: trunk/oe/packages/base-files/base-files/jornada7xx/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/jornada7xx/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/jornada7xx/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,7 @@
+proc		/proc	proc	defaults	        0  0
+/dev/hda2       /       ext2    defaults                0  0
+/dev/hda1	/mnt/cf	auto	defaults,sync,noauto	0  0
+/dev/hda3       none    swap    sw                      0  0
+tmpfs		/var	tmpfs	defaults	        0  0
+tmpfs		/mnt/ram	tmpfs	defaults	0  0
+devpts		/dev/pts	devpts	defaults	0  0
\ No newline at end of file

Added: trunk/oe/packages/base-files/base-files/licenses/Artistic
===================================================================
--- trunk/oe/packages/base-files/base-files/licenses/Artistic	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/licenses/Artistic	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,131 @@
+
+
+
+
+			 The "Artistic License"
+
+				Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+	"Package" refers to the collection of files distributed by the
+	Copyright Holder, and derivatives of that collection of files
+	created through textual modification.
+
+	"Standard Version" refers to such a Package if it has not been
+	modified, or has been modified in accordance with the wishes
+	of the Copyright Holder as specified below.
+
+	"Copyright Holder" is whoever is named in the copyright or
+	copyrights for the package.
+
+	"You" is you, if you're thinking about copying or distributing
+	this Package.
+
+	"Reasonable copying fee" is whatever you can justify on the
+	basis of media cost, duplication charges, time of people involved,
+	and so on.  (You will not be required to justify it to the
+	Copyright Holder, but only to the computing community at large
+	as a market that must bear the fee.)
+
+	"Freely Available" means that no fee is charged for the item
+	itself, though there may be fees involved in handling the item.
+	It also means that recipients of the item may redistribute it
+	under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder.  A Package
+modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+    a) place your modifications in the Public Domain or otherwise make them
+    Freely Available, such as by posting said modifications to Usenet or
+    an equivalent medium, or placing the modifications on a major archive
+    site such as uunet.uu.net, or by allowing the Copyright Holder to include
+    your modifications in the Standard Version of the Package.
+
+    b) use the modified Package only within your corporation or organization.
+
+    c) rename any non-standard executables so the names do not conflict
+    with standard executables, which must also be provided, and provide
+    a separate manual page for each non-standard executable that clearly
+    documents how it differs from the Standard Version.
+
+    d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+    a) distribute a Standard Version of the executables and library files,
+    together with instructions (in the manual page or equivalent) on where
+    to get the Standard Version.
+
+    b) accompany the distribution with the machine-readable source of
+    the Package with your modifications.
+
+    c) give non-standard executables non-standard names, and clearly
+    document the differences in manual pages (or equivalent), together
+    with instructions on where to get the Standard Version.
+
+    d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package.  You may charge any fee you choose for support of this
+Package.  You may not charge a fee for this Package itself.  However,
+you may distribute this Package in aggregate with other (possibly
+commercial) programs as part of a larger (possibly commercial) software
+distribution provided that you do not advertise this Package as a
+product of your own.  You may embed this Package's interpreter within
+an executable of yours (by linking); this shall be construed as a mere
+form of aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package.  If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution.  Such use shall not be
+construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+				The End

Added: trunk/oe/packages/base-files/base-files/licenses/BSD
===================================================================
--- trunk/oe/packages/base-files/base-files/licenses/BSD	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/licenses/BSD	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,26 @@
+Copyright (c) The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.

Added: trunk/oe/packages/base-files/base-files/licenses/GPL-2
===================================================================
--- trunk/oe/packages/base-files/base-files/licenses/GPL-2	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/licenses/GPL-2	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Added: trunk/oe/packages/base-files/base-files/licenses/LGPL-2
===================================================================
--- trunk/oe/packages/base-files/base-files/licenses/LGPL-2	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/licenses/LGPL-2	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,481 @@
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!

Added: trunk/oe/packages/base-files/base-files/licenses/LGPL-2.1
===================================================================
--- trunk/oe/packages/base-files/base-files/licenses/LGPL-2.1	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/licenses/LGPL-2.1	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,510 @@
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+

Added: trunk/oe/packages/base-files/base-files/motd
===================================================================

Added: trunk/oe/packages/base-files/base-files/mtx-1/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/mtx-1/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/mtx-1/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+# /etc/fstab: static file system information. mtx-1
+#
+# <file system> <mount pt>     <type>     <options>         <dump> <pass>
+rootfs          /              auto       defaults          1      1
+tmpfs           /var           tmpfs      size=10m          0      0
+proc            /proc          proc       defaults          0      0
+devpts          /dev/pts       devpts     mode=0620,gid=5   0      0
+usbdevfs        /proc/bus/usb  usbdevfs   noauto            0      0

Added: trunk/oe/packages/base-files/base-files/mtx-1/profile
===================================================================
--- trunk/oe/packages/base-files/base-files/mtx-1/profile	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/mtx-1/profile	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,25 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+   PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+export PATH PS1
+
+umask 022
+
+alias ll="ls -lah"
\ No newline at end of file

Added: trunk/oe/packages/base-files/base-files/netbook-pro/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/netbook-pro/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/netbook-pro/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+rootfs               /                    auto       defaults              1 1
+proc                 /proc                proc       defaults              0 0
+devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
+usbdevfs             /proc/bus/usb        usbdevfs   noauto                0 0
+tmpfs                /var                 tmpfs      defaults              0 0

Added: trunk/oe/packages/base-files/base-files/netvista/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/netvista/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/netvista/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+/dev/hdc2	/ 	ext2	rw,noatime		1  1 
+tmpfs		/var	tmpfs	defaults	0  0
+proc		/proc	proc	defaults	0  0
+tmpfs		/tmp	tmpfs	defaults	0  0
+devfs		/dev/devfs devfs defaults	0  0

Added: trunk/oe/packages/base-files/base-files/nokia770/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/nokia770/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/nokia770/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+rootfs          /               rootfs     defaults,errors=remount-ro,noatime  0 0
+/dev/mmcblk0p1  /media/card     auto       defaults,noauto,noatime,exec,suid   0 0
+tmpfs           /var            tmpfs      defaults             0  0
+tmpfs           /media/ram      tmpfs      defaults             0  0
+proc            /proc           proc       defaults             0  0
+usbdevfs        /proc/bus/usb   usbdevfs   noauto               0  0

Added: trunk/oe/packages/base-files/base-files/nsswitch.conf
===================================================================
--- trunk/oe/packages/base-files/base-files/nsswitch.conf	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/nsswitch.conf	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,19 @@
+# /etc/nsswitch.conf
+#
+# Example configuration of GNU Name Service Switch functionality.
+# If you have the `glibc-doc' and `info' packages installed, try:
+# `info libc "Name Service Switch"' for information about this file.
+
+passwd:         compat
+group:          compat
+shadow:         compat
+
+hosts:          files dns
+networks:       files
+
+protocols:      db files
+services:       db files
+ethers:         db files
+rpc:            db files
+
+netgroup:       nis

Added: trunk/oe/packages/base-files/base-files/nylon/issue
===================================================================
--- trunk/oe/packages/base-files/base-files/nylon/issue	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/nylon/issue	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+Nylon Mesh Router Linux \n \l
+

Added: trunk/oe/packages/base-files/base-files/nylon/issue.net
===================================================================
--- trunk/oe/packages/base-files/base-files/nylon/issue.net	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/nylon/issue.net	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,3 @@
+Nylon Mesh Router Linux %h
+
+

Added: trunk/oe/packages/base-files/base-files/openmn/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/openmn/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openmn/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+devfs		/dev		devfs		defaults		0 0
+proc		/proc		proc		defaults		0 0
+none		/sys		sysfs		defaults		0 0
+rootfs		/		rootfs		rw			1 1
+tmpfs		/var		tmpfs		defaults		0 0
+tmpfs		/tmp		tmpfs		defaults		0 0

Added: trunk/oe/packages/base-files/base-files/openmn/issue
===================================================================
--- trunk/oe/packages/base-files/base-files/openmn/issue	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openmn/issue	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+M&N 5.4
+

Added: trunk/oe/packages/base-files/base-files/openmn/issue.net
===================================================================
--- trunk/oe/packages/base-files/base-files/openmn/issue.net	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openmn/issue.net	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+M&N 5.4
+

Added: trunk/oe/packages/base-files/base-files/openmn/profile
===================================================================
--- trunk/oe/packages/base-files/base-files/openmn/profile	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openmn/profile	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,31 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+OPIEDIR=/opt/QtPalmtop
+QPEDIR=/opt/QtPalmtop
+QTDIR=/opt/QtPalmtop
+PATH="/opt/QtPalmtop/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"
+
+PS1='$ '
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+   PS1='# '
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+case "`cat /proc/sys/board/lcd_type`" in
+        2)      export QWS_DISPLAY=Transformed:Rot90 ;;
+        3)      export QWS_DISPLAY=Transformed:Rot270 ;;
+        *)      export QWS_DISPLAY=Transformed:Rot180 ;;
+esac
+alias ll="ls -lAF"
+
+export PATH PS1 OPIEDIR QPEDIR QTDIR
+
+umask 022

Added: trunk/oe/packages/base-files/base-files/openmn/usbd
===================================================================
--- trunk/oe/packages/base-files/base-files/openmn/usbd	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openmn/usbd	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1 @@
+usbdmodule=pxa_bi

Added: trunk/oe/packages/base-files/base-files/opensimpad/issue
===================================================================
--- trunk/oe/packages/base-files/base-files/opensimpad/issue	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/opensimpad/issue	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+OpenSIMpad Unofficial Snapshot Version \n \l
+

Added: trunk/oe/packages/base-files/base-files/opensimpad/issue.net
===================================================================
--- trunk/oe/packages/base-files/base-files/opensimpad/issue.net	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/opensimpad/issue.net	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+OpenSIMpad Unofficial Snapshot %h
+

Added: trunk/oe/packages/base-files/base-files/openzaurus/issue
===================================================================
--- trunk/oe/packages/base-files/base-files/openzaurus/issue	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openzaurus/issue	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+OpenZaurus Unofficial Snapshot Version \n \l
+

Added: trunk/oe/packages/base-files/base-files/openzaurus/issue.net
===================================================================
--- trunk/oe/packages/base-files/base-files/openzaurus/issue.net	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/openzaurus/issue.net	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2 @@
+OpenZaurus Unofficial Snapshot %h
+

Added: trunk/oe/packages/base-files/base-files/poodle/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/poodle/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/poodle/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,13 @@
+/dev/mtdblock2	/ 	jffs2	rw,noatime	1  1 
+/dev/mtdblock3	/home 	jffs2	defaults,noatime	1  2
+proc		/proc	proc	defaults	0  0
+/dev/hda1	/media/cf	auto	defaults,sync,noauto	0  0
+
+# SD/MMC in kernel 2.6
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto	0  0
+
+# SD/MMC in kernel 2.4
+/dev/mmcda1	/media/card	auto	defaults,sync,noauto	0  0
+
+tmpfs		/var		tmpfs	defaults	0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/poodle/usbd
===================================================================
--- trunk/oe/packages/base-files/base-files/poodle/usbd	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/poodle/usbd	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1 @@
+usbdmodule=pxa_bi

Added: trunk/oe/packages/base-files/base-files/profile
===================================================================
--- trunk/oe/packages/base-files/base-files/profile	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/profile	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,32 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+EDITOR="/bin/vi"	# needed for packages like cron
+TERM="vt100"		# Basic terminal capab. For screen etc.
+
+if [ ! -e /etc/localtime ]; then
+	TZ="UTC"		# Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html 
+				# for an explanation of how to set this to your local timezone.
+	export TZ
+fi
+
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+   PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
+
+umask 022
+

Added: trunk/oe/packages/base-files/base-files/share/dot.bashrc
===================================================================
--- trunk/oe/packages/base-files/base-files/share/dot.bashrc	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/share/dot.bashrc	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,16 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+
+export PS1='\h:\w\$ '
+umask 022
+
+# You may uncomment the following lines if you want `ls' to be colorized:
+# export LS_OPTIONS='--color=auto'
+# eval `dircolors`
+# alias ls='ls $LS_OPTIONS'
+# alias ll='ls $LS_OPTIONS -l'
+# alias l='ls $LS_OPTIONS -lA'
+#
+# Some more alias to avoid making mistakes:
+# alias rm='rm -i'
+# alias cp='cp -i'
+# alias mv='mv -i'

Added: trunk/oe/packages/base-files/base-files/share/dot.profile
===================================================================
--- trunk/oe/packages/base-files/base-files/share/dot.profile	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/share/dot.profile	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,10 @@
+# ~/.profile: executed by Bourne-compatible login shells.
+
+if [ -f ~/.bashrc ]; then
+  . ~/.bashrc
+fi
+
+# path set by /etc/profile
+# export PATH
+
+mesg n

Added: trunk/oe/packages/base-files/base-files/simpad/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/simpad/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/simpad/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+rootfs               /                    auto       defaults              1 1
+proc                 /proc                proc       defaults              0 0
+devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
+usbdevfs             /proc/bus/usb        usbdevfs   noauto                0 0
+tmpfs		     /var		  tmpfs	     defaults		   0 0
+tmpfs                /media/ram           tmpfs      defaults              0 0
+/dev/mtdblock/2	     /home		  jffs2	     defaults		   1 1
+/dev/hda1	     /media/cf		  auto	     noauto,owner	   0 0

Added: trunk/oe/packages/base-files/base-files/slugos/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/slugos/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/slugos/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+rootfs		/		jffs2	defaults	1  1
+proc            /proc		proc    defaults        0  0
+tmpfs		/var		tmpfs	defaults	0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0
+usbfs		/proc/bus/usb	usbfs	defaults	0  0

Added: trunk/oe/packages/base-files/base-files/spitz/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/spitz/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/spitz/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,28 @@
+# don't mount /dev/mtdblock2 since Spitz uses pivot_root
+# or 2.6 directly boots from the hdd
+# /dev/mtdblock2     /            jffs2   rw,noatime              1  1
+rootfs             /            auto    defaults                1  1
+proc               /proc        proc    defaults                0  0
+# we can use a normal var filesystem with a microdrive
+# tmpfs              /var         tmpfs   defaults                0  0
+tmpfs              /media/ram   tmpfs   defaults                0  0
+
+# Compact Flash memory cards
+/dev/hdc1       /media/cf       auto    defaults,sync,noauto    0  0
+# SD/MMC in kernel 2.4
+/dev/mmcda1     /media/card     auto    defaults,sync,noauto    0  0
+# SD/MMC in kernel 2.6
+/dev/mmcblk0p1  /media/card     auto    defaults,sync,noauto    0  0
+
+#
+# USB
+#
+/dev/sda1       /media/usbhdd   vfat            noauto,umask=000,noatime,iocharset=utf8,codepage=932    0  0
+devpts          /dev/pts        devpts          mode=0620,gid=5       0  0
+usbfs           /proc/bus/usb   usbfs           noauto                0  0
+
+#
+# Harddisk
+#
+/dev/hda2           /home           ext3	defaults    0  0
+/dev/hda3           /media/hdd      vfat	defaults    0  0

Added: trunk/oe/packages/base-files/base-files/tosa/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/tosa/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/tosa/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,12 @@
+/dev/mtdblock2	/ 	jffs2	rw,noatime	1  1 
+/dev/mtdblock3	/home 	jffs2	defaults,noatime	1  2
+proc		/proc	proc	defaults	0  0
+/dev/hda1	/media/cf	auto	defaults,sync,noauto	0  0
+
+tmpfs		/var		tmpfs   defaults        0  0
+tmpfs		/media/ram	tmpfs	defaults	0  0
+
+# SD/MMC in kernel 2.4
+/dev/mmcda1	/media/card	auto	defaults,sync,noauto	0  0
+# SD/MMC in kernel 2.6
+/dev/mmcblk0p1	/media/card	auto	defaults,sync,noauto	0  0

Added: trunk/oe/packages/base-files/base-files/tosa/usbd
===================================================================
--- trunk/oe/packages/base-files/base-files/tosa/usbd	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/tosa/usbd	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+# I know that this was created for usb-client stuff
+# but tosa/2.6 need (un)loading USB Host module
+# on suspend/resume and this way is simplest one ;)
+
+usbdmodule=ohci-hcd

Added: trunk/oe/packages/base-files/base-files/usbd
===================================================================

Added: trunk/oe/packages/base-files/base-files/wrt54/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/wrt54/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/wrt54/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,7 @@
+# /etc/fstab: static file system information. wrt
+#
+# <file system> <mount pt>     <type>     <options>         <dump> <pass>
+rootfs          /              auto       defaults          1      1
+tmpfs           /var           tmpfs      size=50%          0      0
+proc            /proc          proc       defaults          0      0
+devpts          /dev/pts       devpts     mode=0620,gid=5   0      0

Added: trunk/oe/packages/base-files/base-files/wrt54/profile
===================================================================
--- trunk/oe/packages/base-files/base-files/wrt54/profile	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/wrt54/profile	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,25 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+   PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+export PATH PS1
+
+umask 022
+
+alias ll="ls -lah"
\ No newline at end of file

Added: trunk/oe/packages/base-files/base-files/xxs1500/fstab
===================================================================
--- trunk/oe/packages/base-files/base-files/xxs1500/fstab	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files/xxs1500/fstab	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8 @@
+# /etc/fstab: static file system information.
+#
+# <file system> <mount pt>     <type>     <options>         <dump> <pass>
+rootfs          /              auto       defaults          1      1
+tmpfs           /var           tmpfs      size=10m          0      0
+proc            /proc          proc       defaults          0      0
+devpts          /dev/pts       devpts     mode=0620,gid=5   0      0
+usbdevfs        /proc/bus/usb  usbdevfs   noauto            0      0

Added: trunk/oe/packages/base-files/base-files_3.0.14.bb
===================================================================
--- trunk/oe/packages/base-files/base-files_3.0.14.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/base-files/base-files_3.0.14.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,159 @@
+DESCRIPTION = "Miscellaneous files for the base system."
+SECTION = "base"
+PRIORITY = "required"
+PR = "r56"
+LICENSE = "GPL"
+
+SRC_URI = " \
+           file://nsswitch.conf \
+           file://motd \
+           file://inputrc \
+           file://host.conf \
+           file://profile \
+           file://fstab \
+	   file://filesystems \
+           file://issue.net \
+           file://issue \
+           file://usbd \
+           file://share/dot.bashrc \
+           file://share/dot.profile \
+           file://licenses/BSD \
+           file://licenses/GPL-2 \
+           file://licenses/LGPL-2 \
+           file://licenses/LGPL-2.1 \
+           file://licenses/Artistic "
+S = "${WORKDIR}"
+
+docdir_append = "/${P}"
+dirs1777 = "/tmp ${localstatedir}/lock ${localstatedir}/tmp"
+dirs2775 = "/home ${prefix}/src ${localstatedir}/local"
+dirs755 = "/bin /boot /dev ${sysconfdir} ${sysconfdir}/default \
+	   ${sysconfdir}/skel /lib /mnt /proc /home/root /sbin \
+	   ${prefix} ${bindir} ${docdir} /usr/games ${includedir} \
+	   ${libdir} ${sbindir} ${datadir} \
+	   ${datadir}/common-licenses ${datadir}/dict ${infodir} \
+	   ${mandir} ${datadir}/misc ${localstatedir} \
+	   ${localstatedir}/backups ${localstatedir}/cache \
+	   ${localstatedir}/lib /sys ${localstatedir}/lib/misc \
+	   ${localstatedir}/lock/subsys ${localstatedir}/log \
+	   ${localstatedir}/run ${localstatedir}/spool \
+	   /mnt /media /media/card /media/cf /media/net /media/ram \
+	   /media/union /media/realroot /media/hdd \
+           /media/mmc1"
+conffiles = "${sysconfdir}/debian_version ${sysconfdir}/host.conf \
+	     ${sysconfdir}/inputrc ${sysconfdir}/issue /${sysconfdir}/issue.net \
+	     ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile \
+	     ${sysconfdir}/default"
+
+#
+# set standard hostname, might be a candidate for a DISTRO variable? :M:
+#
+hostname = "openembedded"
+hostname_slugos = "nslu2"
+hostname_mnci = "MNCI"
+hostname_rt3000 = "MNRT"
+hostname_jlime = "JLime"
+
+do_install () {
+	for d in ${dirs755}; do
+		install -m 0755 -d ${D}$d
+	done
+	for d in ${dirs1777}; do
+		install -m 1777 -d ${D}$d
+	done
+	for d in ${dirs2775}; do
+		install -m 2755 -d ${D}$d
+	done
+	for d in card cf net ram; do
+		ln -sf /media/$d ${D}/mnt/$d
+	done
+
+	if [ -n "${MACHINE}" -a "${hostname}" = "openembedded" ]; then
+		echo ${MACHINE} > ${D}${sysconfdir}/hostname
+	else
+		echo ${hostname} > ${D}${sysconfdir}/hostname
+	fi
+
+        if [ -n "${DISTRO_NAME}" ]; then
+		echo -n "${DISTRO_NAME} " > ${D}${sysconfdir}/issue
+		echo -n "${DISTRO_NAME} " > ${D}${sysconfdir}/issue.net
+		if [ -n "${DISTRO_VERSION}" ]; then
+			echo -n "${DISTRO_VERSION} " >> ${D}${sysconfdir}/issue
+			echo -n "${DISTRO_VERSION} " >> ${D}${sysconfdir}/issue.net
+		fi
+		echo "\n \l" >> ${D}${sysconfdir}/issue
+		echo >> ${D}${sysconfdir}/issue
+		echo "%h"    >> ${D}${sysconfdir}/issue.net
+		echo >> ${D}${sysconfdir}/issue.net
+	else
+ 	       install -m 0644 ${WORKDIR}/issue ${D}${sysconfdir}/issue
+ 	       install -m 0644 ${WORKDIR}/issue.net ${D}${sysconfdir}/issue.net
+ 	fi
+
+	install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab
+	install -m 0644 ${WORKDIR}/filesystems ${D}${sysconfdir}/filesystems
+	install -m 0644 ${WORKDIR}/usbd ${D}${sysconfdir}/default/usbd
+	install -m 0644 ${WORKDIR}/profile ${D}${sysconfdir}/profile
+	install -m 0755 ${WORKDIR}/share/dot.profile ${D}${sysconfdir}/skel/.profile
+	install -m 0755 ${WORKDIR}/share/dot.bashrc ${D}${sysconfdir}/skel/.bashrc
+	install -m 0644 ${WORKDIR}/inputrc ${D}${sysconfdir}/inputrc
+	install -m 0644 ${WORKDIR}/nsswitch.conf ${D}${sysconfdir}/nsswitch.conf
+	install -m 0644 ${WORKDIR}/host.conf ${D}${sysconfdir}/host.conf
+	install -m 0644 ${WORKDIR}/motd ${D}${sysconfdir}/motd
+
+	for license in BSD GPL-2 LGPL-2 LGPL-2.1 Artistic; do
+		install -m 0644 ${WORKDIR}/licenses/$license ${D}${datadir}/common-licenses/
+	done
+
+	ln -sf /proc/mounts ${D}${sysconfdir}/mtab
+}
+
+
+do_install_append_mnci () {
+	rmdir ${D}/tmp
+	mkdir -p ${D}${localstatedir}/tmp
+	ln -s var/tmp ${D}/tmp
+}
+
+do_install_append_nylon() {
+	printf "" "" >${D}${sysconfdir}/resolv.conf
+	rm -r ${D}/mnt/*
+	rm -r ${D}/media
+	rm -rf ${D}/tmp
+	ln -sf /var/tmp ${D}/tmp
+}
+
+do_install_append_slugos() {
+	printf "" "" >${D}${sysconfdir}/resolv.conf
+	rm -r ${D}/mnt/*
+	rmdir ${D}/home/root
+	install -m 0755 -d ${D}/root
+	ln -s ../root ${D}/home/root
+}
+
+do_install_append_netbook-pro () {
+	mkdir -p ${D}/initrd
+}
+
+PACKAGES = "${PN}-doc ${PN}"
+FILES_${PN} = "/"
+FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
+
+# M&N specific packaging
+PACKAGE_ARCH_mnci = "mnci"
+PACKAGE_ARCH_rt3000 = "rt3000"
+
+# Unslung distribution specific packaging
+
+PACKAGES_unslung = "${PN}-unslung"
+PACKAGE_ARCH_${PN}-unslung = "nslu2"
+MAINTAINER_${PN}-unslung = "NSLU2 Linux <www.nslu2-linux.org>"
+RDEPENDS_${PN}-unslung = "nslu2-linksys-ramdisk"
+RPROVIDES_${PN}-unslung = "${PN}"
+
+FILES_${PN}-unslung = ""
+
+CONFFILES_${PN} = "${sysconfdir}/fstab ${sysconfdir}/hostname"
+CONFFILES_${PN}_nylon = "${sysconfdir}/resolv.conf ${sysconfdir}/fstab ${sysconfdir}/hostname"
+CONFFILES_${PN}_slugos = "${sysconfdir}/resolv.conf ${sysconfdir}/fstab ${sysconfdir}/hostname"
+

Added: trunk/oe/packages/images/openmoko-devel-image.bb
===================================================================
--- trunk/oe/packages/images/openmoko-devel-image.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/images/openmoko-devel-image.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+require openmoko-image.bb
+
+export IPKG_INSTALL += "\
+  task-openmoko-devel \
+"

Added: trunk/oe/packages/images/openmoko-image.bb
===================================================================
--- trunk/oe/packages/images/openmoko-image.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/images/openmoko-image.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,26 @@
+#------------------------------------------------------
+# OpenMoko Image Recipe
+#------------------------------------------------------
+
+export IMAGE_BASENAME = "${PN}"
+export IMAGE_LINGUAS = ""
+
+export IPKG_INSTALL = "\
+  ${MACHINE_TASK_PROVIDER} \
+  task-openmoko-core \
+  task-openmoko-net \
+  task-openmoko-ui \
+  task-openmoko-base \
+  task-openmoko-finger \
+  task-openmoko-pim \
+"
+DEPENDS = "\
+  ${MACHINE_TASK_PROVIDER} \
+  task-openmoko \
+"
+
+RDEPENDS = "${IPKG_INSTALL}"
+
+inherit image_ipk
+
+LICENSE = MIT

Added: trunk/oe/packages/initscripts/initscripts-1.0/akita/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/akita/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/akita/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/input
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /dev/sharp_ts /dev/ts
+        ln -sf /dev/sharp_fl /dev/fl
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/akita/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/arm/alignment.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/arm/alignment.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/arm/alignment.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -e /proc/cpu/alignment ]; then
+   echo "3" > /proc/cpu/alignment
+fi
+

Added: trunk/oe/packages/initscripts/initscripts-1.0/armzone-qt2410/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/armzone-qt2410/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/armzone-qt2410/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# GTA01 hack. Need to write a proper udev-rule
+# instead (for the S3C2410 serial controller)
+mknod -m 660 /dev/ttyS0 c 4 64
+
+# exit without doing anything if udev is active
+if test -e /dev/.udev -o -e /dev/.udevdb; then
+	exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/input
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/armzone-qt2410/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/banner
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/banner	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/banner	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+if [ ! -e /dev/tty ]; then
+    /bin/mknod -m 0666 /dev/tty c 5 0
+fi
+
+if ( > /dev/tty0 ) 2>/dev/null; then
+    vtmaster=/dev/tty0
+elif ( > /dev/vc/0 ) 2>/dev/null; then
+    vtmaster=/dev/vc/0
+else
+    vtmaster=/dev/null
+fi
+echo > $vtmaster
+echo "Please wait: booting..." > $vtmaster

Added: trunk/oe/packages/initscripts/initscripts-1.0/bootmisc.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/bootmisc.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/bootmisc.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,71 @@
+#
+# bootmisc.sh	Miscellaneous things to be done during bootup.
+#
+
+. /etc/default/rcS
+#
+# Put a nologin file in /etc to prevent people from logging in before
+# system startup is complete.
+#
+if test "$DELAYLOGIN" = yes
+then
+  echo "System bootup in progress - please wait" > /etc/nologin
+  cp /etc/nologin /etc/nologin.boot
+fi
+
+#
+# Set pseudo-terminal access permissions.
+#
+if ( ! grep -q devfs /proc/mounts ) && test -c /dev/ttyp0
+then
+	chmod 666 /dev/tty[p-za-e][0-9a-f]
+	chown root:tty /dev/tty[p-za-e][0-9a-f]
+fi
+
+#
+# Apply /proc settings if defined
+#
+SYSCTL_CONF="/etc/sysctl.conf"
+if [ -f "${SYSCTL_CONF}" ]
+then
+	if [ -x "/sbin/sysctl" ]
+	then
+		/sbin/sysctl -p "${SYSCTL_CONF}"
+	else
+		echo "To have ${SYSCTL_CONF} applied during boot, install package <procps>."
+	fi
+fi
+
+#
+# Update /etc/motd.
+#
+if test "$EDITMOTD" != no
+then
+	uname -a > /etc/motd.tmp
+	sed 1d /etc/motd >> /etc/motd.tmp
+	mv /etc/motd.tmp /etc/motd
+fi
+
+#
+# This is as good a place as any for a sanity check
+# /tmp should be a symlink to /var/tmp to cut down on the number
+# of mounted ramdisks.
+if test ! -L /tmp && test -d /var/tmp
+then
+	rm -rf /tmp
+	ln -sf /var/tmp /tmp
+fi
+
+#
+# Update dynamic library cache
+#
+/sbin/ldconfig
+
+# 
+# Recover the time, if there is a time file                 
+#
+if test -e /etc/timestamp
+then
+	date -s `cat /etc/timestamp`
+fi
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/bootmisc.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/c7x0/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/c7x0/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/c7x0/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/input
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /dev/sharp_ts /dev/ts
+        ln -sf /dev/sharp_fl /dev/fl
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/c7x0/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/checkfs.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/checkfs.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/checkfs.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,46 @@
+#
+# checkfs.sh	Check all filesystems.
+#
+# Version:	@(#)checkfs  2.83  05-Oct-2001  miquels at cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+# Check the rest of the filesystems.
+#
+if test ! -f /fastboot
+then
+    if test -f /forcefsck
+    then
+        force="-f"
+    else
+        force=""
+    fi
+    if test "$FSCKFIX"  = yes
+    then
+	fix="-y"
+    else
+	fix="-a"
+    fi
+    spinner="-C"
+    case "$TERM" in
+	dumb|network|unknown|"") spinner="" ;;
+    esac
+    test "`uname -m`" = "s390" && spinner="" # This should go away
+    test "$VERBOSE" != no && echo "Checking all filesystems..."
+    fsck $spinner -R -A $fix $force
+    if test "$?" -gt 1
+    then
+      echo
+      echo "fsck failed.  Please repair manually."
+      echo
+      echo "CONTROL-D will exit from this shell and continue system startup."
+      echo
+      # Start a single user shell on the console
+      /sbin/sulogin $CONSOLE
+    fi
+fi
+rm -f /fastboot /forcefsck
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/checkfs.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/checkroot.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/checkroot.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/checkroot.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,170 @@
+#
+# checkroot.sh	Check to root filesystem.
+#
+# Version:	@(#)checkroot.sh  2.84  25-Jan-2002  miquels at cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
+# from this script *before anything else* with a timeout, like SCO does.
+#
+test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE
+
+#
+# Ensure that bdflush (update) is running before any major I/O is
+# performed (the following fsck is a good example of such activity :).
+#
+test -x /sbin/update && update
+
+#
+# Read /etc/fstab.
+#
+exec 9>&0 </etc/fstab
+rootmode=rw
+rootopts=rw
+rootcheck=no
+swap_on_md=no
+devfs=
+while read fs mnt type opts dump pass junk
+do
+	case "$fs" in
+		""|\#*)
+			continue;
+			;;
+		/dev/md*)
+			# Swap on md device.
+			test "$type" = swap && swap_on_md=yes
+			;;
+		/dev/*)
+			;;
+		*)
+			# Might be a swapfile.
+			test "$type" = swap && swap_on_md=yes
+			;;
+	esac
+	test "$type" = devfs && devfs="$fs"
+	test "$mnt" != / && continue
+	rootopts="$opts"
+	test "$pass" = 0 -o "$pass" = "" && rootcheck=no
+	case "$opts" in
+		ro|ro,*|*,ro|*,ro,*)
+			rootmode=ro
+			;;
+	esac
+done
+exec 0>&9 9>&-
+
+#
+# Activate the swap device(s) in /etc/fstab. This needs to be done
+# before fsck, since fsck can be quite memory-hungry.
+#
+doswap=no
+test -d /proc/1 || mount -n /proc
+case "`uname -r`" in
+	2.[0123].*)
+		if test $swap_on_md = yes && grep -qs resync /proc/mdstat
+		then
+			test "$VERBOSE" != no && echo "Not activating swap - RAID array resyncing"
+		else
+			doswap=yes
+		fi
+		;;
+	*)
+		doswap=yes
+		;;
+esac
+if test $doswap = yes
+then
+	test "$VERBOSE" != no && echo "Activating swap"
+	swapon -a 2> /dev/null
+fi
+
+#
+# Check the root filesystem.
+#
+if test -f /fastboot || test $rootcheck = no
+then
+  test $rootcheck = yes && echo "Fast boot, no filesystem check"
+else
+  #
+  # Ensure that root is quiescent and read-only before fsck'ing.
+  #
+  mount -n -o remount,ro /
+  if test $? = 0
+  then
+    if test -f /forcefsck
+    then
+	force="-f"
+    else
+	force=""
+    fi
+    if test "$FSCKFIX" = yes
+    then
+	fix="-y"
+    else
+	fix="-a"
+    fi
+    spinner="-C"
+    case "$TERM" in
+        dumb|network|unknown|"") spinner="" ;;
+    esac
+    test `uname -m` = s390 && spinner="" # This should go away
+    test "$VERBOSE" != no && echo "Checking root filesystem..."
+    fsck $spinner $force $fix /
+    #
+    # If there was a failure, drop into single-user mode.
+    #
+    # NOTE: "failure" is defined as exiting with a return code of
+    # 2 or larger.  A return code of 1 indicates that filesystem
+    # errors were corrected but that the boot may proceed.
+    #
+    if test "$?" -gt 1
+    then
+      # Surprise! Re-directing from a HERE document (as in
+      # "cat << EOF") won't work, because the root is read-only.
+      echo
+      echo "fsck failed.  Please repair manually and reboot.  Please note"
+      echo "that the root filesystem is currently mounted read-only.  To"
+      echo "remount it read-write:"
+      echo
+      echo "   # mount -n -o remount,rw /"
+      echo
+      echo "CONTROL-D will exit from this shell and REBOOT the system."
+      echo
+      # Start a single user shell on the console
+      /sbin/sulogin $CONSOLE
+      reboot -f
+    fi
+  else
+    echo "*** ERROR!  Cannot fsck root fs because it is not mounted read-only!"
+    echo
+  fi
+fi
+
+#
+#	If the root filesystem was not marked as read-only in /etc/fstab,
+#	remount the rootfs rw but do not try to change mtab because it
+#	is on a ro fs until the remount succeeded. Then clean up old mtabs
+#	and finally write the new mtab.
+#	This part is only needed if the rootfs was mounted ro.
+#
+if [ $(grep rootfs /proc/mounts | awk '{print $4}') = rw ]; then
+	exit 0
+fi
+echo "Remounting root file system..."
+mount -n -o remount,$rootmode /
+if test "$rootmode" = rw
+then
+	if test ! -L /etc/mtab
+	then
+		rm -f /etc/mtab~ /etc/nologin
+		: > /etc/mtab
+	fi
+	mount -f -o remount /
+	mount -f /proc
+	test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
+fi
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/checkroot.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/collie/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/collie/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/collie/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /dev/sharp_ts /dev/ts
+	ln -sf /dev/sharp_fl /dev/fl
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/collie/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/device_table.txt
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/device_table.txt	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/device_table.txt	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,179 @@
+#/dev/		d	775	0	0	-	-	-	-	-
+#/dev/msys	d	775	0	0	-	-	-	-	-
+#/dev/pts	d	775	0	0	-	-	-	-	-
+#/var		d	775	0	0	-	-	-	-	-
+/boot/var/empty	d	755	0	3	-	-	-	-
+/dev/apm_bios	c	660	0	46	10	134	-	-	-
+/dev/audio	c	660	0	29	14	4	-	-	-
+/dev/audio1	c	660	0	29	14	20	-	-	-
+/dev/audio2	c	660	0	29	14	36	-	-	-
+/dev/audio3	c	660	0	29	14	52	-	-	-
+/dev/bty	c	644	0	0	60	0	0	1	5
+/dev/sharp_fl	c	640	0	44	254	0	-	-	-
+/dev/console	c	660	0	5	5	1	-	-
+/dev/cusa0	c	640	0	0	205	5	-	-	-
+/dev/cusa1	c	640	0	0	205	6	-	-	-
+/dev/cusa2	c	640	0	0	205	7	-	-	-
+/dev/dsp	c	660	0	29	14	3	-	-	-
+/dev/dsp1	c	660	0	29	14	19	-	-	-
+/dev/dsp2	c	660	0	29	14	35	-	-	-
+/dev/dsp3	c	660	0	29	14	51	-	-	-
+/dev/fb		c	660	0	44	29	0	0	32	2
+/dev/fb0autodetect	c	660	0	44	29	1	-	-	-
+/dev/fb0current	c	660	0	44	29	0	-	-	-
+#/dev/fb1	c	660	0	44	29	32	-	-	-
+/dev/fb1autodetect	c	660	0	44	29	33	-	-	-
+/dev/fb1current	c	660	0	44	29	32	-	-	-
+/dev/full	c	666	0	7	-	-	-
+/dev/hda	b	660	0	6	3	0	-	-	-
+/dev/hda	b	660	0	6	3	1	1	1	20
+/dev/hdb	b	660	0	6	3	64	-	-	-
+/dev/hdb	b	660	0	6	3	65	1	1	20
+/dev/hdc	b	660	0	6	22	0	-	-	-
+/dev/hdc	b	660	0	6	22	1	1	1	20
+/dev/initctl	p	600	0	0	-	-	-	-
+/dev/i2c0	c	660	0	0	89	0	-	-	-
+/dev/inportbm	c	660	0	0	10	2	-	-	-
+/dev/input/event c	660	0	0	13	64	0	1       20
+/dev/ircomm0	c	640	0	0	161	0	-	-	-
+/dev/jbm	c	660	0	0	10	4	-	-	-
+/dev/kmem	c	640	0	15	1	2	-	-	-
+/dev/lirc	c	660	0	5	61	0	-	-	-
+/dev/logibm	c	660	0	0	10	0	-	-	-
+/dev/loop0	b	660	0	11	7	0	-	-	-
+/dev/loop1	b	660	0	11	7	1	-	-	-
+/dev/mem	c	640	0	15	1	1	-	-	-
+/dev/mixer	c	666	0	0	14	0	-	-	-
+/dev/mixer1	c	666	0	0	14	16	-	-	-
+/dev/mixer2	c	666	0	0	14	32	-	-	-
+/dev/mixer3	c	666	0	0	14	48	-	-	-
+/dev/mmcda	b	640	0	0	60	0	-	-	-
+/dev/mmcda1	b	640	0	0	60	1	-	-	-
+/dev/mmcda2	b	640	0	0	60	2	-	-	-
+/dev/msys/fla	b	660	0	11	100	0	-	-	-
+/dev/msys/fla1	b	660	0	11	100	1	-	-	-
+/dev/msys/fla2	b	660	0	11	100	2	-	-	-
+/dev/msys/fla3	b	660	0	11	100	3	-	-	-
+/dev/msys/fla4	b	660	0	11	100	4	-	-	-
+/dev/msys/flb	b	660	0	11	100	64	-	-	-
+/dev/msys/flb1	b	660	0	11	100	65	-	-	-
+/dev/msys/flb2	b	660	0	11	100	66	-	-	-
+/dev/msys/flb3	b	660	0	11	100	67	-	-	-
+/dev/msys/flb4	b	660	0	11	100	68	-	-	-
+/dev/mtd	c	660	0	6	90	0	0	2	8
+/dev/mtdblock	b	640	0	0	31	0	0	1	8
+/dev/nst0	c	664	0	11	9	128	-	-	-
+/dev/nst0a	c	664	0	11	9	224	-	-	-
+/dev/nst0l	c	664	0	11	9	160	-	-	-
+/dev/nst0m	c	664	0	11	9	192	-	-	-
+/dev/nst1	c	664	0	11	9	129	-	-	-
+/dev/nst1a	c	664	0	11	9	225	-	-	-
+/dev/nst1l	c	664	0	11	9	161	-	-	-
+/dev/nst1m	c	664	0	11	9	193	-	-	-
+/dev/null	c	666	0	0	1	3	-	-	-
+/dev/par0	c	660	0	7	6	0	-	-	-
+/dev/par1	c	660	0	7	6	1	-	-	-
+/dev/par2	c	660	0	7	6	2	-	-	-
+/dev/port	c	640	0	15	1	4	-	-	-
+/dev/ppp	c	640	0	0	108	0	-	-	-
+/dev/psaux	c	660	0	0	10	1	-	-	-
+/dev/ptmx	c	666	0	5	5	2	-	-	-
+/dev/ptya0	c	660	0	5	2	176	-	-	-
+/dev/ptya1	c	660	0	5	2	177	-	-	-
+/dev/ptya2	c	660	0	5	2	178	-	-	-
+/dev/ptya3	c	660	0	5	2	179	-	-	-
+/dev/ptya4	c	660	0	5	2	180	-	-	-
+/dev/ptya5	c	660	0	5	2	181	-	-	-
+/dev/ptya6	c	660	0	5	2	182	-	-	-
+/dev/ptya7	c	660	0	5	2	183	-	-	-
+/dev/ptya8	c	660	0	5	2	184	-	-	-
+/dev/ptya9	c	660	0	5	2	185	-	-	-
+/dev/ptyaa	c	660	0	5	2	186	-	-	-
+/dev/ptyab	c	660	0	5	2	187	-	-	-
+/dev/ptyac	c	660	0	5	2	188	-	-	-
+/dev/ptyad	c	660	0	5	2	189	-	-	-
+/dev/ptyae	c	660	0	5	2	190	-	-	-
+/dev/ptyaf	c	660	0	5	2	191	-	-	-
+/dev/ram	b	640	0	0	1	0	0	1	4
+/dev/random	c	444	0	0	1	8	-	-	-
+/dev/rfcomm0	c	660	0	0	216	0	-	-	-
+/dev/rfcomm1	c	660	0	0	216	1	-	-	-
+/dev/rfcomm2	c	660	0	0	216	2	-	-	-
+/dev/rfcomm3	c	660	0	0	216	3	-	-	-
+/dev/rfcomm4	c	660	0	0	216	4	-	-	-
+/dev/rfcomm5	c	660	0	0	216	5	-	-	-
+/dev/rfcomm6	c	660	0	0	216	6	-	-	-
+/dev/rfcomm7	c	660	0	0	216	7	-	-	-
+/dev/rfcomm8	c	660	0	0	216	8	-	-	-
+/dev/rfcomm9	c	660	0	0	216	9	-	-	-
+/dev/rfcomm10	c	660	0	0	216	10	-	-	-
+/dev/rfcomm11	c	660	0	0	216	11	-	-	-
+/dev/rfcomm12	c	660	0	0	216	12	-	-	-
+/dev/rfcomm13	c	660	0	0	216	13	-	-	-
+/dev/rfcomm14	c	660	0	0	216	14	-	-	-
+/dev/rfcomm15	c	660	0	0	216	15	-	-	-
+/dev/rmidi0	c	660	0	0	35	64	-	-	-
+/dev/rmidi1	c	660	0	0	35	65	-	-	-
+/dev/rmidi2	c	660	0	0	35	66	-	-	-
+/dev/rmidi3	c	660	0	0	35	67	-	-	-
+/dev/rtc	c	660	0	47	10	135	-	-	-
+/dev/scd0	b	660	0	6	11	0	-	-	-
+/dev/scd1	b	660	0	6	11	1	-	-	-
+/dev/sda	b	660	0	6	8	0	-	-	-
+/dev/sda1	b	660	0	6	8	1	-	-	-
+/dev/sda2	b	660	0	6	8	2	-	-	-
+/dev/sda3	b	660	0	6	8	3	-	-	-
+/dev/sda4	b	660	0	6	8	4	-	-	-
+/dev/sda5	b	660	0	6	8	5	-	-	-
+/dev/sda6	b	660	0	6	8	6	-	-	-
+/dev/sda7	b	660	0	6	8	7	-	-	-
+/dev/sda8	b	660	0	6	8	8	-	-	-
+/dev/sda9	b	660	0	6	8	9	-	-	-
+/dev/sdb	b	660	0	6	8	16	-	-	-
+/dev/sdb1	b	660	0	6	8	17	-	-	-
+/dev/sdb2	b	660	0	6	8	18	-	-	-
+/dev/sdb3	b	660	0	6	8	19	-	-	-
+/dev/sdb4	b	660	0	6	8	20	-	-	-
+/dev/sdb5	b	660	0	6	8	21	-	-	-
+/dev/sdb6	b	660	0	6	8	22	-	-	-
+/dev/sdb7	b	660	0	6	8	23	-	-	-
+/dev/sdb8	b	660	0	6	8	24	-	-	-
+/dev/sdb9	b	660	0	6	8	25	-	-	-
+/dev/sdc	b	660	0	6	8	32	-	-	-
+/dev/sdc1	b	660	0	6	8	33	-	-	-
+/dev/sdc2	b	660	0	6	8	34	-	-	-
+/dev/sdc3	b	660	0	6	8	35	-	-	-
+/dev/sdc4	b	660	0	6	8	36	-	-	-
+/dev/sdc5	b	660	0	6	8	37	-	-	-
+/dev/sdc6	b	660	0	6	8	38	-	-	-
+/dev/sdc7	b	660	0	6	8	39	-	-	-
+/dev/sdc8	b	660	0	6	8	40	-	-	-
+/dev/sdc9	b	660	0	6	8	41	-	-	-
+/dev/sd_slotstat	c	660	0	6	10	240	-	-	-
+/dev/sharp_audioctl	c	660	0	29	10	213	-	-	-
+/dev/sharp_buz	c	660	0	29	10	211	-	-	-
+/dev/sharp_kbdctl	c	660	0	45	10	214	-	-	-
+/dev/sharp_led	c	660	0	48	10	210	-	-	-
+/dev/sharp_ts	c	640	0	45	11	0	-	-	-
+/dev/smtpe0	c	640	0	0	35	128	-	-	-
+/dev/smtpe1	c	640	0	0	35	129	-	-	-
+/dev/smtpe2	c	640	0	0	35	130	-	-	-
+/dev/smtpe3	c	640	0	0	35	131	-	-	-
+/dev/sndstat	c	660	0	29	14	6	-	-	-
+/dev/st0	c	660	0	11	9	0	-	-	-
+/dev/st0a	c	660	0	11	9	96	-	-	-
+/dev/st0l	c	660	0	11	9	32	-	-	-
+/dev/st0m	c	660	0	11	9	64	-	-	-
+/dev/st1	c	660	0	11	9	1	-	-	-
+/dev/st1a	c	660	0	11	9	97	-	-	-
+/dev/st1l	c	660	0	11	9	33	-	-	-
+/dev/st1m	c	660	0	11	9	65	-	-	-
+/dev/tty	c	664	0	5	5	0	-	-	-
+/dev/tty	c	666	0	5	4	0	0	1	9
+/dev/ttyS	c	640	0	5	4	64	0	1	4
+/dev/ttySA	c	640	0	5	204	5	0	1	4
+/dev/ttyUSB	c	660	0	5	188	0	0	1	2
+/dev/urandom	c	644	0	0	1	9	-	-	-
+/dev/usbmouse	c	640	0	45	10	32	-	-	-
+/dev/zero	c	644	0	0	1	5	-	-	-
+/dev/input/mice	c	660	0	0	13	63	-	-	-

Added: trunk/oe/packages/initscripts/initscripts-1.0/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udev -o -e /dev/.udevdb; then
+	exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/input
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/devpts
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/devpts	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/devpts	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+# GID of the `tty' group
+TTYGRP=5
+ 
+# Set to 600 to have `mesg n' be the default
+TTYMODE=620

Added: trunk/oe/packages/initscripts/initscripts-1.0/devpts.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/devpts.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/devpts.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,28 @@
+#! /bin/sh
+
+. /etc/default/devpts
+
+test "`uname -s`" = "Linux" || exit 0
+
+#
+#	First find out if devpts is available. Also check if devfs
+#	is already mounted - in that case we don't want to use devpts.
+#
+if test ! -e /dev/.devfsd && ( grep -q devpts /proc/filesystems )
+then
+	#
+	#	Create multiplexor device.
+	#
+	test -c /dev/ptmx || mknod -m 666 /dev/ptmx c 5 2
+
+	#
+	#	Mount /dev/pts if needed.
+	#
+	if ( ! grep -q devpts /proc/mounts )
+	then
+		mkdir -p /dev/pts
+		mount -t devpts devpts /dev/pts -ogid=${TTYGRP},mode=${TTYMODE}
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/devpts.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/finish
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/finish	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/finish	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if ! test -e /etc/.configured; then
+	> /etc/.configured
+fi
+


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/finish
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/h3600/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/h3600/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/h3600/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+    test -n "$VERBOSE" && echo -n "Setting up device links for devfs: "
+    (
+    ln -s /dev/vc/0 /dev/tty0
+    ln -s /dev/vc/1 /dev/tty1
+    ln -s /dev/vc/2 /dev/tty2
+    ln -s /dev/vc/3 /dev/tty3
+    ln -s /dev/vc/4 /dev/tty4
+    ln -s /dev/vc/5 /dev/tty5
+    ln -s /dev/fb/0 /dev/fb0
+    # ln -s /dev/tts/0 /dev/ttySA0
+    # ln -s /dev/tts/1 /dev/ttySA1
+    # ln -s /dev/tts/2 /dev/ttySA2
+
+    ln -s /dev/sound/dsp /dev/dsp
+    ln -s /dev/sound/mixer /dev/mixer
+
+    ln -s /dev/v4l/video0 /dev/video0
+    ln -s /dev/v4l/video0 /dev/video
+    ln -s /dev/misc/rtc /dev/rtc
+    ln -s /dev/misc/apm_bios /dev/apm_bios
+
+    ## need this so that ppp will autoload the ppp modules
+    mknod /dev/ppp c 108 0
+    )  > /dev/null 2>&1
+
+
+    test -n "$VERBOSE" && echo "done"


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/h3600/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/h3900/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/h3900/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/h3900/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+    test -n "$VERBOSE" && echo -n "Setting up device links for devfs: "
+    (
+    ln -s /dev/vc/0 /dev/tty0
+    ln -s /dev/vc/1 /dev/tty1
+    ln -s /dev/vc/2 /dev/tty2
+    ln -s /dev/vc/3 /dev/tty3
+    ln -s /dev/vc/4 /dev/tty4
+    ln -s /dev/vc/5 /dev/tty5
+    ln -s /dev/fb/0 /dev/fb0
+    # ln -s /dev/tts/0 /dev/ttySA0
+    # ln -s /dev/tts/1 /dev/ttySA1
+    # ln -s /dev/tts/2 /dev/ttySA2
+
+    ln -s /dev/sound/dsp /dev/dsp
+    ln -s /dev/sound/mixer /dev/mixer
+
+    ln -s /dev/v4l/video0 /dev/video0
+    ln -s /dev/v4l/video0 /dev/video
+    ln -s /dev/misc/rtc /dev/rtc
+    ln -s /dev/misc/apm_bios /dev/apm_bios
+
+    ## need this so that ppp will autoload the ppp modules
+    mknod /dev/ppp c 108 0
+    )  > /dev/null 2>&1
+
+
+    test -n "$VERBOSE" && echo "done"


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/h3900/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/halt
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/halt	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/halt	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,25 @@
+#! /bin/sh
+#
+# halt		Execute the halt command.
+#
+# Version:      @(#)halt  2.84-2  07-Jan-2002  miquels at cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# See if we need to cut the power.
+if test -x /etc/init.d/ups-monitor
+then
+	/etc/init.d/ups-monitor poweroff
+fi
+
+# Don't shut down drives if we're using RAID.
+hddown="-h"
+if grep -qs '^md.*active' /proc/mdstat
+then
+	hddown=""
+fi
+
+halt -d -f -i -p $hddown
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/halt
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/hostname.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/hostname.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/hostname.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,11 @@
+#
+# hostname.sh	Set hostname.
+#
+# Version:	@(#)hostname.sh  1.10  26-Feb-2001  miquels at cistron.nl
+#
+
+if test -f /etc/hostname
+then
+	hostname -F /etc/hostname
+fi
+


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/hostname.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/jornada56x/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/jornada56x/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/jornada56x/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+    test -n "$VERBOSE" && echo -n "Setting up device links for devfs: "
+    (
+    ln -s /dev/vc/0 /dev/tty0
+    ln -s /dev/vc/1 /dev/tty1
+    ln -s /dev/vc/2 /dev/tty2
+    ln -s /dev/vc/3 /dev/tty3
+    ln -s /dev/vc/4 /dev/tty4
+    ln -s /dev/vc/5 /dev/tty5
+    ln -s /dev/fb/0 /dev/fb0
+    # ln -s /dev/tts/0 /dev/ttySA0
+    # ln -s /dev/tts/1 /dev/ttySA1
+    # ln -s /dev/tts/2 /dev/ttySA2
+
+    ln -s /dev/sound/dsp /dev/dsp
+    ln -s /dev/sound/mixer /dev/mixer
+
+    ln -s /dev/v4l/video0 /dev/video0
+    ln -s /dev/v4l/video0 /dev/video
+    ln -s /dev/misc/rtc /dev/rtc
+    ln -s /dev/misc/apm_bios /dev/apm_bios
+
+    ## need this so that ppp will autoload the ppp modules
+    mknod /dev/ppp c 108 0
+    )  > /dev/null 2>&1
+
+
+    test -n "$VERBOSE" && echo "done"


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/jornada56x/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/jornada6xx/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/jornada6xx/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/jornada6xx/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+	exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+        
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/input
+        mknod /dev/input/ts0 c 13 128
+	mknod /dev/ttySC1 c 9 204
+	mknod /dev/irda0  c 10 204
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0

Added: trunk/oe/packages/initscripts/initscripts-1.0/jornada7xx/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/jornada7xx/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/jornada7xx/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+	exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+        
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/input
+        mknod /dev/input/ts0 c 13 65
+	mknod /dev/ttySC1 c 9 204
+	mknod /dev/irda0  c 10 204
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/jornada7xx/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/mountall.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/mountall.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/mountall.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,45 @@
+#
+# mountall.sh	Mount all filesystems.
+#
+# Version:	@(#)mountall.sh  2.83-2  01-Nov-2001  miquels at cistron.nl
+#
+. /etc/default/rcS
+
+#
+# Mount local filesystems in /etc/fstab. For some reason, people
+# might want to mount "proc" several times, and mount -v complains
+# about this. So we mount "proc" filesystems without -v.
+#
+test "$VERBOSE" != no && echo "Mounting local filesystems..."
+mount -at nonfs,nosmbfs,noncpfs 2>/dev/null
+
+#
+# We might have mounted something over /dev, see if /dev/initctl is there.
+#
+if test ! -p /dev/initctl
+then
+	rm -f /dev/initctl
+	mknod -m 600 /dev/initctl p
+fi
+kill -USR1 1
+
+#
+# Execute swapon command again, in case we want to swap to
+# a file on a now mounted filesystem.
+#
+doswap=yes
+case "`uname -r`" in
+	2.[0123].*)
+		if grep -qs resync /proc/mdstat
+		then
+			doswap=no
+		fi
+		;;
+esac
+if test $doswap = yes
+then
+	swapon -a 2> /dev/null
+fi
+
+: exit 0
+


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/mountall.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/mountnfs.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/mountnfs.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/mountnfs.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,87 @@
+#
+# mountnfs.sh	Now that TCP/IP is configured, mount the NFS file
+#		systems in /etc/fstab if needed. If possible,
+#		start the portmapper before mounting (this is needed for
+#		Linux 2.1.x and up).
+#
+#		Also mounts SBM filesystems now, so the name of
+#		this script is getting increasingly inaccurate.
+#
+# Version:	@(#)mountnfs.sh  2.83  05-Oct-2001  miquels at cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+#	Run in a subshell because of I/O redirection.
+#
+test -f /etc/fstab && (
+
+#
+#	Read through fstab line by line. If it is NFS, set the flag
+#	for mounting NFS filesystems. If any NFS partition is found and it
+#	not mounted with the nolock option, we start the portmapper.
+#
+portmap=no
+mount_nfs=no
+mount_smb=no
+mount_ncp=no
+while read device mountpt fstype options
+do
+	case "$device" in
+		""|\#*)
+			continue
+			;;
+	esac
+
+	case "$options" in
+		*noauto*)
+			continue
+			;;
+	esac
+
+	if test "$fstype" = nfs
+	then
+		mount_nfs=yes
+		case "$options" in
+			*nolock*)
+				;;
+			*)
+				portmap=yes
+				;;
+		esac
+	fi
+	if test "$fstype" = smbfs
+	then
+		mount_smb=yes
+	fi
+	if test "$fstype" = ncpfs
+	then
+		mount_ncp=yes
+	fi
+done
+
+exec 0>&1
+
+if test "$portmap" = yes
+then
+	if test -x /sbin/portmap
+	then
+		echo -n "Starting portmapper... "
+		start-stop-daemon --start --quiet --exec /sbin/portmap
+		sleep 2
+	fi
+fi
+
+if test "$mount_nfs" = yes || test "$mount_smb" = yes || test "$mount_ncp" = yes
+then
+	echo "Mounting remote filesystems..."
+	test "$mount_nfs" = yes && mount -a -t nfs
+	test "$mount_smb" = yes && mount -a -t smbfs
+	test "$mount_ncp" = yes && mount -a -t ncpfs
+fi
+
+) < /etc/fstab
+
+: exit 0
+


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/mountnfs.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/openmn/extractfs
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/openmn/extractfs	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/openmn/extractfs	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if (grep -q 'tmpfs.*/var.*tmpfs' /proc/mounts)
+then
+	test "$VERBOSE" != no && echo "Copying /var filesystem..."
+	cp -a /boot/var /
+fi


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/openmn/extractfs
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/openmn/packages
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/openmn/packages	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/openmn/packages	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Original author: ???
+#
+# Additions by Steph Meslin-Weber:
+# x Percentage display
+# x Dot display of dependency installations
+# - removed both of above
+# - display is now X of Y packages and current package name being installed
+
+#. /etc/default/rcS
+
+reconfigure () {
+	pkg=$1
+	path=$2
+	isdependent=$3
+	test -e "$path/info/$pkg.control" || return 1
+	depends="`cat $path/info/$pkg.control|grep Depends|cut -d: -f2`"
+	
+	# make sure we haven't already installed this package
+	isthere=`cat /tmp/.configured.list|grep $pkg`
+	if test "$isthere" != ""; then
+		return 1
+	fi	
+
+	if test "$depends" != ""; then
+		for dep in $depends; do
+			(echo $log|grep $dep >/dev/null 2>&1) || ( reconfigure $dep $path "$max" "$pkg" && log="$log $dep"; )
+		done
+	fi
+
+	echo -ne " ${pkg}"
+	
+	test -e "$path/info/$pkg.prerm" && $path/info/$pkg.prerm unconfigure >/dev/null 2>&1
+	test -e "$path/info/$pkg.postinst" && $path/info/$pkg.postinst configure >/dev/null 2>&1
+	
+	log="$log $pkg"
+
+	# append the installed package name to the list
+	echo -ne "$pkg\n" >> /tmp/.configured.list
+
+	echo
+	return 0
+}
+
+if test ! -e /etc/.configured; then
+	echo "Reconfiguring all packages installed to root:"
+
+	# create unique packages list file
+	rm -f /tmp/.configured.list
+	touch /tmp/.configured.list
+
+	log=""
+
+	for control in /usr/lib/ipkg/info/*.control; do
+		package=`echo $control|sed -e 's,.*/,,g; s,\.control,,g;'`
+		(echo $log|grep $package >/dev/null 2>&1) || reconfigure $package /usr/lib/ipkg
+	done
+
+	# cleanup unique packages list file
+	rm -f /tmp/.configured.list
+fi	
+
+test -f	/usr/lib/ipkg/info/task-ramses || ipkg install task-ramses


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/openmn/packages
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/openmn/umountfs
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/openmn/umountfs	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/openmn/umountfs	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,17 @@
+#! /bin/sh
+#
+# umountfs	Turn off swap and unmount all local filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo "Deactivating swap..."
+swapoff -a
+
+# We leave /proc mounted.
+echo "Unmounting local filesystems..."
+umount -f -a -r
+
+mount -o remount,ro /
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/openmn/umountfs
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/openzaurus/checkversion
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/openzaurus/checkversion	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/openzaurus/checkversion	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+found=`cat /proc/version | cut -d ' ' -f3`
+echo "$found" | grep -q "snapshot" && exit 0
+
+if [ "VERSION" != "$found" ] ; then
+	echo -e >/dev/tty1
+	echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+	echo -e "\033[31;1m *            \033[0mW A R N I N G !              \033[31;1m* \033[0m" >/dev/tty1
+	echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+	echo >/dev/tty1
+	echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+        echo -e "\033[31;1m *    \033[0mYou are running the wrong kernel!    \033[31;1m* \033[0m" >/dev/tty1
+        echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+	echo >/dev/tty1
+	echo -e "You are running '" $found "'"					 >/dev/tty1
+	echo -e "I expect kernel '" VERSION "'"					 >/dev/tty1
+	echo >/dev/tty1
+        echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+        echo -e "\033[31;1m * \033[0mRunning this combination is unsupported \033[31;1m* \033[0m" >/dev/tty1
+        echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+	echo >/dev/tty1
+	echo "I will sleep for 1 minute now. Use this chance to "		 >/dev/tty1
+	echo "reboot the device and flash the proper kernel now! "		 >/dev/tty1
+        echo -e >/dev/tty1
+        echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+        echo -e "\033[31;1m *            \033[0mW A R N I N G !              \033[31;1m* \033[0m" >/dev/tty1
+        echo -e "\033[31;1m ******************************************* \033[0m" >/dev/tty1
+        echo >/dev/tty1
+	sleep 60
+fi


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/openzaurus/checkversion
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/poodle/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/poodle/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/poodle/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /dev/sharp_ts /dev/ts
+	ln -sf /dev/sharp_fl /dev/fl
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/poodle/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/populate-volatile.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/populate-volatile.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/populate-volatile.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,169 @@
+#!/bin/sh
+
+. /etc/default/rcS
+
+CFGDIR="/etc/default/volatiles"
+TMPROOT="/var/tmp"
+COREDEF="00_core"
+
+[ "${VERBOSE}" != "no" ] && echo "Populating volatile Filesystems."
+
+create_file() {
+	EXEC=" 
+	touch \"$1\" 
+	chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1 
+	chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 " 
+
+	test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
+	
+	eval $EXEC &
+}
+
+mk_dir() {
+	EXEC=" 
+	mkdir -p \"$1\" 
+	chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1 
+	chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
+
+	test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
+	
+	eval $EXEC &
+}
+
+link_file() {
+	EXEC="test -e \"$2\" -o -L $2 || ln -s \"$1\" \"$2\" >/dev/tty0 2>&1" 
+
+	test "$VOLATILE_ENABLE_CACHE" = yes && echo "	$EXEC" >> /etc/volatile.cache
+	
+	eval $EXEC &
+}
+
+check_requirements() {
+
+  cleanup() {
+    rm "${TMP_INTERMED}"
+    rm "${TMP_DEFINED}"
+    rm "${TMP_COMBINED}"
+    }
+    
+  CFGFILE="$1"
+
+  [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0
+
+  TMP_INTERMED="${TMPROOT}/tmp.$$"
+  TMP_DEFINED="${TMPROOT}/tmpdefined.$$"
+  TMP_COMBINED="${TMPROOT}/tmpcombined.$$"
+
+
+  cat /etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
+  cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}"
+  cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
+
+  NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`"
+  NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`"
+
+  [ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && {
+    echo "Undefined users:"
+    diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>"
+    cleanup
+    return 1
+    }
+
+
+  cat /etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
+  cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}"
+  cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
+
+  NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`"
+  NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`"
+
+  [ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && {
+    echo "Undefined groups:"
+    diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>"
+    cleanup
+    return 1
+    }
+
+  # Add checks for required directories here
+
+  cleanup
+  return 0
+  }
+
+apply_cfgfile() {
+
+  CFGFILE="$1"
+
+  check_requirements "${CFGFILE}" || {
+    echo "Skipping ${CFGFILE}"
+    return 1
+    }
+
+  cat ${CFGFILE} | grep -v "^#" | \
+  while read LINE; do
+
+    # This is a hell of a lot faster than using cut or awk 5 times
+    eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"`
+
+    [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
+
+
+    [ "${TTYPE}" = "l" ] && {
+      [ -e "${TNAME}" ] && {
+        echo "Cannot create link over existing -${TNAME}-." >&2
+        } || {
+        TSOURCE="$TLTARGET"
+	[ -L "${TNAME}" ] || {
+          [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-."
+          link_file "${TSOURCE}" "${TNAME}" &
+	  }
+        }
+      continue
+      }
+
+    [ -L "${TNAME}" ] && {
+      [ "${VERBOSE}" != "no" ] && echo "Found link."
+      NEWNAME=`ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/'`
+      echo ${NEWNAME} | grep -v "^/" >/dev/null && {
+        TNAME="`echo ${TNAME} | sed -e 's@\(.*\)/.*@\1@'`/${NEWNAME}"
+        [ "${VERBOSE}" != "no" ] && echo "Converted relative linktarget to absolute path -${TNAME}-."
+        } || {
+        TNAME="${NEWNAME}"
+        [ "${VERBOSE}" != "no" ] && echo "Using absolute link target -${TNAME}-."
+        }
+      }
+
+    [ -e "${TNAME}" ] && {
+      [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
+      continue
+      }
+
+    case "${TTYPE}" in
+      "f")  [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-."
+            create_file "${TNAME}" &
+	    ;;
+      "d")  [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-."
+            mk_dir "${TNAME}" &
+	    # Add check to see if there's an entry in fstab to mount.
+	    ;;
+      *)    [ "${VERBOSE}" != "no" ] && echo "Invalid type -${TTYPE}-."
+            continue
+	    ;;
+    esac
+
+
+    done
+
+  return 0
+
+  }
+
+if test -e /etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes"
+then
+	sh /etc/volatile.cache
+else	
+	rm -f /etc/volatile.cache
+	for file in `ls -1 "${CFGDIR}" | sort`; do
+		apply_cfgfile "${CFGDIR}/${file}"
+	done
+fi


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/populate-volatile.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/ramdisk
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/ramdisk	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/ramdisk	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+. /etc/default/rcS
+
+FSTYPE=ext2
+
+if test ! -e /proc/mtd
+then
+	test "$VERBOSE" != "no" && echo >&2 "/proc not mounted, or mtd support not enabled in kernel."
+	exit
+fi
+
+RAM_MTD_NO=`cat /proc/mtd | grep mtdram | tail -n 1 | cut -d: -f1 | cut -dd -f2`
+if test -z "$RAM_MTD_NO"; then exit 0; fi
+
+if test -e /dev/mtdblock/0
+then
+	RAM_MTD=/dev/mtd/$RAM_MTD_NO
+	RAM_MTDBLK=/dev/mtdblock/$RAM_MTD_NO
+else
+	RAM_MTD=/dev/mtd$RAM_MTD_NO
+	RAM_MTDBLK=/dev/mtdblock$RAM_MTD_NO
+fi
+
+RAM_MNTPT=/mnt/ram
+RAM_MTD_SIZE_HEX=`cat /proc/mtd | grep mtdram | tail -n 1 | cut -d" " -f 2`
+RAM_MTD_SIZE=`dc 0x$RAM_MTD_SIZE_HEX 1024 / p`
+test -e /etc/ramdisk.conf && OLD_MTD_SIZE=`cat /etc/ramdisk.conf`
+echo $RAM_MTD_SIZE > /etc/ramdisk.conf
+
+if test ! -d "$RAM_MNTPT"; then echo >&2 "Mountpoint $RAM_MNTPT does not exist!"; exit 0; fi
+
+if (test ! -e /etc/.configured) || test "$OLD_MTD_SIZE" != "$RAM_MTD_SIZE"; then
+  test "$VERBOSE" != "no" && echo -n "Wiping ramdisk: "
+  dd if=/dev/zero bs=1024 count=$RAM_MTD_SIZE of=$RAM_MTD 2>/dev/null >&2 || exit 1
+  test "$VERBOSE" != "no" && echo "$RAM_MTD";
+  test "$VERBOSE" != "no" && echo -n "Creating filesystem on ramdisk: "
+  mkfs.$FSTYPE $RAM_MTDBLK 2>/dev/null >&2 || exit 1
+  test "$VERBOSE" != "no" && echo "$RAM_MTDBLK";
+fi
+
+test "$VERBOSE" != "no" && echo -n "Mounting ramdisk: "
+mount -t $FSTYPE $RAM_MTDBLK $RAM_MNTPT 2>/dev/null >&2 || exit 1
+test "$VERBOSE" != "no" && echo "$RAM_MTDBLK";
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/ramdisk
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/reboot
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/reboot	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/reboot	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,11 @@
+#! /bin/sh
+#
+# reboot	Execute the reboot command.
+#
+# Version:      @(#)reboot  2.75  22-Jun-1998  miquels at cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo -n "Rebooting... "
+reboot -d -f -i


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/reboot
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/rmnologin
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/rmnologin	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/rmnologin	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,14 @@
+#! /bin/sh
+#
+# rmnologin	This script removes the /etc/nologin file as the last
+#		step in the boot process.
+#
+# Version:	@(#)rmnologin  1.00  22-Jun-1998  miquels at cistron.nl
+#
+
+if test -f /etc/nologin.boot
+then
+	rm -f /etc/nologin /etc/nologin.boot
+fi
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/rmnologin
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/save-rtc.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/save-rtc.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/save-rtc.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,16 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel at hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: save-rtc.sh
+# Date: 03-Jul-06
+
+
+# Update the timestamp, if there is already one
+if test -e /etc/timestamp
+then
+	echo "Will restore RCT from /etc/timestamp on next boot"
+	echo "Delete that file to disable this feature."
+        date +%2m%2d%2H%2M%Y > /etc/timestamp
+fi

Added: trunk/oe/packages/initscripts/initscripts-1.0/sendsigs
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/sendsigs	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/sendsigs	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,17 @@
+#! /bin/sh
+#
+# sendsigs	Kill all remaining processes.
+#
+# Version:      @(#)sendsigs  2.75  22-Jun-1998  miquels at cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Kill all processes.
+echo "Sending all processes the TERM signal..."
+killall5 -15
+sleep 5
+echo "Sending all processes the KILL signal..."
+killall5 -9
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/sendsigs
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/simpad/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/simpad/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/simpad/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+    test -n "$VERBOSE" && echo -n "Setting up device links for devfs: "
+    (
+    ln -s /dev/vc/0 /dev/tty0
+    ln -s /dev/vc/1 /dev/tty1
+    ln -s /dev/vc/2 /dev/tty2
+    ln -s /dev/vc/3 /dev/tty3
+    ln -s /dev/vc/4 /dev/tty4
+    ln -s /dev/vc/5 /dev/tty5
+    ln -s /dev/fb/0 /dev/fb0
+    # ln -s /dev/tts/0 /dev/ttySA0
+    # ln -s /dev/tts/1 /dev/ttySA1
+    # ln -s /dev/tts/2 /dev/ttySA2
+
+    ln -s /dev/sound/dsp /dev/dsp
+    ln -s /dev/sound/mixer /dev/mixer
+
+    ln -s /dev/v4l/video0 /dev/video0
+    ln -s /dev/v4l/video0 /dev/video
+    ln -s /dev/misc/rtc /dev/rtc
+    ln -s /dev/misc/apm_bios /dev/apm_bios
+
+    ## need this so that ppp will autoload the ppp modules
+    mknod /dev/ppp c 108 0
+    )  > /dev/null 2>&1
+
+
+    test -n "$VERBOSE" && echo "done"

Added: trunk/oe/packages/initscripts/initscripts-1.0/single
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/single	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/single	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,21 @@
+#! /bin/sh
+#
+# single	executed by init(8) upon entering runlevel 1 (single).
+#
+# Version:	@(#)single  1.20  26-Geb-2001  miquels at cistron.nl
+#
+
+PATH="/sbin:/bin:/usr/sbin:/usr/bin"
+
+# Kill all processes.
+echo "Sending all processes the TERM signal..."
+killall5 -15
+sleep 5
+echo "Sending all processes the KILL signal..."
+killall5 -9
+
+# We start update here, since we just killed it.
+test -x /sbin/update && update
+
+echo "Entering single-user mode..."
+exec init -t1 S


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/single
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/alignment.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/alignment.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/alignment.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# How to handle alignment faults on the ARM
+#
+# 0 - ignore, the value will probably be rotated
+# 1 - warn, a log message will be output
+# 2 - fixup, the kernel will do an expensive aligned read
+# 3 - fixup+warn
+# 4 - signal, the process will get an illegal instruction fault
+# 5 - signal+warn
+# 6 - invalid (has no effect)
+# 7 - invalid (has no effect)
+#
+# Set ALIGN in /etc/default/rcS to override (do not edit this
+# file!)  Set ALIGN to empty to avoid changing the kernel
+# default (currently '0').
+ALIGN=1
+. /etc/default/rcS
+test -e /proc/cpu/alignment -a -n "$ALIGN" -a "$ALIGN" -ge 0 -a "$ALIGN" -lt 6 &&
+	echo "$ALIGN" >/proc/cpu/alignment

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/banner
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/banner	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/banner	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,4 @@
+#!/bin/sh
+#NOTE: this script may execute with absolutely nothing
+# in /dev
+echo "SlugOS booting..."

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/checkroot.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/checkroot.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/checkroot.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,177 @@
+#
+# checkroot.sh	Check to root filesystem.
+#
+# Version:	@(#)checkroot.sh  2.84  25-Jan-2002  miquels at cistron.nl
+#
+
+. /etc/default/functions
+. /etc/default/rcS
+
+#
+# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
+# from this script *before anything else* with a timeout, like SCO does.
+#
+test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE
+
+#
+# Ensure that bdflush (update) is running before any major I/O is
+# performed (the following fsck is a good example of such activity :).
+#
+test -x /sbin/update && update
+
+#
+# Read /etc/fstab.
+#
+exec 9>&0 </etc/fstab
+rootmode=rw
+rootopts=rw
+swap_on_md=no
+devfs=
+while read fs mnt type opts dump pass junk
+do
+	case "$fs" in
+		""|\#*)
+			continue;
+			;;
+		/dev/md*)
+			# Swap on md device.
+			test "$type" = swap && swap_on_md=yes
+			;;
+		/dev/*)
+			;;
+		*)
+			# Might be a swapfile.
+			test "$type" = swap && swap_on_md=yes
+			;;
+	esac
+	test "$type" = devfs && devfs="$fs"
+	test "$mnt" != / && continue
+	rootopts="$opts"
+	test "$pass" = 0 -o "$pass" = "" && ROOTFSCK=no
+	case "$opts" in
+		ro|ro,*|*,ro|*,ro,*)
+			rootmode=ro
+			;;
+	esac
+done
+exec 0>&9 9>&-
+
+#
+# Activate the swap device(s) in /etc/fstab. This needs to be done
+# before fsck, since fsck can be quite memory-hungry.
+#
+# We don't test whether we're running a 2.[0123].x kernel and md
+# since that's plain too old.
+
+if test "$DOSWAP" != no
+then
+	swaps="$(blkid -t TYPE=swap -o device 2>/dev/null)"
+	if test -n "$swaps"
+	then
+		swapon $swaps 2>/dev/null
+	else
+		swapon -a 2> /dev/null
+	fi
+fi
+
+#
+# Check the root filesystem.
+#
+if test -f /fastboot || test "$ROOTFSCK" != yes
+then
+  test "$ROOTFSCK" = yes && echo "Fast boot, no filesystem check"
+elif test ! -x /sbin/fsck -a ! -x /usr/sbin/fsck
+then
+  echo "/etc/init.d/checkroot.sh: no fsck"
+else
+  leds disk-1 slow
+  #
+  # Ensure that root is quiescent and read-only before fsck'ing.
+  #
+  mount -n -o remount,ro /
+  if test $? = 0
+  then
+    if test -f /forcefsck
+    then
+	force="-f"
+    else
+	force=""
+    fi
+    if test "$FSCKFIX" = yes
+    then
+	fix="-y"
+    else
+	fix="-a"
+    fi
+    spinner="-C"
+    case "$TERM" in
+        dumb|network|unknown|"") spinner="" ;;
+    esac
+    test "$VERBOSE" != no && echo "Checking root filesystem..."
+    fsck $spinner $force $fix /
+    #
+    # If there was a failure, drop into single-user mode.
+    #
+    # NOTE: "failure" is defined as exiting with a return code of
+    # 2 or larger.  A return code of 1 indicates that filesystem
+    # errors were corrected but that the boot may proceed.
+    #
+    if test "$?" -gt 1
+    then
+      # Surprise! Re-directing from a HERE document (as in
+      # "cat << EOF") won't work, because the root is read-only.
+      echo
+      echo "fsck failed.  Please repair manually and reboot.  Please note"
+      echo "that the root filesystem is currently mounted read-only.  To"
+      echo "remount it read-write:"
+      echo
+      echo "   # mount -n -o remount,rw /"
+      echo
+      echo "CONTROL-D will exit from this shell and REBOOT the system."
+      echo
+      leds system panic
+      leds beep -r 5
+      # Start a single user shell on the console
+      if single_user_ok
+      then
+	sulogin -t 600 $CONSOLE
+	# if this exits with SIGALRM (which happens to be 142) the
+	# timeout happened, do not, then, reboot!
+	if test $? -ne 142
+	then
+	  reboot -f
+	else
+	  echo "/etc/init.d/checkroot.sh: sulogin timeout, continuing boot"
+	fi
+      else
+	echo "/etc/init.d/checkroot.sh: fsck failed, continuing boot"
+      fi
+    fi
+  else
+    echo "*** ERROR!  Cannot fsck root fs because it is not mounted read-only!"
+    echo
+  fi
+  leds disk-1 off
+fi
+
+#
+#	If the root filesystem was not marked as read-only in /etc/fstab,
+#	remount the rootfs rw but do not try to change mtab because it
+#	is on a ro fs until the remount succeeded. Then clean up old mtabs
+#	and finally write the new mtab.
+#
+mount -n -o remount,$rootopts /
+if test "$rootmode" = rw
+then
+	if test ! -L /etc/mtab
+	then
+		rm -f /etc/mtab~ /etc/nologin
+		: > /etc/mtab
+	fi
+	mount -f -o remount /
+	mount -f /proc
+	mount -f /sys
+	test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
+fi
+
+: exit 0

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/devices.patch
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/devices.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/devices.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,52 @@
+#
+# Patch to allow /dev to reside permanently in the file
+# system.
+#
+--- old/devices	2005-05-28 21:51:39.012078699 -0700
++++ new/devices	2005-06-12 00:16:29.222686303 -0700
+@@ -6,7 +6,7 @@
+ . /etc/default/rcS
+ 
+ # exit without doing anything if udev is active
+-if test -e /dev/.udev -o -e /dev/.udevdb; then
++if test -e /dev/.udev -o -e /dev/.udevdb -o -e /dev/.permanent; then
+ 	exit 0
+ fi
+ 
+@@ -37,12 +37,20 @@
+ 	mknod /dev/ppp c 108 0
+ 	if test "$VERBOSE" != "no"; then echo "done"; fi
+ else
+-	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+-	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+-	if test $? -ne 0; then
+-		if test "$VERBOSE" != "no"; then echo "failed"; fi
++	if test -e /dev/.noram
++	then
++		# There should be no files, any files will damage the
++		# makedevs script below.
++		rm $(find /dev -type f -print)
++		:>/dev/.noram
+ 	else
+-		if test "$VERBOSE" != "no"; then echo "done"; fi
++		if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
++		mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
++		if test $? -ne 0; then
++			if test "$VERBOSE" != "no"; then echo "failed"; fi
++		else
++			if test "$VERBOSE" != "no"; then echo "done"; fi
++		fi
+ 	fi
+ 	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+ 	cd /
+@@ -60,6 +68,10 @@
+ 		if test "$VERBOSE" != "no"; then echo "failed"; fi
+ 	else
+ 		if test "$VERBOSE" != "no"; then echo "done"; fi
++		if test -e /dev/.noram
++		then
++			:>/dev/.permanent
++		fi
+ 	fi
+ fi
+ 

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/domainname.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/domainname.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/domainname.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,5 @@
+#
+# domainname.sh	Set the domainname.
+#
+test -r /etc/defaultdomain &&
+	cat /etc/defaultdomain >/proc/sys/kernel/domainname

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/mountall.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/mountall.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/mountall.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,27 @@
+#
+# mountall.sh	Mount all filesystems.
+#
+# Version:	@(#)mountall.sh  2.83-2  01-Nov-2001  miquels at cistron.nl
+#
+. /etc/default/rcS
+
+#
+# Mount local filesystems in /etc/fstab. For some reason, people
+# might want to mount "proc" several times, and mount -v complains
+# about this. So we mount "proc" filesystems without -v.
+#
+test "$VERBOSE" != no && echo "Mounting local filesystems..."
+mount -at nonfs,nosmbfs,noncpfs 2>/dev/null
+
+#
+# We might have mounted something over /dev, see if /dev/initctl is there.
+#
+if test ! -p /dev/initctl
+then
+	rm -f /dev/initctl
+	mknod -m 600 /dev/initctl p
+fi
+kill -USR1 1
+
+: exit 0
+

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/rootopts.patch
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/rootopts.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/rootopts.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,15 @@
+#
+# Ensure that the root file system is remounted with the correct
+# options from fstab
+#
+--- old/checkroot.sh	2005-05-28 19:30:55.488975598 -0700
++++ new/checkroot.sh	2005-05-28 19:31:32.334390450 -0700
+@@ -149,7 +149,7 @@
+ #	is on a ro fs until the remount succeeded. Then clean up old mtabs
+ #	and finally write the new mtab.
+ #
+-mount -n -o remount,$rootmode /
++mount -n -o remount,$rootopts /
+ if test "$rootmode" = rw
+ then
+ 	if test ! -L /etc/mtab

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountfs
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountfs	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountfs	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,43 @@
+#! /bin/sh
+#
+# umountfs	Turn off swap and unmount all local filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Ensure /proc is mounted
+test -r /proc/mounts || mount -t proc proc /proc
+
+echo "Deactivating swap..."
+swapoff -a
+
+# We leave /proc mounted, the umount of /dev/devpts seems to fail
+# quite frequently, the busybox umount apparently gives up at the
+# first failure, so it is necessary to go file system by file
+# system.  It is necessary to go backward in the /proc list, because
+# later things may have been mounted on earlier mounts.
+devfs=
+unmount() {
+	local dev mp type opts
+	if read dev mp type opts
+	then
+		# recurse - unmount later items
+		unmount
+		# skip /proc and /dev but not the sub-directories
+		case "$mp" in
+		/|/proc)return 0;;
+		/dev)	devfs=1
+			return 0;;
+		esac
+		# then unmount this, if possible, otherwise make
+		# it read-only
+		umount -f -r "$mp"
+	fi
+}
+
+echo "Unmounting local filesystems..."
+unmount </proc/mounts
+
+# now /dev and read-only /  (halt/reboot may need /proc!)
+test -n "$devfs" && umount -f -r /dev
+mount -o remount,ro /

Added: trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountnfs.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountnfs.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/slugos/umountnfs.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,40 @@
+#! /bin/sh
+#
+# umountnfs.sh	Unmount all network filesystems.
+#
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Write a reboot record to /var/log/wtmp before unmounting
+halt -w
+
+# Ensure /proc is mounted
+test -r /proc/mounts || mount -t proc proc /proc
+
+echo "Unmounting remote filesystems..."
+
+#
+# Read the list of mounted file systems and -f umount the
+# known network file systems.  -f says umount it even if
+# the server is unreachable.  Do not attempt to umount
+# the root file system.  Unmount in reverse order from
+# that given by /proc/mounts (otherwise it may not work).
+#
+unmount() {
+	local dev mp type opts
+	if read dev mp type opts
+	then
+		# recurse - unmount later items
+		unmount
+		# skip /, /proc and /dev
+		case "$mp" in
+		/|/proc)return 0;;
+		/dev)	return 0;;
+		esac
+		# then unmount this, if nfs
+		case "$type" in
+		nfs|smbfs|ncpfs) umount -f "$mp";;
+		esac
+	fi
+}
+
+unmount </proc/mounts

Added: trunk/oe/packages/initscripts/initscripts-1.0/spitz/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/spitz/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/spitz/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	mkdir -p dev/input
+	mkdir -p dev/vc
+	for i in 0 1 2 3 4 5 6 7 8 9; do
+		ln -s /dev/tty$i /dev/vc/$i
+	done
+	ln -sf /dev/sharp_ts /dev/ts
+        ln -sf /dev/sharp_fl /dev/fl
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/spitz/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/sysfs.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/sysfs.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/sysfs.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ -e /proc ] && ! [ -e /proc/mounts ]; then
+  mount -t proc proc /proc
+fi
+
+if [ -e /sys ] && grep -q sysfs /proc/filesystems; then
+  mount sysfs /sys -t sysfs
+fi
+
+exit 0

Added: trunk/oe/packages/initscripts/initscripts-1.0/tosa/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/tosa/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/tosa/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,72 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+        mkdir -p dev/input
+        mkdir -p dev/vc
+        for i in 0 1 2 3 4 5 6 7 8 9; do
+                ln -s /dev/tty$i /dev/vc/$i
+        done
+	ln -sf /dev/sharp_ts /dev/ts
+        ln -sf /dev/sharp_fl /dev/fl
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+#Always turn on usb
+if [ ! -d /dev/usb ]; then mkdir /dev/usb; fi
+mknod /dev/usb/host_ohci c 10 222
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/tosa/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/uml/devices
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/uml/devices	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/uml/devices	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udevdb; then
+    exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+	if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+	ln -s /dev/touchscreen/0 /dev/ts
+	ln -s /dev/touchscreen/0raw /dev/tsraw
+	ln -s /dev/vc/0 /dev/tty0
+	ln -s /dev/vc/1 /dev/tty1
+	ln -s /dev/vc/2 /dev/tty2
+	ln -s /dev/vc/3 /dev/tty3
+	ln -s /dev/vc/4 /dev/tty4
+	ln -s /dev/vc/5 /dev/tty5
+	ln -s /dev/fb/0 /dev/fb0
+#	ln -s /dev/tts/0 /dev/ttySA0
+#	ln -s /dev/tts/1 /dev/ttySA1
+#	ln -s /dev/tts/2 /dev/ttySA2
+
+	ln -s /dev/sound/dsp /dev/dsp
+	ln -s /dev/sound/mixer /dev/mixer
+
+	ln -s /dev/v4l/video0 /dev/video0
+	ln -s /dev/v4l/video0 /dev/video
+	ln -s /dev/misc/rtc /dev/rtc
+
+	## need this so that ppp will autoload the ppp modules
+	mknod /dev/ppp c 108 0
+	if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+	if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+	mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+	if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+	cd /
+	mkdir -p dev/msys
+	mkdir -p dev/pts
+	ln -sf /proc/self/fd /dev/fd
+	ln -sf /proc/kcore /dev/core
+	/sbin/makedevs -r / -D /etc/device_table
+	if test $? -ne 0; then
+		if test "$VERBOSE" != "no"; then echo "failed"; fi
+	else
+		if test "$VERBOSE" != "no"; then echo "done"; fi
+	fi
+fi
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/uml/devices
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/umountfs
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/umountfs	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/umountfs	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,18 @@
+#! /bin/sh
+#
+# umountfs	Turn off swap and unmount all local filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo "Deactivating swap..."
+swapoff -a
+
+# We leave /proc mounted.
+echo "Unmounting local filesystems..."
+mount -o remount,ro /mnt/ram
+umount -f -a -r
+
+mount -o remount,ro /
+
+: exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/umountfs
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/umountnfs.sh
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/umountnfs.sh	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/umountnfs.sh	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,28 @@
+#! /bin/sh
+#
+# umountnfs.sh	Unmount all network filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Write a reboot record to /var/log/wtmp before unmounting
+halt -w
+
+echo "Unmounting remote filesystems..."
+
+test -f /etc/fstab && (
+
+#
+#	Read through fstab line by line and unount network file systems
+#
+while read device mountpt fstype options
+do
+	if test "$fstype" = nfs ||  test "$fstype" = smbfs ||  test "$fstype" = ncpfs
+	then
+		umount -f $mountpt
+	fi
+done
+) < /etc/fstab
+
+: exit 0
+


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/umountnfs.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/urandom
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/urandom	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/urandom	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,41 @@
+#! /bin/sh
+#
+# urandom	This script saves the random seed between reboots.
+#		It is called from the boot, halt and reboot scripts.
+#
+# Version:	@(#)urandom  1.33  22-Jun-1998  miquels at cistron.nl
+#
+
+test -c /dev/urandom || exit 0
+. /etc/default/rcS
+
+case "$1" in
+	start|"")
+		test "$VERBOSE" != no && echo "Initializing random number generator..."
+		# Load and then save 512 bytes,
+		# which is the size of the entropy pool
+		if test -f /var/lib/urandom/random-seed
+		then
+			cat /var/lib/urandom/random-seed >/dev/urandom
+		fi
+		rm -f /var/lib/urandom/random-seed
+		umask 077
+		dd if=/dev/urandom of=/var/lib/urandom/random-seed count=1 \
+			>/dev/null 2>&1 || echo "urandom start: failed."
+		umask 022
+		;;
+	stop)
+		# Carry a random seed from shut-down to start-up;
+		# see documentation in linux/drivers/char/random.c
+		test "$VERBOSE" != no && echo "Saving random seed..."
+		umask 077
+		dd if=/dev/urandom of=/var/lib/urandom/random-seed count=1 \
+			>/dev/null 2>&1 || echo "urandom stop: failed."
+		;;
+	*)
+		echo "Usage: urandom {start|stop}" >&2
+		exit 1
+		;;
+esac
+
+exit 0


Property changes on: trunk/oe/packages/initscripts/initscripts-1.0/urandom
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/oe/packages/initscripts/initscripts-1.0/volatiles
===================================================================
--- trunk/oe/packages/initscripts/initscripts-1.0/volatiles	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-1.0/volatiles	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,38 @@
+# This configuration file lists filesystem objects that should get verified
+# during startup and be created if missing.
+#
+# Every line must either be a comment starting with #
+# or a definition of format:
+# <type> <owner> <group> <mode> <path> [<linksource>]
+# where the items are separated by whitespace !
+#
+# <type> : d|f|l : (d)irectory|(f)ile|(l)ink
+#
+# A linking example:
+# l root root 0777 /var/test /tmp/testfile
+# f root root 0644 /var/test
+#
+# Understanding links:
+# When populate-volatile is to verify/create a directory or file, it will first
+# check it's existence. If a link is found to exist in the place of the target,
+# the path of the target is replaced with the target the link points to.
+# Thus, if a link is in the place to be verified, the object will be created
+# in the place the link points to instead.
+# This explains the order of "link before object" as in the example above, where
+# a link will be created at /var/test pointing to /tmp/testfile and due to this
+# link the file defined as /var/test will actually be created as /tmp/testfile.
+d root root 0775 /var none
+d root root 0755 /var/backups none
+d root root 0755 /var/cache none
+d root root 0755 /var/lib none
+d root root 0755 /var/lib/ipkg none
+d root root 0755 /var/lib/misc none
+d root root 2775 /var/local none
+d root root 1777 /var/lock none
+d root root 0755 /var/lock/subsys none
+d root root 0755 /var/log none
+d root root 0755 /var/run none
+d root root 0755 /var/spool none
+d root root 1777 /var/tmp none
+f root root 0664 /var/run/utmp none
+f root root 0664 /var/log/wtmp none

Added: trunk/oe/packages/initscripts/initscripts-slugos_1.0.bb
===================================================================
--- trunk/oe/packages/initscripts/initscripts-slugos_1.0.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts-slugos_1.0.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,158 @@
+# SlugOS specific stuff for the init scripts.
+#
+# This is, in effect, an extended patch to fix various
+# problems in the initscripts on SlugOS.  The problems
+# mostly come down to the order the scripts are executed
+# in.
+require initscripts_${PV}.bb
+
+MAINTAINER = "John Bowler <jbowler at acm.org>"
+RCONFLICTS = "initscripts"
+# All other standard definitions inherited from initscripts
+# Except the PR which is hacked here.  The format used is
+# a suffix
+PR := "${PR}.9"
+
+FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+
+PACKAGES = "${PN}"
+
+SRC_URI += "file://alignment.sh"
+SRC_URI += "file://domainname.sh"
+SRC_URI += "file://devices.patch;patch=1"
+
+# Without this it is not possible to patch checkroot.sh
+S = "${WORKDIR}"
+
+do_install_append() {
+	# the image build command now installs this for slugos
+	rm	${D}${sysconfdir}/device_table
+
+	# slugos specific scripts
+	install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
+	install -m 0755 ${WORKDIR}/domainname.sh ${D}${sysconfdir}/init.d
+
+	# Remove the do install links (this detects a change to the
+	# initscripts .bb file - it will cause a build failure here.)
+	# This is a copy of the ln -sf lines from the initscripts
+	# do_install.
+	rm	${D}${sysconfdir}/rc2.d/S99rmnologin
+	rm	${D}${sysconfdir}/rc3.d/S99rmnologin
+	rm	${D}${sysconfdir}/rc4.d/S99rmnologin
+	rm	${D}${sysconfdir}/rc5.d/S99rmnologin
+	rm	${D}${sysconfdir}/rc6.d/S20sendsigs
+#	rm	${D}${sysconfdir}/rc6.d/S30urandom
+	rm	${D}${sysconfdir}/rc6.d/S31umountnfs.sh
+	rm	${D}${sysconfdir}/rc6.d/S40umountfs
+	rm      ${D}${sysconfdir}/rcS.d/S30ramdisk 
+	rm	${D}${sysconfdir}/rc6.d/S90reboot
+	rm	${D}${sysconfdir}/rc0.d/S20sendsigs
+#	rm	${D}${sysconfdir}/rc0.d/S30urandom
+	rm	${D}${sysconfdir}/rc0.d/S31umountnfs.sh
+	rm	${D}${sysconfdir}/rc0.d/S40umountfs
+	rm	${D}${sysconfdir}/rc0.d/S90halt
+	rm	${D}${sysconfdir}/rcS.d/S02banner
+	rm	${D}${sysconfdir}/rcS.d/S10checkroot.sh
+#	rm	${D}${sysconfdir}/rcS.d/S30checkfs.sh
+	rm	${D}${sysconfdir}/rcS.d/S35mountall.sh
+	rm	${D}${sysconfdir}/rcS.d/S39hostname.sh
+	rm	${D}${sysconfdir}/rcS.d/S45mountnfs.sh
+	rm	${D}${sysconfdir}/rcS.d/S55bootmisc.sh
+#	rm	${D}${sysconfdir}/rcS.d/S55urandom
+	rm	${D}${sysconfdir}/rcS.d/S99finish
+	rm	${D}${sysconfdir}/rcS.d/S05devices
+	# udev will run at S04 if installed
+	rm	${D}${sysconfdir}/rcS.d/S03sysfs
+	rm	${D}${sysconfdir}/rcS.d/S38devpts.sh
+#	rm	${D}${sysconfdir}/rcS.d/S06alignment
+
+	# Check the result
+	find ${D}${sysconfdir}/rc?.d ! -type d -print | {
+		status=0
+		while read d
+		do
+			oenote "initscripts-slugos: unexpected link $f"
+			status = 1
+		done
+		test $status -eq 0 ||
+			oefatal "initscripts-slugos: new links break do_install"
+	}
+
+	# Set the run-level links
+	#
+	# Startup (S) links - UNCHANGED
+	#
+	# Keep these in order of startup - S, then 1, 2-5, 0,6
+	# according to the level in which the script starts (or stops) first.
+	update-rc.d -r ${D} banner		start  2 S .
+	update-rc.d -r ${D} sysfs.sh		start  3 S .
+	# udev runs at S 04 .
+	update-rc.d -r ${D} devices		start  5 S .
+	update-rc.d -r ${D} alignment.sh	start  7 S .
+	# busybox hwclock.sh (slugos-init) starts here (08)
+	# slugos-init umountinitrd runs here (09)
+
+	update-rc.d -r ${D} checkroot.sh	start 10 S .
+	# slugos buffer syslog starts here (11)
+	# sysconfsetup runs at S 12
+	# modutils.sh runs at S 20
+	# checkfs.sh is currently disabled from S 30 (and won't work on SlugOS)
+	# ramdisk is not used on SlugOS, would run at S 30
+	update-rc.d -r ${D} mountall.sh		start 35 S .
+	# base-files populate-volatile.sh runs at S37
+	update-rc.d -r ${D} devpts.sh		start 38 S .
+	# slugos file syslog starts here (39)
+
+	# set hostname and domainname before the network script works (by
+	# entering them at level 40), networking may reset them.
+	update-rc.d -r ${D} domainname.sh	start 40 S .
+	update-rc.d -r ${D} hostname.sh		start 40 S .
+	# network runs at S 40
+	# slugos network syslog starts here (44)
+	update-rc.d -r ${D} mountnfs.sh		start 45 S .
+
+	update-rc.d -r ${D} bootmisc.sh		start 55 S .
+	# urandom is currently disabled from S 55 (and won't work with tmpfs /var)
+
+	# ipkg-cl configure runs at S 98
+	update-rc.d -r ${D} finish		start 99 S . 
+
+	#
+	# User (2-5) links - UNCHANGED
+	# rmnologin is the only thing added to user levels
+	update-rc.d -r ${D} rmnologin		start 99 2 3 4 5 .
+
+	# 
+	# Shutdown (0,6) links - !!!CHANGED!!!
+	#
+	# The problem here is that netbase installs K40networking but portmap
+	# installs S32portmap.  One of these has to change!  The safe change
+	# is to make the networking stop at S40, so all network related shutdown
+	# must be in a K script or <S40.
+	#
+	# S20sendsigs is a disaster.  It needs to happen before the umounts
+	# but after the portmapper (which it would otherwise kill).
+	#
+	# urandom would stop at (S)30
+
+	# This is the special, correct, slugos umountnfs.sh (it looks in
+	# the /proc/mounts information, not /etc/fstab)
+	update-rc.d -r ${D} umountnfs.sh	start 31 0 6 .
+	# portmap stops at 32
+	# slugos network syslog stops here (39)
+	# networking stops at 40 (nothing else does, believe me.)
+
+	# busybox hwclock.sh (slugos-init) stops here (45)
+	# slugos file syslog stops here (47)
+	# slugos buffer syslog stops here (49)
+	# udev stops here (55)
+	# Remove any errant processes
+	update-rc.d -r ${D} sendsigs		start 60 0 6 .
+
+	# This is the special, correct, slugos umountfs, it will umount
+	# any network file systems which failed to umount before.
+	update-rc.d -r ${D} umountfs		start 70 0 6 .
+
+	update-rc.d -r ${D} halt		start 90 0 .
+	update-rc.d -r ${D} reboot		start 90 6 .
+}

Added: trunk/oe/packages/initscripts/initscripts_1.0.bb
===================================================================
--- trunk/oe/packages/initscripts/initscripts_1.0.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/initscripts/initscripts_1.0.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,145 @@
+DESCRIPTION = "SysV init scripts"
+MAINTAINER = "Chris Larson <kergoth at handhelds.org>"
+SECTION = "base"
+PRIORITY = "required"
+DEPENDS = "makedevs"
+DEPENDS_openzaurus = "makedevs virtual/kernel"
+RDEPENDS = "makedevs"
+LICENSE = "GPL"
+PR = "r76"
+
+SRC_URI = "file://halt \
+           file://ramdisk \
+           file://umountfs \
+           file://devices \
+           file://devpts.sh \
+           file://devpts \
+           file://hostname.sh \
+           file://mountall.sh \
+           file://banner \
+           file://finish \
+           file://bootmisc.sh \
+           file://mountnfs.sh \
+           file://reboot \
+           file://checkfs.sh \
+           file://single \
+           file://sendsigs \
+           file://urandom \
+           file://rmnologin \
+           file://checkroot.sh \
+           file://umountnfs.sh \
+           file://sysfs.sh \
+           file://device_table.txt \
+           file://populate-volatile.sh \
+           file://volatiles \
+	   file://save-rtc.sh"
+
+SRC_URI_append_arm          = " file://alignment.sh"
+SRC_URI_append_openzaurus   = " file://checkversion"
+
+def read_kernel_version(d):
+	import bb
+	distro = bb.data.getVar('DISTRO', d, 1)
+	filename = bb.data.getVar('STAGING_KERNEL_DIR', d, 1)
+	if distro == "openzaurus":
+		return file( filename + "/kernel-abiversion", "r" ).read().strip()
+	else:
+		return "not important"
+KERNEL_VERSION = ""
+KERNEL_VERSION_openzaurus = "${@read_kernel_version(d)}"
+PACKAGE_ARCH_openzaurus = "${MACHINE_ARCH}"
+
+do_install () {
+#
+# Create directories and install device independent scripts
+#
+	install -d ${D}${sysconfdir}/init.d \
+		   ${D}${sysconfdir}/rcS.d \
+		   ${D}${sysconfdir}/rc0.d \
+		   ${D}${sysconfdir}/rc1.d \
+		   ${D}${sysconfdir}/rc2.d \
+		   ${D}${sysconfdir}/rc3.d \
+		   ${D}${sysconfdir}/rc4.d \
+		   ${D}${sysconfdir}/rc5.d \
+		   ${D}${sysconfdir}/rc6.d \
+		   ${D}${sysconfdir}/default \
+		   ${D}${sysconfdir}/default/volatiles
+
+	install -m 0755    ${WORKDIR}/bootmisc.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/checkroot.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/finish		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/halt		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/hostname.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/mountall.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/mountnfs.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/ramdisk		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/reboot		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/rmnologin	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/sendsigs		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/single		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/umountnfs.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/urandom		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/devpts.sh	${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/devpts		${D}${sysconfdir}/default
+	install -m 0755    ${WORKDIR}/sysfs.sh		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/populate-volatile.sh ${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/save-rtc.sh	${D}${sysconfdir}/init.d	
+	install -m 0644    ${WORKDIR}/volatiles		${D}${sysconfdir}/default/volatiles/00_core
+	if [ "${TARGET_ARCH}" = "arm" ]; then
+		install -m 0755 ${WORKDIR}/alignment.sh	${D}${sysconfdir}/init.d
+	fi
+#
+# Install device dependent scripts
+#
+
+	if [ "${DISTRO}" == "openzaurus" ]; then
+		cat ${WORKDIR}/checkversion | sed -e "s,VERSION,${KERNEL_VERSION}-${DISTRO_VERSION}," > ${D}${sysconfdir}/init.d/checkversion
+		chmod 0755	${D}${sysconfdir}/init.d/checkversion
+		ln -sf		../init.d/checkversion  ${D}${sysconfdir}/rcS.d/S01version
+	fi
+
+	install -m 0755 ${WORKDIR}/banner	${D}${sysconfdir}/init.d/banner
+	install -m 0755 ${WORKDIR}/devices	${D}${sysconfdir}/init.d/devices
+	install -m 0755 ${WORKDIR}/umountfs	${D}${sysconfdir}/init.d/umountfs
+#
+# Create runlevel links
+#
+	ln -sf		../init.d/rmnologin	${D}${sysconfdir}/rc2.d/S99rmnologin
+	ln -sf		../init.d/rmnologin	${D}${sysconfdir}/rc3.d/S99rmnologin
+	ln -sf		../init.d/rmnologin	${D}${sysconfdir}/rc4.d/S99rmnologin
+	ln -sf		../init.d/rmnologin	${D}${sysconfdir}/rc5.d/S99rmnologin
+	ln -sf		../init.d/sendsigs	${D}${sysconfdir}/rc6.d/S20sendsigs
+#	ln -sf		../init.d/urandom	${D}${sysconfdir}/rc6.d/S30urandom
+	ln -sf		../init.d/umountnfs.sh	${D}${sysconfdir}/rc6.d/S31umountnfs.sh
+	ln -sf		../init.d/umountfs	${D}${sysconfdir}/rc6.d/S40umountfs
+	# udev will run at S55 if installed
+	ln -sf          ../init.d/ramdisk       ${D}${sysconfdir}/rcS.d/S30ramdisk 
+	ln -sf		../init.d/reboot	${D}${sysconfdir}/rc6.d/S90reboot
+	ln -sf		../init.d/sendsigs	${D}${sysconfdir}/rc0.d/S20sendsigs
+#	ln -sf		../init.d/urandom	${D}${sysconfdir}/rc0.d/S30urandom
+	ln -sf		../init.d/umountnfs.sh	${D}${sysconfdir}/rc0.d/S31umountnfs.sh
+	ln -sf		../init.d/umountfs	${D}${sysconfdir}/rc0.d/S40umountfs
+	# udev will run at S55 if installed
+	ln -sf		../init.d/halt		${D}${sysconfdir}/rc0.d/S90halt
+	ln -sf		../init.d/save-rtc.sh	${D}${sysconfdir}/rc0.d/S25save-rtc.sh
+	ln -sf		../init.d/save-rtc.sh	${D}${sysconfdir}/rc6.d/S25save-rtc.sh		
+	ln -sf		../init.d/banner	${D}${sysconfdir}/rcS.d/S02banner
+	ln -sf		../init.d/checkroot.sh	${D}${sysconfdir}/rcS.d/S10checkroot.sh
+#	ln -sf		../init.d/checkfs.sh	${D}${sysconfdir}/rcS.d/S30checkfs.sh
+	ln -sf		../init.d/mountall.sh	${D}${sysconfdir}/rcS.d/S35mountall.sh
+	ln -sf		../init.d/hostname.sh	${D}${sysconfdir}/rcS.d/S39hostname.sh
+	ln -sf		../init.d/mountnfs.sh	${D}${sysconfdir}/rcS.d/S45mountnfs.sh
+	ln -sf		../init.d/bootmisc.sh	${D}${sysconfdir}/rcS.d/S55bootmisc.sh
+#	ln -sf		../init.d/urandom	${D}${sysconfdir}/rcS.d/S55urandom
+	ln -sf		../init.d/finish	${D}${sysconfdir}/rcS.d/S99finish
+	ln -sf		../init.d/devices	${D}${sysconfdir}/rcS.d/S05devices
+	# udev will run at S04 if installed
+	ln -sf		../init.d/sysfs.sh	${D}${sysconfdir}/rcS.d/S03sysfs
+	ln -sf		../init.d/populate-volatile.sh	${D}${sysconfdir}/rcS.d/S37populate-volatile.sh
+	ln -sf		../init.d/devpts.sh	${D}${sysconfdir}/rcS.d/S38devpts.sh
+	if [ "${TARGET_ARCH}" = "arm" ]; then
+		ln -sf	../init.d/alignment.sh	${D}${sysconfdir}/rcS.d/S06alignment
+	fi
+
+	install -m 0755		${WORKDIR}/device_table.txt		${D}${sysconfdir}/device_table
+}

Added: trunk/oe/packages/linux/README
===================================================================
--- trunk/oe/packages/linux/README	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/README	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1 @@
+cs8900a ethernet chip

Added: trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,1440 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17.7
+# Mon Aug  7 00:28:40 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+# CONFIG_IKCONFIG_PROC is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+# CONFIG_SHMEM is not set
+CONFIG_SLAB=y
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+CONFIG_OBSOLETE_INTERMODULE=m
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_S3C2410=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# S3C24XX Implementations
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_SMDK2410 is not set
+CONFIG_MACH_QT2410=y
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_RX3715 is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+CONFIG_CPU_S3C2410=y
+
+#
+# S3C2410 Boot
+#
+# CONFIG_S3C2410_BOOT_ERROR_RESET is not set
+
+#
+# S3C2410 Setup
+#
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_S3C2410_PM_DEBUG=y
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+
+#
+# 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
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttySAC0,115200 root=/dev/mmcblk0p1 rootdelay=10"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+# CONFIG_IRCOMM is not set
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIVHCI=m
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=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=y
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+# CONFIG_MTD_NAND_S3C2410_HWECC is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_BLK_DEV_RAM_SIZE is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE is not set
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_IDEDISK is not set
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+
+#
+# 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 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_PCI is not set
+CONFIG_CS89x0=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+# CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+# CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# 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_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=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_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_LEGACY_PTY_COUNT is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+CONFIG_S3C2410_RTC=y
+# 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 is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_S3C24XX_GPIO=y
+CONFIG_SPI_S3C24XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_FIRMWARE_EDID=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+CONFIG_FB_S3C2410_DEBUG=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_ISD200 is not set
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_S3C2410=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_FS_MBCACHE is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=m
+CONFIG_RELAYFS=m
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS=m
+CONFIG_JFFS_FS_VERBOSE=0
+# CONFIG_JFFS_PROC_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS 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=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_UNWIND_INFO=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y

Added: trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410.laforge
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410.laforge	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/defconfig-armzone-qt2410.laforge	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,1438 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.17.7
+# Mon Aug  7 00:28:40 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_VECTORS_BASE=0xffff0000
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+# CONFIG_IKCONFIG_PROC is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+CONFIG_OBSOLETE_INTERMODULE=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_S3C2410=y
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# S3C24XX Implementations
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_SMDK2410 is not set
+CONFIG_MACH_QT2410=y
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_RX3715 is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+CONFIG_CPU_S3C2410=y
+
+#
+# S3C2410 Boot
+#
+# CONFIG_S3C2410_BOOT_ERROR_RESET is not set
+
+#
+# S3C2410 Setup
+#
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_S3C2410_PM_DEBUG=y
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+
+#
+# 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=y
+CONFIG_CPU_DCACHE_DISABLE=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=200
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttySAC0,115200 root=/dev/mmcblk0p1 rootdelay=10"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+# CONFIG_IRCOMM is not set
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIVHCI=m
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=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=y
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+# CONFIG_MTD_NAND_S3C2410_HWECC is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_UB=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+
+#
+# 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 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+CONFIG_NET_PCI=y
+CONFIG_CS89x0=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=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_S3C2410=y
+CONFIG_SERIAL_S3C2410_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_S3C2410_RTC=y
+# 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 is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_S3C24XX_GPIO=y
+CONFIG_SPI_S3C24XX=y
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_FIRMWARE_EDID=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+CONFIG_FB_S3C2410_DEBUG=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_ISD200 is not set
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_S3C2410=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS=m
+CONFIG_JFFS_FS_VERBOSE=0
+# CONFIG_JFFS_PROC_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_UNWIND_INFO=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C2410_PORT=y
+CONFIG_DEBUG_S3C2410_UART=0
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdebugp.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdebugp.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdebugp.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,15 @@
+Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/mmc/s3c2410mci.c	2006-08-07 09:37:38.000000000 +0200
++++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c	2006-08-07 09:38:15.000000000 +0200
+@@ -300,8 +300,8 @@
+ 	u32 sdi_bsize, sdi_dcon, sdi_imsk;
+ 	int dma_len = 0;
+ 
+-	DBG(KERN_DEBUG PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
+-		mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
++	DBG(PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
++	    mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
+ 	DBG(PFX "request : %s mode\n",mmc->mode == MMC_MODE_MMC ? "mmc" : "sd");
+ 
+ 

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdmalockup.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdmalockup.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-fixdmalockup.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,13 @@
+diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c
+--- linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c	2006-08-07 09:25:32.000000000 +0200
++++ linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c	2006-08-07 00:55:23.000000000 +0200
+@@ -206,6 +206,8 @@
+ 	host->complete_what = COMPLETION_NONE;
+ 	complete(&host->complete_request);
+ 	writel(0, host->base + S3C2410_SDIIMSK);
++	if (host->mrq->data && host->mrq->data->error != MMC_ERR_NONE)
++		complete(&host->complete_dma);
+ 	spin_unlock_irqrestore( &host->complete_lock, iflags);
+ 	DBG(PFX "IRQ transfer closed.\n");
+ 	return IRQ_HANDLED;
+

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-get_ro.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-get_ro.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-get_ro.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,33 @@
+diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c
+--- linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c	2006-08-07 09:25:32.000000000 +0200
++++ linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c	2006-08-07 00:55:23.000000000 +0200
+@@ -515,9 +518,19 @@
+ 
+ }
+ 
++static int s3c2410sdi_get_ro(struct mmc_host *mmc)
++{
++	struct s3c2410sdi_host *host = mmc_priv(mmc);
++	if (s3c2410_gpio_getpin(host->pdata->gpio_wprotect) != 0)
++		return 1;
++	else
++		return 0;
++}	
++
+ static struct mmc_host_ops s3c2410sdi_ops = {
+ 	.request	= s3c2410sdi_request,
+ 	.set_ios	= s3c2410sdi_set_ios,
++	.get_ro		= s3c2410sdi_get_ro,
+ };
+ 
+ static void s3c2410_mmc_def_setpower(unsigned int to)
+@@ -565,6 +578,8 @@
+ 
+ 	host->irq_cd = s3c2410_gpio_getirq(pdata->gpio_detect);
+ 	s3c2410_gpio_cfgpin(pdata->gpio_detect, S3C2410_GPIO_IRQ);
++	if (pdata->gpio_wprotect)
++		s3c2410_gpio_cfgpin(pdata->gpio_wprotect, S3C2410_GPIO_INPUT);
+ 
+ 	host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ 	if (!host->mem) {
+

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-sdipre_limit.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-sdipre_limit.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-sdipre_limit.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,12 @@
+diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c
+--- linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c	2006-08-07 09:25:32.000000000 +0200
++++ linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c	2006-08-07 00:55:23.000000000 +0200
+@@ -503,6 +505,7 @@
+ 	}
+ 
+ 	if(sdi_psc > 255) sdi_psc = 255;
++	if (sdi_psc < 8) sdi_psc = 8;
+ 	writel(sdi_psc, host->base + S3C2410_SDIPRE);
+ 
+ 	/* Set CLOCK_ENABLE */
+

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-tt1104.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-tt1104.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/mmc-tt1104.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,1961 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/dma.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/dma.c	2006-08-07 17:35:41.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/dma.c	2006-08-07 17:38:53.000000000 +0200
+@@ -947,7 +947,12 @@
+ 		return -EINVAL;
+ 	}
+ 
+-	dcon |= S3C2410_DCON_HWTRIG;
++	if (chan->hwsrc >= 0) {
++		dcon |= S3C2410_DCON_HWTRIG;
++		dcon |= ((chan->hwsrc << S3C2410_DCON_SRCSHIFT) 
++						&& S3C2410_DCON_SRCMASK);
++	}
++
+ 	dcon |= S3C2410_DCON_INTREQ;
+ 
+ 	pr_debug("%s: dcon now %08x\n", __FUNCTION__, dcon);
+@@ -1027,7 +1032,8 @@
+ int s3c2410_dma_devconfig(int channel,
+ 			  s3c2410_dmasrc_t source,
+ 			  int hwcfg,
+-			  unsigned long devaddr)
++			  unsigned long devaddr,
++			  unsigned int hwsrc)
+ {
+ 	s3c2410_dma_chan_t *chan = &s3c2410_chans[channel];
+ 
+@@ -1038,6 +1044,7 @@
+ 
+ 	chan->source = source;
+ 	chan->dev_addr = devaddr;
++	chan->hwsrc = hwsrc;
+ 
+ 	switch (source) {
+ 	case S3C2410_DMASRC_HW:
+Index: linux-2.6.17.7-new/drivers/mmc/mmc.c
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/mmc/mmc.c	2006-08-07 17:35:41.000000000 +0200
++++ linux-2.6.17.7-new/drivers/mmc/mmc.c	2006-08-07 17:38:53.000000000 +0200
+@@ -817,7 +817,7 @@
+ 
+ 		cmd.opcode = MMC_ALL_SEND_CID;
+ 		cmd.arg = 0;
+-		cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR;
++		cmd.flags = (MMC_RSP_R2 | MMC_CMD_BCR) & ~MMC_RSP_CRC;
+ 
+ 		err = mmc_wait_for_cmd(host, &cmd, CMD_RETRIES);
+ 		if (err == MMC_ERR_TIMEOUT) {
+@@ -1105,8 +1105,10 @@
+ 
+ 	mmc_read_csds(host);
+ 
++#if 0
+ 	if (host->mode == MMC_MODE_SD)
+ 		mmc_read_scrs(host);
++#endif
+ }
+ 
+ 
+Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/mmc/s3c2410mci.c	2006-08-07 17:38:52.000000000 +0200
++++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c	2006-08-07 18:12:38.000000000 +0200
+@@ -1,56 +1,298 @@
+ /*
+- *  linux/drivers/mmc/s3c2410mci.h - Samsung S3C2410 SDI Interface driver
++ *  linux/drivers/mmc/s3c2410mci.c - Samsung S3C2410 SDI Interface driver
+  *
+- *  Copyright (C) 2004 Thomas Kleffel, All Rights Reserved.
++ *  Copyright (C) 2004-2005 Thomas Kleffel, 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 version 2 as
+  * published by the Free Software Foundation.
++ *
++ * 2006-08-02 Harald Welte <hwelte at hmw-consulting.de>
++ * 	- Merge with 2.6.17.x
++ * 	- CodingStyle cleanup
+  */
+ #include <linux/config.h>
+ #include <linux/module.h>
+-#include <linux/moduleparam.h>
+-#include <linux/init.h>
+-#include <linux/ioport.h>
+-#include <linux/platform_device.h>
+-#include <linux/interrupt.h>
+-#include <linux/blkdev.h>
+-#include <linux/delay.h>
+-#include <linux/err.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/mmc/host.h>
+ #include <linux/mmc/protocol.h>
++#include <linux/platform_device.h>
+ #include <linux/clk.h>
+ 
+ #include <asm/dma.h>
+ #include <asm/dma-mapping.h>
+-#include <asm/arch/dma.h>
+ 
+ #include <asm/io.h>
+-#include <asm/irq.h>
+-#include <asm/mach/mmc.h>
+ 
+ #include <asm/arch/regs-sdi.h>
+ #include <asm/arch/regs-gpio.h>
+-#include <asm/arch/mmc.h>
+-
+-#ifdef CONFIG_MMC_DEBUG
+-#define DBG(x...)       printk(KERN_INFO x)
+-#else
+-#define DBG(x...)       do { } while (0)
+-#endif
+ 
+ #include "s3c2410mci.h"
+ 
+-#define DRIVER_NAME "mmci-s3c2410"
+-#define PFX DRIVER_NAME ": "
++#define DRIVER_NAME	"mmci-s3c24xx"
++#define PFX		DRIVER_NAME ": "
++
++#define NULLDBG(x...)	do { } while (0)
++#define KERNDBG(x...)	printk(KERN_DEBUG PFX x)
++#define KERNINF(x...)	printk(KERN_INFO PFX x)
++#define KERNERR(x...)	printk(KERN_ERR PFX x)
++
++#define ERR(x...)	KERNERR("ERROR: " x)
++#define DBG(x...)	KERNDBG(x)
++#define INFO(x...)	KERNINF(x)
++#define INTDBG(x...)	NULLDBG("INTERRUPT: " x)
++#define SGDBG(x...)	NULLDBG("SG: " x)
++#define DMADBG(x...)	KERNERR("DMA: " x)
++#define PIODBG(x...)	NULLDBG("PIO: " x)
++#define FAILDBG(x...)	KERNINF("FAILED REQUEST: " x)
++#define CONFDBG(x...)	KERNDBG("CONFIG: " x)
+ 
+ #define RESSIZE(ressource) (((ressource)->end - (ressource)->start)+1)
+ 
++/* FIXME: move this to mmc.h */
++#define MMC_RSP_MASK	0x1f
++
++typedef enum {
++	DMAP_READ,
++	DMAP_WRITE,
++} eDMAPurpose_t;
++
+ static struct s3c2410_dma_client s3c2410sdi_dma_client = {
+ 	.name		= "s3c2410-sdi",
+ };
+ 
++static void finalize_request(struct s3c2410sdi_host *host);
++static void s3c2410sdi_send_request(struct mmc_host *mmc);
++static void s3c2410sdi_reset(struct s3c2410sdi_host *host);
++
++static inline void 
++debug_dump_registers(struct s3c2410sdi_host *host, char *prefix)
++{
++	u32 con, pre, cmdarg, cmdcon, cmdsta, r0, r1, r2, r3, timer, bsize;
++	u32 datcon, datcnt, datsta, fsta, imask;
++		
++	con 	= readl(host->base + S3C2410_SDICON);
++	pre 	= readl(host->base + S3C2410_SDIPRE);
++	cmdarg 	= readl(host->base + S3C2410_SDICMDARG);
++	cmdcon 	= readl(host->base + S3C2410_SDICMDCON);
++	cmdsta 	= readl(host->base + S3C2410_SDICMDSTAT);
++	r0 	= readl(host->base + S3C2410_SDIRSP0);
++	r1 	= readl(host->base + S3C2410_SDIRSP1);
++	r2 	= readl(host->base + S3C2410_SDIRSP2);
++	r3 	= readl(host->base + S3C2410_SDIRSP3);
++	timer 	= readl(host->base + S3C2410_SDITIMER);
++	bsize 	= readl(host->base + S3C2410_SDIBSIZE);
++	datcon 	= readl(host->base + S3C2410_SDIDCON);
++	datcnt 	= readl(host->base + S3C2410_SDIDCNT);
++	datsta 	= readl(host->base + S3C2410_SDIDSTA);
++	fsta 	= readl(host->base + S3C2410_SDIFSTA);
++	
++	if (host->is2440)
++		imask = readl(host->base + S3C2440_SDIIMSK);
++	else
++		imask = readl(host->base + S3C2440_SDIIMSK);
++	
++	DBG("%s  CON:[%08x]  PRE:[%08x]  TMR:[%08x]\n", prefix, con, pre,
++	    timer);
++	DBG("%s CCON:[%08x] CARG:[%08x] CSTA:[%08x]\n", prefix, cmdcon,
++	    cmdarg, cmdsta);
++	DBG("%s DCON:[%08x] FSTA:[%08x] DSTA:[%08x] DCNT:[%08x]\n", prefix, 
++	    datcon, fsta, datsta, datcnt);
++	DBG("%s   R0:[%08x]   R1:[%08x]   R2:[%08x]   R3:[%08x]\n", prefix,
++	    r0, r1, r2, r3);
++}
++
++static inline char *cmd2str(int cmd)
++{
++	switch (cmd) {
++		case  0: return "GO_IDLE_STATE";
++		case  1: return "ALL_SEND_OCR";
++		case  2: return "ALL_SEND_CID";
++		case  3: return "ALL_SEND_RELATIVE_ADD";
++		case  6: return "ACMD: SD_SET_BUSWIDTH";
++		case  7: return "SEL_DESEL_CARD";
++		case  9: return "SEND_CSD";
++		case 10: return "SEND_CID";
++		case 11: return "READ_UNTIL_STOP";
++		case 12: return "STOP_TRANSMISSION";
++		case 13: return "SEND_STATUS";
++		case 15: return "GO_INACTIVE_STATE";
++		case 16: return "SET_BLOCKLEN";
++		case 17: return "READ_SINGLE_BLOCK";
++		case 18: return "READ_MULTIPLE_BLOCK";
++		case 24: return "WRITE_SINGLE_BLOCK";
++		case 25: return "WRITE_MULTIPLE_BLOCK";
++		case 41: return "ACMD: SD_APP_OP_COND";
++		case 55: return "APP_CMD";
++		default: return "UNKNOWN";
++	}
++}
++
++static inline char *err2str(int err) {
++	switch (err) {
++		case 0: return "OK";
++		case 1: return "TIMEOUT";
++		case 2: return "BADCRC";
++		case 3: return "FIFO";
++		case 4: return "FAILED";
++		case 5: return "INVALID";
++		case 6: return "BUSY";
++		case 7: return "DMA";
++		case 8: return "CANCELED";
++		default: return "UNKNOWN";
++	}
++}
++
++static inline void 
++prepare_dbgmsg(struct s3c2410sdi_host *host, struct mmc_command *cmd, int stop) 
++{
++ 	snprintf(host->dbgmsg_cmd, 300, 
++		"#[%u]%s op:[%s(%i)] arg:[0x%08x] flags:[%x] retries:[%u]", 
++		host->ccnt, (stop?" STOP":""), cmd2str(cmd->opcode), 
++		cmd->opcode, cmd->arg, cmd->flags, cmd->retries);
++		
++	if (cmd->data)
++		snprintf(host->dbgmsg_dat, 300, 
++			"#[%u] bsize:%u blocks:%u bytes:%u", 
++			host->dcnt, (1 << cmd->data->blksz_bits) , cmd->data->blocks, 
++			cmd->data->blocks * (1 << cmd->data->blksz_bits));
++	else	
++		host->dbgmsg_dat[0] = '\0';
++}
++
++
++static inline int 
++get_data_buffer(struct s3c2410sdi_host *host, u32 *words, u32 **pointer)
++{
++	struct scatterlist *sg;
++
++	if (!host->pio_active)
++		return -EINVAL;
++	if (!host->mrq)
++		return -EINVAL;
++	if (!host->mrq->data)
++		return -EINVAL;
++
++	if (host->pio_sgptr >= host->mrq->data->sg_len) {
++		SGDBG("get_data_buffer(): no more buffers (%i/%i)\n", 
++		      host->pio_sgptr, host->mrq->data->sg_len);
++		return -EBUSY;
++	}
++	sg = &host->mrq->data->sg[host->pio_sgptr];
++
++	*words	= sg->length >> 2;
++	*pointer= page_address(sg->page) + sg->offset;
++
++	host->pio_sgptr++;
++	
++	SGDBG("get_data_buffer(): new buffer (%i/%i)\n", 
++	      host->pio_sgptr, host->mrq->data->sg_len);
++		
++	return 0;
++}
++
++#define FIFO_FILL(host) ((readl(host->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK) >> 2)
++#define FIFO_FREE(host) ((63 - (readl(host->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK)) >> 2)
++
++static inline void do_pio_read(struct s3c2410sdi_host *host)
++{
++	int res;
++	u32 fifo;
++	void __iomem *from_ptr;
++
++	//FIX2410: write real prescaler to host, it might be set slow to fix 2410
++	writel(host->prescaler, host->base + S3C2410_SDIPRE);
++	//writel(0xff, host->base + S3C2410_SDIPRE);
++
++	from_ptr = host->base + ((host->is2440)?S3C2440_SDIDATA:S3C2410_SDIDATA);
++
++	while ((fifo = FIFO_FILL(host))) {
++		if(!host->pio_words) {
++			res = get_data_buffer(host, &host->pio_words, &host->pio_ptr);
++			if (res) {
++				PIODBG("pio_read(): complete (no more buffers).\n");
++				host->pio_active = 0;
++				host->dma_complete = 1;
++				finalize_request(host);
++				return;
++				/* handle no data condition */
++			}
++				
++			PIODBG("pio_read(): new target: [%i]@[%p]\n", 
++			       host->pio_words, host->pio_ptr);
++		}
++		
++		PIODBG("pio_read(): fifo:[%i] buffer:[%i] dcnt:[%08X]\n", 
++		       fifo, host->pio_words, readl(host->base + S3C2410_SDIDCNT));
++
++		if (fifo > host->pio_words)
++			fifo = host->pio_words;
++
++		host->pio_words-= fifo;
++
++		while (fifo--)
++			*(host->pio_ptr++) = readl(from_ptr);
++	}
++	
++	if (!host->pio_words) {
++		res = get_data_buffer(host, &host->pio_words, &host->pio_ptr);
++		if (res) {
++			PIODBG("pio_read(): complete (no more buffers).\n");
++			host->pio_active = 0;
++			host->dma_complete = 1;
++			finalize_request(host);
++		}
++	}	
++}
++
++static inline void do_pio_write(struct s3c2410sdi_host *host)
++{
++	int res;
++	u32 fifo;
++
++	void __iomem *to_ptr;
++
++	to_ptr = host->base + ((host->is2440)?S3C2440_SDIDATA:S3C2410_SDIDATA);
++
++	while ((fifo = FIFO_FREE(host))) {
++		if (!host->pio_words) {
++			res = get_data_buffer(host, &host->pio_words,
++					      &host->pio_ptr);
++			if (res) {
++				PIODBG("pio_write(): complete\n");
++				host->pio_active = 0;
++				host->dma_complete = 1;
++				finalize_request(host);				
++				return;
++			}	
++			
++			PIODBG("pio_write(): new source: [%i]@[%p]\n", 
++			       host->pio_words, host->pio_ptr);
++			
++		}
++
++		if (fifo > host->pio_words)
++			fifo = host->pio_words;
++
++		host->pio_words-= fifo;
++
++		while (fifo--)
++			writel(*(host->pio_ptr++), to_ptr);
++	}	
++}
++
++static inline u32 enable_imask(struct s3c2410sdi_host *host, u32 imask)
++{
++	u32 newmask;
++
++	newmask = readl(host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
++	newmask|= imask;
++
++	writel(newmask, host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
++
++	return newmask;
++}
++
+ /*
+  * ISR for SDI Interface IRQ
+  * Communication between driver and ISR works as follows:
+@@ -72,490 +314,757 @@
+  * 7) ISR completes host->complete_request
+  * 8) ISR disables interrupts
+  * 9) Driver wakes up and takes care of the request
+-*/
++ *
++ * Note: "->error"-fields are expected to be set to 0 before the request
++ *       was issued by mmc.c - therefore they are only set, when an error
++ *       contition comes up
++ */
+ 
+ static irqreturn_t s3c2410sdi_irq(int irq, void *dev_id, struct pt_regs *regs)
+ {
+ 	struct s3c2410sdi_host *host;
+-	u32 sdi_csta, sdi_dsta, sdi_dcnt;
++	struct mmc_command *cmd;
++	u32 sdi_csta, sdi_dsta, sdi_fsta, sdi_dcnt, sdi_imsk;
+ 	u32 sdi_cclear, sdi_dclear;
+ 	unsigned long iflags;
++	char *reason = "unknown";
+ 
+ 	host = (struct s3c2410sdi_host *)dev_id;
+ 
+-	/* Check for things not supposed to happen */
+-	if(!host) return IRQ_HANDLED;
++	if (!host)
++		return IRQ_NONE;
+ 	
++	spin_lock_irqsave( &host->complete_lock, iflags);
++
+ 	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
+ 	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
+ 	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
+-	
+-	DBG(PFX "IRQ csta=0x%08x dsta=0x%08x dcnt:0x%08x\n", sdi_csta, sdi_dsta, sdi_dcnt);
+-		
+-	spin_lock_irqsave( &host->complete_lock, iflags);
+-	
+-	if( host->complete_what==COMPLETION_NONE ) {
++	sdi_fsta 	= readl(host->base + S3C2410_SDIFSTA);
++	sdi_imsk	= readl(host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
++	sdi_cclear	= 0;
++	sdi_dclear	= 0;
++
++	if (host->complete_what == COMPLETION_NONE ) {
++		reason = "nothing to complete";
+ 		goto clear_imask;
+ 	}
+-	
+-	if(!host->mrq) { 
++
++	if (!host->mrq) {
++		reason = "no active mrq";
+ 		goto clear_imask;
+ 	}
+ 
++	cmd = host->cmd_is_stop?host->mrq->stop:host->mrq->cmd;
+ 	
+-	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
++	if (!cmd) {
++		reason = "no active cmd";
++		goto clear_imask;
++	}
++
++	if (!host->dodma) {
++		if ((host->pio_active == XFER_WRITE) &&
++		    (sdi_fsta & S3C2410_SDIFSTA_TFDET))
++			do_pio_write(host);
++		if ((host->pio_active == XFER_READ) && 
++		    (sdi_fsta & S3C2410_SDIFSTA_RFDET))
++			do_pio_read(host);
++	}
+ 	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
+-	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
+-	sdi_cclear	= 0;
+-	sdi_dclear	= 0;
+-	
+-	
+-	if(sdi_csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
+-		host->mrq->cmd->error = MMC_ERR_TIMEOUT;
+-		goto transfer_closed;
++	sdi_fsta 	= readl(host->base + S3C2410_SDIFSTA);
++		
++	if (sdi_csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
++		cmd->error = MMC_ERR_TIMEOUT;
++		reason = "error: command timeout";
++		goto close_transfer;
+ 	}
+ 
+-	if(sdi_csta & S3C2410_SDICMDSTAT_CMDSENT) {
+-		if(host->complete_what == COMPLETION_CMDSENT) {
+-			host->mrq->cmd->error = MMC_ERR_NONE;
+-			goto transfer_closed;
+-		}
++	if (sdi_csta & S3C2410_SDICMDSTAT_CMDSENT) {
++		if (host->complete_what == COMPLETION_CMDSENT) {
++			reason = "ok: command sent";
++			goto close_transfer;
++		}	
+ 
+ 		sdi_cclear |= S3C2410_SDICMDSTAT_CMDSENT;
+ 	}
+ 
+-	if(sdi_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
+-		if (host->mrq->cmd->flags & MMC_RSP_136) {
+-			DBG(PFX "s3c2410 fixup : ignore CRC fail with long rsp\n");
+-		}
+-		else {
+-			DBG(PFX "COMMAND CRC FAILED %x\n", sdi_csta);
+-			if(host->mrq->cmd->flags & MMC_RSP_CRC) {
+-				host->mrq->cmd->error = MMC_ERR_BADCRC;
+-				goto transfer_closed;
+-			}
++	if (sdi_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
++	#if 0
++		if (cmd->flags & MMC_RSP_CRC) {
++			cmd->error = MMC_ERR_BADCRC;
++			reason = "error: bad command crc";
++			goto close_transfer;
+ 		}
++	#endif
++
+ 		sdi_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;
+ 	}
+ 
+-	if(sdi_csta & S3C2410_SDICMDSTAT_RSPFIN) {
+-		if(host->complete_what == COMPLETION_RSPFIN) {
+-			host->mrq->cmd->error = MMC_ERR_NONE;
+-			goto transfer_closed;
++	if (sdi_csta & S3C2410_SDICMDSTAT_RSPFIN) {
++		if (host->complete_what == COMPLETION_RSPFIN) {
++			reason = "ok: command response received";
++			goto close_transfer;
+ 		}
+ 
+-		if(host->complete_what == COMPLETION_XFERFINISH_RSPFIN) {
+-			host->mrq->cmd->error = MMC_ERR_NONE;
++		if (host->complete_what == COMPLETION_XFERFINISH_RSPFIN)
+ 			host->complete_what = COMPLETION_XFERFINISH;
+-		}
+-
++				
+ 		sdi_cclear |= S3C2410_SDICMDSTAT_RSPFIN;
+ 	}
+ 
+-	if(sdi_dsta & S3C2410_SDIDSTA_FIFOFAIL) {
+-		host->mrq->cmd->error = MMC_ERR_NONE;
++	/* errors handled after this point are only relevant
++	   when a data transfer is in progress */
++	if (!cmd->data)
++		goto clear_status_bits;
++
++	/* Check for FIFO failure on 2410 */
++	if ((!host->is2440) && (sdi_dsta & S3C2410_SDIDSTA_FIFOFAIL)) {
++		cmd->data->error = MMC_ERR_FIFO;
++		reason = "error: 2410 fifo failure";
++		goto close_transfer;
++	}
++
++	/* Check for FIFO failure on 2440 */
++	if ((host->is2440) && (sdi_fsta & S3C2440_SDIFSTA_FIFOFAIL)) {
+ 		host->mrq->data->error = MMC_ERR_FIFO;
+-		goto transfer_closed;
++		reason = "error: 2440 fifo failure";
++		goto close_transfer;
+ 	}
+ 
+-	if(sdi_dsta & S3C2410_SDIDSTA_RXCRCFAIL) {
+-		host->mrq->cmd->error = MMC_ERR_NONE;
+-		host->mrq->data->error = MMC_ERR_BADCRC;
+-		goto transfer_closed;
++	if (sdi_dsta & S3C2410_SDIDSTA_RXCRCFAIL) {
++		cmd->data->error = MMC_ERR_BADCRC;
++		reason = "error: bad data crc (outgoing)";
++		goto close_transfer;
+ 	}
+ 
+-	if(sdi_dsta & S3C2410_SDIDSTA_CRCFAIL) {
+-		DBG(PFX "DATA CRC FAILED %u\n", sdi_csta);
+-		host->mrq->cmd->error = MMC_ERR_NONE;
+-		host->mrq->data->error = MMC_ERR_BADCRC;
+-		goto transfer_closed;
++	if (sdi_dsta & S3C2410_SDIDSTA_CRCFAIL) {
++		cmd->data->error = MMC_ERR_BADCRC;
++		reason = "error: bad data crc (incoming)";
++		goto close_transfer;
+ 	}
+ 
+-	if(sdi_dsta & S3C2410_SDIDSTA_DATATIMEOUT) {
+-		host->mrq->cmd->error = MMC_ERR_NONE;
+-		host->mrq->data->error = MMC_ERR_TIMEOUT;
+-		goto transfer_closed;
++	if (sdi_dsta & S3C2410_SDIDSTA_DATATIMEOUT) {
++		cmd->data->error = MMC_ERR_TIMEOUT;
++		reason = "error: data timeout";
++		goto close_transfer;
+ 	}
+ 
+-	if(sdi_dsta & S3C2410_SDIDSTA_XFERFINISH) {
+-		if(host->complete_what == COMPLETION_XFERFINISH) {
+-			host->mrq->cmd->error = MMC_ERR_NONE;
+-			host->mrq->data->error = MMC_ERR_NONE;
+-			goto transfer_closed;
++	if (sdi_dsta & S3C2410_SDIDSTA_XFERFINISH) {
++		if (host->complete_what == COMPLETION_XFERFINISH) {
++			reason = "ok: data transfer completed";
++			goto close_transfer;
+ 		}
+ 
+-		if(host->complete_what == COMPLETION_XFERFINISH_RSPFIN) {
+-			host->mrq->data->error = MMC_ERR_NONE;
++		if (host->complete_what == COMPLETION_XFERFINISH_RSPFIN)
+ 			host->complete_what = COMPLETION_RSPFIN;
+-		}
+ 
+ 		sdi_dclear |= S3C2410_SDIDSTA_XFERFINISH;
+ 	}
+-
++	
++clear_status_bits:
+ 	writel(sdi_cclear, host->base + S3C2410_SDICMDSTAT);
+ 	writel(sdi_dclear, host->base + S3C2410_SDIDSTA);
+ 
+-	spin_unlock_irqrestore( &host->complete_lock, iflags);
+-	DBG(PFX "IRQ still waiting.\n");
+-	return IRQ_HANDLED;
++	goto irq_out;
+ 
+-
+-transfer_closed:
+-	writel(sdi_cclear, host->base + S3C2410_SDICMDSTAT);
+-	writel(sdi_dclear, host->base + S3C2410_SDIDSTA);
++close_transfer:
+ 	host->complete_what = COMPLETION_NONE;
+-	complete(&host->complete_request);
+-	writel(0, host->base + S3C2410_SDIIMSK);
+-	if (host->mrq->data && host->mrq->data->error != MMC_ERR_NONE)
+-		complete(&host->complete_dma);
+-	spin_unlock_irqrestore( &host->complete_lock, iflags);
+-	DBG(PFX "IRQ transfer closed.\n");
+-	return IRQ_HANDLED;
+-	
++	host->pio_active = XFER_NONE;
++
++	writel(0, host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
++	disable_irq_nosync(host->irq);	
++
++	finalize_request(host);	
++
++	goto irq_out;
++
+ clear_imask:
+-	writel(0, host->base + S3C2410_SDIIMSK);
++	writel(0, host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
++	disable_irq_nosync(host->irq);	
++
++irq_out:
++	INTDBG("csta=0x%08x dsta=0x%08x fsta=0x%08x dcnt:0x%08x status:%s.\n",
++		sdi_csta, sdi_dsta, sdi_fsta, sdi_dcnt, reason);
++
+ 	spin_unlock_irqrestore( &host->complete_lock, iflags);
+-	DBG(PFX "IRQ clear imask.\n");
+ 	return IRQ_HANDLED;
+ 
+ }
+ 
+-
+-/*
+- * ISR for the CardDetect Pin
+-*/
++/* ISR for the CardDetect Pin */
+ 
+ static irqreturn_t s3c2410sdi_irq_cd(int irq, void *dev_id, struct pt_regs *regs)
+ {
+ 	struct s3c2410sdi_host *host = (struct s3c2410sdi_host *)dev_id;
+-	mmc_detect_change(host->mmc, S3C2410SDI_CDLATENCY);
+-
++	mmc_detect_change(host->mmc, 0);
++	
+ 	return IRQ_HANDLED;
+ }
+ 
+-
+-
+-static void s3c2410sdi_dma_done_callback(s3c2410_dma_chan_t *dma_ch, void *buf_id,
+-	int size, s3c2410_dma_buffresult_t result)
++void s3c2410sdi_dma_done_callback(s3c2410_dma_chan_t *dma_ch, void *buf_id,
++				  int size, s3c2410_dma_buffresult_t result)
+ {	unsigned long iflags;
+-	u32 sdi_csta, sdi_dsta,sdi_dcnt;
++	u32 sdi_csta, sdi_dsta, sdi_fsta, sdi_dcnt;
+ 	struct s3c2410sdi_host *host = (struct s3c2410sdi_host *)buf_id;
+-	
+-	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
+-	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
+-	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
+-	
+-	DBG(PFX "DMAD csta=0x%08x dsta=0x%08x dcnt:0x%08x result:0x%08x\n", sdi_csta, sdi_dsta, sdi_dcnt, result);
+-	
+-	spin_lock_irqsave( &host->complete_lock, iflags);
+-	
+-	if(!host->mrq) goto out;
+-	if(!host->mrq->data) goto out;
+-	
+-	
++
+ 	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
+ 	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
++	sdi_fsta 	= readl(host->base + S3C2410_SDIFSTA);
+ 	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
+-		
+-	if( result!=S3C2410_RES_OK ) {
++
++	if (!host->mrq)
++		return;
++	if (!host->mrq->data)
++		return;
++	if (!host->dmatogo)
++		return;
++
++	spin_lock_irqsave(&host->complete_lock, iflags);
++
++	if (result != S3C2410_RES_OK) {
++		FAILDBG("DMA FAILED: csta=0x%08x dsta=0x%08x fsta=0x%08x "
++			"dcnt:0x%08x result:0x%08x togo:%u\n", 
++			sdi_csta, sdi_dsta, sdi_fsta, sdi_dcnt, result,
++			host->dmatogo);
+ 		goto fail_request;
+ 	}
+ 	
+-	
+-	if(host->mrq->data->flags & MMC_DATA_READ) {
+-		if( sdi_dcnt>0 ) {
+-			goto fail_request;
+-		}
+-	}
+-	
+-out:	
+-	complete(&host->complete_dma);
++	host->dmatogo--;
++	if (host->dmatogo) {
++		DMADBG("DMA DONE %i (%i) togo DSTA:[%08x] DCNT:[%08x]\n",
++			host->dmatogo, size, sdi_dsta, sdi_dcnt);
++		goto out;
++	}	
++		
++	host->dma_complete = 1;
++	DMADBG("DMA FINISHED (%i)  DSTA:[%08x] DCNT:[%08x]\n", size, 
++		sdi_dsta, sdi_dcnt);
++	finalize_request(host);
++
++out:
+ 	spin_unlock_irqrestore( &host->complete_lock, iflags);
+ 	return;
+ 
+ 
+ fail_request:
+-	host->mrq->data->error = MMC_ERR_FAILED;
++	host->mrq->data->error = MMC_ERR_DMA;
+ 	host->complete_what = COMPLETION_NONE;
+-	complete(&host->complete_request);
+-	writel(0, host->base + S3C2410_SDIIMSK);
++	host->dma_complete = 1;
++	writel(0, host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
++	finalize_request(host);	
+ 	goto out;
+ 
+ }
+ 
++#define DBGCMD(x, args...) 	do { 					\
++					if (fail) {			\
++						FAILDBG(x, ## args);	\
++						debug_dump_registers(host, ""); \
++					} else 				\
++						DBG(x, ## args);	\
++				} while (0)
+ 
+-static void s3c2410sdi_dma_setup(struct s3c2410sdi_host *host, s3c2410_dmasrc_t source) {
+-	
+-	s3c2410_dma_devconfig(host->dma, source, 3, host->mem->start + S3C2410_SDIDATA);
+-	s3c2410_dma_config(host->dma, 4, (1<<23) | (2<<24));
+-	s3c2410_dma_set_buffdone_fn(host->dma, s3c2410sdi_dma_done_callback);
+-	s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
+-}
+ 
+-static void s3c2410sdi_request(struct mmc_host *mmc, struct mmc_request *mrq) {
+- 	struct s3c2410sdi_host *host = mmc_priv(mmc);
+-	struct device *dev = mmc_dev(host->mmc);
+-	struct platform_device *pdev = to_platform_device(dev);
+-	u32 sdi_carg, sdi_ccon, sdi_timer;
+-	u32 sdi_bsize, sdi_dcon, sdi_imsk;
+-	int dma_len = 0;
++static void debug_command(struct s3c2410sdi_host *host,
++			  struct mmc_command *cmd, int fail)
++{
++	if (!cmd)
++		return;
+ 
+-	DBG(PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
+-	    mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
+-	DBG(PFX "request : %s mode\n",mmc->mode == MMC_MODE_MMC ? "mmc" : "sd");
++	if (cmd->error == MMC_ERR_NONE)
++		DBGCMD("CMD[OK] %s R0:[0x%08x]\n", host->dbgmsg_cmd,
++			cmd->resp[0]);
++	else
++		DBGCMD("CMD[%s] %s\n", err2str(cmd->error),
++			host->dbgmsg_cmd);
+ 
++	if (!cmd->data)
++		return;
++
++	if (cmd->data->error == MMC_ERR_NONE)
++		DBGCMD("DAT[%s] %s\n", err2str(cmd->data->error),
++			host->dbgmsg_dat);
++	else
++		DBGCMD("DAT[%s] %s DCNT:[0x%08x]\n", 
++			err2str(cmd->data->error), host->dbgmsg_dat,
++			readl(host->base + S3C2410_SDIDCNT));
++}
+ 
+-	sdi_ccon = mrq->cmd->opcode & S3C2410_SDICMDCON_INDEX;
+-	sdi_ccon|= S3C2410_SDICMDCON_SENDERHOST;
+-	sdi_ccon|= S3C2410_SDICMDCON_CMDSTART;
++static void finalize_request(struct s3c2410sdi_host *host)
++{
++	struct mmc_request *mrq = host->mrq;
++	struct mmc_command *cmd = host->cmd_is_stop?mrq->stop:mrq->cmd;	
++	int debug_as_failure = 0;
++	
++	if (host->complete_what != COMPLETION_NONE)
++		return;
++	
++	if (cmd->data && (cmd->error == MMC_ERR_NONE) &&
++	    (cmd->data->error == MMC_ERR_NONE)) {
++		if (!host->dma_complete) {
++			DBG("DMA Missing!\n");
++			//s3c2410_dma_debug_channel(host->dma);
++			return;
++		}
++	}
+ 
+-	sdi_carg = mrq->cmd->arg;
++	/* Read response */
++	cmd->resp[0] = readl(host->base + S3C2410_SDIRSP0);
++	cmd->resp[1] = readl(host->base + S3C2410_SDIRSP1);
++	cmd->resp[2] = readl(host->base + S3C2410_SDIRSP2);
++	cmd->resp[3] = readl(host->base + S3C2410_SDIRSP3);
++
++	/* FIX2410: reset clock speed, as it could still be set low for 2410 */
++	writel(host->prescaler, host->base + S3C2410_SDIPRE);
++	//writel(0xff, host->base + S3C2410_SDIPRE);
++	
++	if (cmd->error)
++		debug_as_failure = 1;
++	if (cmd->data && cmd->data->error)
++		debug_as_failure = 1;
++	//if(cmd->flags & MMC_RSP_MAYFAIL) debug_as_failure = 0;
+ 
+-	sdi_timer= 0xFFFF;
++	debug_command(host, cmd, debug_as_failure);
+ 
+-	sdi_bsize= 0;
+-	sdi_dcon = 0;
+-	sdi_imsk = 0;
++	/* Cleanup controller */
++	writel(0, host->base + S3C2410_SDICMDARG);
++	writel(0, host->base + S3C2410_SDIDCON);
++	writel(0, host->base + S3C2410_SDICMDCON);
++	writel(0, host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK));
+ 
+-	/* enable interrupts for transmission errors */
+-	sdi_imsk |= S3C2410_SDIIMSK_RESPONSEND;
+-	sdi_imsk |= S3C2410_SDIIMSK_CRCSTATUS;
++	if (cmd->data && cmd->error)
++		cmd->data->error = cmd->error;
+ 
+-	host->complete_what = COMPLETION_CMDSENT;
++	if (cmd->data && cmd->data->stop && (!host->cmd_is_stop)) {
++		host->cmd_is_stop = 1;
++		s3c2410sdi_send_request(host->mmc);
++		return;
++	}
++	
++	/* If we have no data transfer we are finished here */
++	if (!mrq->data)
++		goto request_done;
++	
++	/* Calulate the amout of bytes transfer, but only if no error */
++	if (mrq->data->error == MMC_ERR_NONE)
++		mrq->data->bytes_xfered = 
++				(mrq->data->blocks << mrq->data->blksz_bits);
++	else
++		mrq->data->bytes_xfered = 0;
+ 
+-	if (mrq->cmd->flags & MMC_RSP_PRESENT) {
+-		host->complete_what = COMPLETION_RSPFIN;
++	/* If we had an error while transfering data we flush the
++	 * DMA channel and the fifo to clear out any garbage */
++	if (mrq->data->error != MMC_ERR_NONE) {
++		if (host->dodma)
++			s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);
++		
++		if (host->is2440) {
++			/* Clear failure register and reset fifo */
++			writel(S3C2440_SDIFSTA_FIFORESET |
++					S3C2440_SDIFSTA_FIFOFAIL,
++			host->base + S3C2410_SDIFSTA);
++		} else {
++			u32 sdi_con;
+ 
+-		sdi_ccon |= S3C2410_SDICMDCON_WAITRSP;
+-		sdi_imsk |= S3C2410_SDIIMSK_CMDTIMEOUT;
++			/* reset fifo */
++			sdi_con = readl(host->base + S3C2410_SDICON);
++			sdi_con|= S3C2410_SDICON_FIFORESET;
+ 
+-	} else {
+-		/* We need the CMDSENT-Interrupt only if we want are not waiting
+-		 * for a response
+-		 */
+-		sdi_imsk |= S3C2410_SDIIMSK_CMDSENT;
++			writel(sdi_con, host->base + S3C2410_SDICON);
++		}
+ 	}
+ 
+-	if(mrq->cmd->flags & MMC_RSP_136) {
+-		sdi_ccon|= S3C2410_SDICMDCON_LONGRSP;
++request_done:			
++	host->mrq = NULL;
++	mmc_request_done(host->mmc, mrq);
++}
++
++
++void s3c2410sdi_dma_setup(struct s3c2410sdi_host *host, eDMAPurpose_t purpose)
++{
++	static int setup_ok = 0;
++	static eDMAPurpose_t lp = -1;
++	s3c2410_dmasrc_t source;
++
++	if (lp == purpose)
++		return;
++
++	lp = purpose;
++	
++	switch (purpose) {
++		case DMAP_READ:
++			source  = S3C2410_DMASRC_HW;
++			break;
++
++		case DMAP_WRITE:
++			source  = S3C2410_DMASRC_MEM;
++			break;
++		
++		default:
++			return;
+ 	}
+ 
+-	if(mrq->cmd->flags & MMC_RSP_CRC) {
+-			sdi_imsk |= S3C2410_SDIIMSK_RESPONSECRC;
++	s3c2410_dma_devconfig(host->dma, source, 3, host->mem->start + 
++				((host->is2440)?S3C2440_SDIDATA:S3C2410_SDIDATA), 2);
++	if (!setup_ok) {
++		s3c2410_dma_config(host->dma, 4, (1<<23));
++		s3c2410_dma_set_buffdone_fn(host->dma, 
++					s3c2410sdi_dma_done_callback);
++		s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
++		setup_ok = 1;
+ 	}
++}
+ 
++static void s3c2440sdi_send_command(struct s3c2410sdi_host *host,
++				    struct mmc_command *cmd)
++{
++	u32 ccon, imsk;
+ 
+-	if (mrq->data) {
+-		host->complete_what = COMPLETION_XFERFINISH_RSPFIN;
++	imsk  = S3C2410_SDIIMSK_CRCSTATUS | S3C2410_SDIIMSK_CMDTIMEOUT |
++		S3C2410_SDIIMSK_RESPONSEND | S3C2410_SDIIMSK_CMDSENT |
++		S3C2410_SDIIMSK_RESPONSECRC;
+ 
+-		sdi_bsize = (1 << mrq->data->blksz_bits);
+-		host->size = mrq->data->blocks << mrq->data->blksz_bits;
++	enable_imask(host, imsk);
+ 
+-		sdi_dcon  = (mrq->data->blocks & S3C2410_SDIDCON_BLKNUM_MASK);
+-		sdi_dcon |= S3C2410_SDIDCON_DMAEN;
++	if (cmd->data) 
++		host->complete_what = COMPLETION_XFERFINISH_RSPFIN;
++	else if (cmd->flags & MMC_RSP_MASK) 
++		host->complete_what = COMPLETION_RSPFIN;
++	else
++		host->complete_what = COMPLETION_CMDSENT;
+ 
+-		sdi_imsk |= S3C2410_SDIIMSK_FIFOFAIL;
+-		sdi_imsk |= S3C2410_SDIIMSK_DATACRC;
+-		sdi_imsk |= S3C2410_SDIIMSK_DATATIMEOUT;
+-		sdi_imsk |= S3C2410_SDIIMSK_DATAFINISH;
+-		sdi_imsk |= 0xFFFFFFE0;
++	writel(cmd->arg, host->base + S3C2410_SDICMDARG);
+ 
+-		DBG(PFX "request: [DAT] bsize:%u blocks:%u bytes:%u\n",
+-			sdi_bsize, mrq->data->blocks, mrq->data->blocks * sdi_bsize);
++	ccon = cmd->opcode & S3C2410_SDICMDCON_INDEX;
++	ccon|= S3C2410_SDICMDCON_SENDERHOST | S3C2410_SDICMDCON_CMDSTART;
+ 
+-		if (host->bus_width == MMC_BUS_WIDTH_4) {
+-			sdi_dcon |= S3C2410_SDIDCON_WIDEBUS;
+-		}
++	if (cmd->flags & MMC_RSP_MASK)
++		ccon |= S3C2410_SDICMDCON_WAITRSP;
++
++	if (cmd->flags & MMC_RSP_136)
++		ccon|= S3C2410_SDICMDCON_LONGRSP;
++	/*	
++	DBG("Sending Command: CCON:[%08X] DCON:[%08X] BSIZE:[%08X] IMASK:[%08X] DCNT:[%08X]\n",
++	       ccon, readl(host->base + S3C2410_SDIDCON), readl(host->base + S3C2410_SDIBSIZE),
++	       readl(host->base + ((host->is2440)?S3C2440_SDIIMSK:S3C2410_SDIIMSK)),
++	       readl(host->base + S3C2410_SDIDCNT));
++	*/
++	writel(ccon, host->base + S3C2410_SDICMDCON);
++}
+ 
+-		if(!(mrq->data->flags & MMC_DATA_STREAM)) {
+-			sdi_dcon |= S3C2410_SDIDCON_BLOCKMODE;
+-		}
++static int s3c2440sdi_setup_data(struct s3c2410sdi_host *host, 
++				 struct mmc_data *data)
++{
++	u32 dcon, imsk, stoptries=3;
+ 
+-		if(mrq->data->flags & MMC_DATA_WRITE) {
+-			sdi_dcon |= S3C2410_SDIDCON_TXAFTERRESP;
+-			sdi_dcon |= S3C2410_SDIDCON_XFER_TXSTART;
++	/* write DCON register */
++	
++	if (!data) {
++		writel(0, host->base + S3C2410_SDIDCON);
++		return 0;
++	}
++	
++	while (readl(host->base + S3C2410_SDIDSTA) & 
++		     (S3C2410_SDIDSTA_TXDATAON | S3C2410_SDIDSTA_RXDATAON)) {
++		ERR("sdi_setup_data() transfer in progress. Trying to stop...\n");
++		
++		writel(0, host->base + S3C2410_SDIDCON);
++		s3c2410sdi_reset(host);
++		
++		if(0 == (stoptries--)) {
++			debug_dump_registers(host, "Data recovery:");
++					
++			/* TODO: get Controller out of data transfer mode */
++			return -EINVAL;
+ 		}
++	}	
++	
++	dcon  = data->blocks & S3C2410_SDIDCON_BLKNUM_MASK;
++	
++	if (host->dodma)
++		dcon |= S3C2410_SDIDCON_DMAEN;
+ 
+-		if(mrq->data->flags & MMC_DATA_READ) {
+-			sdi_dcon |= S3C2410_SDIDCON_RXAFTERCMD;
+-			sdi_dcon |= S3C2410_SDIDCON_XFER_RXSTART;
+-		}
++	if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4)
++		dcon |= S3C2410_SDIDCON_WIDEBUS;
+ 
+-		s3c2410sdi_dma_setup(host, mrq->data->flags & MMC_DATA_WRITE ? S3C2410_DMASRC_MEM : S3C2410_DMASRC_HW);
++	if (!(data->flags & MMC_DATA_STREAM))
++		dcon |= S3C2410_SDIDCON_BLOCKMODE;
++	
++	if (data->flags & MMC_DATA_WRITE) {
++		dcon |= S3C2410_SDIDCON_TXAFTERRESP;
++		dcon |= S3C2410_SDIDCON_XFER_TXSTART;
++	}
+ 
+-		/* see DMA-API.txt */
+-		dma_len = dma_map_sg(&pdev->dev, mrq->data->sg, \
+-				mrq->data->sg_len, \
+-				mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
+-
+-		/* start DMA */
+-		s3c2410_dma_enqueue(host->dma, (void *) host,
+-			sg_dma_address(&mrq->data->sg[0]),
+-			(mrq->data->blocks << mrq->data->blksz_bits) );
++	if (data->flags & MMC_DATA_READ) {
++		dcon |= S3C2410_SDIDCON_RXAFTERCMD;
++		dcon |= S3C2410_SDIDCON_XFER_RXSTART;	
+ 	}
+ 
+-	host->mrq = mrq;
++	if (host->is2440) {
++		dcon |= S3C2440_SDIDCON_DS_WORD;
++		dcon |= S3C2440_SDIDCON_DATSTART;
++	}
+ 
+-	init_completion(&host->complete_request);
+-	init_completion(&host->complete_dma);
++	writel(dcon, host->base + S3C2410_SDIDCON);
+ 
+-	/* Clear command and data status registers */
+-	writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT);
+-	writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA);
++	writel((1 << data->blksz_bits), host->base + S3C2410_SDIBSIZE);
++
++	imsk =	S3C2410_SDIIMSK_FIFOFAIL | S3C2410_SDIIMSK_DATACRC |
++		S3C2410_SDIIMSK_DATATIMEOUT | S3C2410_SDIIMSK_DATAFINISH;
++
++	enable_imask(host, imsk);
+ 
+-	/* Setup SDI controller */
+-	writel(sdi_bsize,host->base + S3C2410_SDIBSIZE);
+-	writel(sdi_timer,host->base + S3C2410_SDITIMER);
+-	writel(sdi_imsk,host->base + S3C2410_SDIIMSK);
+-
+-	/* Setup SDI command argument and data control */
+-	writel(sdi_carg, host->base + S3C2410_SDICMDARG);
+-	writel(sdi_dcon, host->base + S3C2410_SDIDCON);
+-
+-	/* This initiates transfer */
+-	writel(sdi_ccon, host->base + S3C2410_SDICMDCON);
+-
+-	/* Wait for transfer to complete */
+-	wait_for_completion(&host->complete_request);
+-	DBG(PFX "[CMD] request complete.\n");
+-	if(mrq->data) {
+-		wait_for_completion(&host->complete_dma);
+-		DBG(PFX "[DAT] DMA complete.\n");
++	if (host->is2440) 
++		writel(0x007FFFFF, host->base + S3C2410_SDITIMER);
++	else {
++		writel(0x0000FFFF, host->base + S3C2410_SDITIMER);
++	
++		/*FIX2410: set slow clock to prevent timeouts on read*/
++		if (data->flags & MMC_DATA_READ)
++			writel(255, host->base + S3C2410_SDIPRE);
+ 	}
++		
++	//debug_dump_registers(host, "Data setup:");
+ 	
+-	/* Cleanup controller */
+-	writel(0, host->base + S3C2410_SDICMDARG);
+-	writel(0, host->base + S3C2410_SDIDCON);
+-	writel(0, host->base + S3C2410_SDICMDCON);
+-	writel(0, host->base + S3C2410_SDIIMSK);
++	return 0;
++}
+ 
+-	/*  Read response */
+-	mrq->cmd->resp[0] = readl(host->base + S3C2410_SDIRSP0);
+-	mrq->cmd->resp[1] = readl(host->base + S3C2410_SDIRSP1);
+-	mrq->cmd->resp[2] = readl(host->base + S3C2410_SDIRSP2);
+-	mrq->cmd->resp[3] = readl(host->base + S3C2410_SDIRSP3);
++static int s3c2440sdi_prepare_pio(struct s3c2410sdi_host *host,
++				  struct mmc_data *data)
++{
++	int rw = (data->flags & MMC_DATA_WRITE)?1:0;
++	if(rw != ((data->flags & MMC_DATA_READ)?0:1)) return -EINVAL;
+ 
+-	host->mrq = NULL;
++	host->pio_sgptr = 0;
++	host->pio_words = 0;
++	host->pio_active = rw?XFER_WRITE:XFER_READ;
++	
++	if(rw) enable_imask(host, S3C2410_SDIIMSK_TXFIFOHALF);
++	else   enable_imask(host, S3C2410_SDIIMSK_RXFIFOHALF | S3C2410_SDIIMSK_RXFIFOFULL);
+ 
+-	DBG(PFX "request done.\n");
++	return 0;
++}
+ 
+-	/* If we have no data transfer we are finished here */
+-	if (!mrq->data) goto request_done;
++static int s3c2440sdi_prepare_dma(struct s3c2410sdi_host *host, 
++				  struct mmc_data *data)
++{
++	int dma_len, i;
++	int rw = (data->flags & MMC_DATA_WRITE)?1:0;
+ 
+-	dma_unmap_sg(&pdev->dev, mrq->data->sg, dma_len, \
+-			mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
++	if (rw != ((data->flags & MMC_DATA_READ)?0:1))
++		return -EINVAL;
+ 
+-	/* Calulate the amout of bytes transfer, but only if there was
+-	 * no error
+-	 */
+-	if(mrq->data->error == MMC_ERR_NONE) {
+-		mrq->data->bytes_xfered = (mrq->data->blocks << mrq->data->blksz_bits);
+-	} else {
+-		mrq->data->bytes_xfered = 0;
+-	}
++	s3c2410sdi_dma_setup(host, rw?DMAP_WRITE:DMAP_READ);
++	s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);
++				
++	dma_len = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
++				(rw)?DMA_TO_DEVICE:DMA_FROM_DEVICE);
++					
+ 
+-	/* If we had an error while transfering data we flush the
+-	 * DMA channel to clear out any garbage
+-	 */
+-	if(mrq->data->error != MMC_ERR_NONE) {
+-		s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);
+-		DBG(PFX "flushing DMA.\n");		
+-	}
++	if (dma_len == 0)
++		return -ENOMEM;
++
++	host->dma_complete = 0;
++	host->dmatogo = dma_len;	
++		
++	for (i = 0; i < dma_len; i++) {
++		int res;
++		DBG("dma_enqueue %i:[%u]@[%u]\n", i, 
++		    sg_dma_address(&data->sg[i]), sg_dma_len(&data->sg[i]));
++		res = s3c2410_dma_enqueue(host->dma, (void *) host, 
++					  sg_dma_address(&data->sg[i]),
++					  sg_dma_len(&data->sg[i]));
++		
++		if (res) {
++			s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);
++			return -EBUSY;
++		}
++ 	}
++	
++	//s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_START);
++
++	return 0;
++}
+ 
+-	if(mrq->data->stop) mmc_wait_for_cmd(mmc, mrq->data->stop, 3);
++static void s3c2410sdi_send_request(struct mmc_host *mmc)
++{
++	struct s3c2410sdi_host *host = mmc_priv(mmc);
++	struct mmc_request *mrq = host->mrq;
++	struct mmc_command *cmd = host->cmd_is_stop?mrq->stop:mrq->cmd;
++	
++	/* Increment request counters */
++	host->ccnt++;
++
++	if (cmd->data)
++		host->dcnt++;
++	
++	prepare_dbgmsg(host, cmd, host->cmd_is_stop);
++			
++	/* Clear command, data and fifo status registers
++	 * Fifo clear only necessary on 2440, but doesn't hurt on 2410 */
++	writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT);
++	writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA);
++	writel(0xFFFFFFFF, host->base + S3C2410_SDIFSTA);
+ 
+-request_done:
++	if (cmd->data) {
++		int res;
++		res = s3c2440sdi_setup_data(host, cmd->data);
++
++		if(res) {
++			cmd->error = MMC_ERR_DMA;
++			cmd->data->error = MMC_ERR_DMA;
++
++			mmc_request_done(mmc, mrq);
++			return;
++		} 
+ 
+-	mrq->done(mrq);
++	
++		if (host->dodma)
++			res = s3c2440sdi_prepare_dma(host, cmd->data);
++		else
++			res = s3c2440sdi_prepare_pio(host, cmd->data);
++
++		if (res) {
++			cmd->error = MMC_ERR_DMA;
++			cmd->data->error = MMC_ERR_DMA;
++
++			mmc_request_done(mmc, mrq);
++			return;
++		} 
++
++	}
++	
++	s3c2440sdi_send_command(host, cmd);	
++	enable_irq(host->irq);
+ }
+ 
+-static void s3c2410sdi_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) {
++static void s3c2410sdi_request(struct mmc_host *mmc, struct mmc_request *mrq)
++{
++ 	struct s3c2410sdi_host *host = mmc_priv(mmc);
++		
++	host->cmd_is_stop = 0;
++	host->mrq = mrq;
++	
++	s3c2410sdi_send_request(mmc);
++}
++
++static void s3c2410sdi_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
++{
+ 	struct s3c2410sdi_host *host = mmc_priv(mmc);
+ 	u32 sdi_psc, sdi_con;
+-
++	
+ 	/* Set power */
+ 	sdi_con = readl(host->base + S3C2410_SDICON);
+-	switch(ios->power_mode) {
+-		case MMC_POWER_ON:
+-		case MMC_POWER_UP:
+-			DBG(PFX "power on\n");
+-			s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK);
+-			s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD);
+-			s3c2410_gpio_cfgpin(S3C2410_GPE7, S3C2410_GPE7_SDDAT0);
+-			s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);
+-			s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);
+-			s3c2410_gpio_cfgpin(S3C2410_GPE10, S3C2410_GPE10_SDDAT3);
++	switch (ios->power_mode) {
++	case MMC_POWER_ON:
++	case MMC_POWER_UP:
++#ifdef CONFIG_MACH_TOMTOMGO
++		IO_Deactivate(SDCLK);
++		IO_SetFunction(SDCMD);
++		IO_SetFunction(SDDATA0);
++		IO_SetFunction(SDDATA1);
++		IO_SetFunction(SDDATA2);
++		IO_SetFunction(SDDATA3);
+ 
+-			if (host->pdata->set_power)
+-				(host->pdata->set_power)(1);
++		IO_Activate(SD_PWR_ON);
++		IO_SetFunction(SDCLK);
++#else
++		s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK);
++		s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD);
++		s3c2410_gpio_cfgpin(S3C2410_GPE7, S3C2410_GPE7_SDDAT0);
++		s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);
++		s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);
++		s3c2410_gpio_cfgpin(S3C2410_GPE10, S3C2410_GPE10_SDDAT3);
++#endif
+ 
++		if (!host->is2440)
+ 			sdi_con|= S3C2410_SDICON_FIFORESET;
+-			break;
++		break;
+ 
+-		case MMC_POWER_OFF:
+-		default:
+-			if (host->pdata->set_power)
+-				(host->pdata->set_power)(0);
+-			break;
++	case MMC_POWER_OFF:
++	default:
++#ifdef CONFIG_MACH_TOMTOMGO
++		IO_Deactivate(SDCLK);
++		IO_Deactivate(SDCMD);
++		IO_Deactivate(SDDATA0);
++		IO_Deactivate(SDDATA1);
++		IO_Deactivate(SDDATA2);
++		IO_Deactivate(SDDATA3);
++		IO_Deactivate(SD_PWR_ON);
++#else
++		s3c2410_gpio_setpin(S3C2410_GPE5, 0);
++		s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_OUTP);
++#endif
++		if (host->is2440)
++			sdi_con|=S3C2440_SDICON_SDRESET;
++		break;
+ 	}
+ 
+ 	/* Set clock */
+-	for(sdi_psc=0;sdi_psc<255;sdi_psc++) {
+-		if( (clk_get_rate(host->clk) / (2*(sdi_psc+1))) <= ios->clock) break;
++	for (sdi_psc = 0; sdi_psc < 255; sdi_psc++) {
++		host->real_rate = (clk_get_rate(host->clk) / 
++					(((host->is2440)?1:2)*(sdi_psc+1)));
++		if (host->real_rate <= ios->clock)
++			break;
+ 	}
+ 
+-	if(sdi_psc > 255) sdi_psc = 255;
+-	if (sdi_psc < 8) sdi_psc = 8;
+-	writel(sdi_psc, host->base + S3C2410_SDIPRE);
+-
++	if (sdi_psc > 255) 
++		sdi_psc = 255;
++	host->prescaler = sdi_psc;
++	
++	writel(host->prescaler, host->base + S3C2410_SDIPRE);
++	//writel(0xff, host->base + S3C2410_SDIPRE);
++	
++	/* If requested clock is 0, real_rate will be 0, too */
++	if (ios->clock == 0)
++		host->real_rate = 0;
++	
+ 	/* Set CLOCK_ENABLE */
+-	if(ios->clock) 	sdi_con |= S3C2410_SDICON_CLOCKTYPE;
+-	else		sdi_con &=~S3C2410_SDICON_CLOCKTYPE;
++	if (ios->clock)
++		sdi_con |= S3C2410_SDICON_CLOCKTYPE;
++	else
++		sdi_con &= ~S3C2410_SDICON_CLOCKTYPE;
+ 
+ 	writel(sdi_con, host->base + S3C2410_SDICON);
++	
++	if ((ios->power_mode==MMC_POWER_ON) ||
++	    (ios->power_mode==MMC_POWER_UP)) {
++		CONFDBG("SD/MMC slot is running at %lukHz (requested: %ukHz).\n", 
++		host->real_rate/1000, ios->clock/1000);	
++	} else
++		CONFDBG("SD/MMC slot is powered down.\n");
++}
+ 
+-	host->bus_width = ios->bus_width;
++static void s3c2410sdi_reset(struct s3c2410sdi_host *host)
++{
++	u32 con = readl(host->base + S3C2410_SDICON);
+ 
++	con |= S3C2440_SDICON_SDRESET;
++	
++	writel(con, host->base + S3C2410_SDICON);
+ }
+ 
+-static int s3c2410sdi_get_ro(struct mmc_host *mmc)
++/* FIXME: move this in platform-specific function */
++static int qt2410_get_ro(struct mmc_host *host)
+ {
+-	struct s3c2410sdi_host *host = mmc_priv(mmc);
+-	if (s3c2410_gpio_getpin(host->pdata->gpio_wprotect) != 0)
+-		return 1;
+-	else
+-		return 0;
+-}	
++	int ret = s3c2410_gpio_getpin(S3C2410_GPH8);
++	return ret ? 1 : 0;
++}
+ 
+ static struct mmc_host_ops s3c2410sdi_ops = {
+ 	.request	= s3c2410sdi_request,
+ 	.set_ios	= s3c2410sdi_set_ios,
+-	.get_ro		= s3c2410sdi_get_ro,
++	.get_ro		= qt2410_get_ro, 
+ };
+ 
+-static void s3c2410_mmc_def_setpower(unsigned int to)
+-{
+-	s3c2410_gpio_cfgpin(S3C2410_GPA17, S3C2410_GPIO_OUTPUT);
+-	s3c2410_gpio_setpin(S3C2410_GPA17, to);
+-}
+-
+-static struct s3c24xx_mmc_platdata s3c2410_mmc_defplat = {
+-	.gpio_detect	= S3C2410_GPF2,
+-	.set_power	= s3c2410_mmc_def_setpower,
+-	.f_max		= 3000000,
+-	.ocr_avail	= MMC_VDD_32_33,
+-};
+-
+-static int s3c2410sdi_probe(struct platform_device *pdev)
++static int s3c24xxsdi_probe(struct device *dev, int have_2440)
+ {
++	struct platform_device	*pdev = to_platform_device(dev);
+ 	struct mmc_host 	*mmc;
+-	s3c24xx_mmc_pdata_t	*pdata;
+ 	struct s3c2410sdi_host 	*host;
+ 
+-
+ 	int ret;
+ 
+-	mmc = mmc_alloc_host(sizeof(struct s3c2410sdi_host), &pdev->dev);
++	mmc = mmc_alloc_host(sizeof(struct s3c2410sdi_host), dev);
+ 	if (!mmc) {
+ 		ret = -ENOMEM;
+ 		goto probe_out;
+@@ -564,26 +1073,19 @@
+ 	host = mmc_priv(mmc);
+ 
+ 	spin_lock_init( &host->complete_lock );
++	host->is2440		= have_2440;
++	host->fix2410		= !have_2440;
++	host->dodma		= 0;
+ 	host->complete_what 	= COMPLETION_NONE;
++	host->pio_active 	= XFER_NONE;
++
+ 	host->mmc 		= mmc;
+ 	host->dma		= S3C2410SDI_DMA;
+-
+-	pdata = pdev->dev.platform_data;
+-	if (!pdata) {
+-		pdev->dev.platform_data = &s3c2410_mmc_defplat;
+-		pdata = &s3c2410_mmc_defplat;
+-	}
+-
+-	host->pdata = pdata;
+-
+-	host->irq_cd = s3c2410_gpio_getirq(pdata->gpio_detect);
+-	s3c2410_gpio_cfgpin(pdata->gpio_detect, S3C2410_GPIO_IRQ);
+-	if (pdata->gpio_wprotect)
+-		s3c2410_gpio_cfgpin(pdata->gpio_wprotect, S3C2410_GPIO_INPUT);
+-
++	host->irq_cd		= IRQ_EINT2;
++	
+ 	host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ 	if (!host->mem) {
+-		printk(KERN_ERR PFX "failed to get io memory region resouce.\n");
++		ERR("failed to get io memory region resouce.\n");
+ 		ret = -ENOENT;
+ 		goto probe_free_host;
+ 	}
+@@ -592,99 +1094,107 @@
+ 		RESSIZE(host->mem), pdev->name);
+ 
+ 	if (!host->mem) {
+-		printk(KERN_ERR PFX "failed to request io memory region.\n");
++		ERR("failed to request io memory region.\n");
+ 		ret = -ENOENT;
+ 		goto probe_free_host;
+ 	}
+ 
+ 	host->base = ioremap(host->mem->start, RESSIZE(host->mem));
+ 	if (host->base == 0) {
+-		printk(KERN_ERR PFX "failed to ioremap() io memory region.\n");
++		ERR("failed to ioremap() io memory region.\n");
+ 		ret = -EINVAL;
+ 		goto probe_free_mem_region;
+ 	}
+ 
+ 	host->irq = platform_get_irq(pdev, 0);
+ 	if (host->irq == 0) {
+-		printk(KERN_ERR PFX "failed to get interrupt resouce.\n");
++		ERR("failed to get interrupt resouce.\n");
+ 		ret = -EINVAL;
+ 		goto probe_iounmap;
+ 	}
+ 
+-	if(request_irq(host->irq, s3c2410sdi_irq, 0, DRIVER_NAME, host)) {
+-		printk(KERN_ERR PFX "failed to request sdi interrupt.\n");
++	if (request_irq(host->irq, s3c2410sdi_irq, 0, DRIVER_NAME, host)) {
++		ERR("failed to request sdi interrupt.\n");
+ 		ret = -ENOENT;
+ 		goto probe_iounmap;
+ 	}
+-
++	
++	disable_irq(host->irq);
++	
++#ifdef CONFIG_MACH_TOMTOMGO
++	IO_SetInterruptOnToggle(CD_SD);
++#else
++	s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_EINT2);
+ 	set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
+-	if(request_irq(host->irq_cd, s3c2410sdi_irq_cd, 0, DRIVER_NAME, host)) {
+-		printk(KERN_ERR PFX "failed to request card detect interrupt.\n" );
++#endif
++
++	if (request_irq(host->irq_cd, s3c2410sdi_irq_cd, 0, DRIVER_NAME, host)) {
++		ERR("failed to request card detect interrupt.\n" );
+ 		ret = -ENOENT;
+ 		goto probe_free_irq;
+ 	}
+ 
+-	if(s3c2410_dma_request(S3C2410SDI_DMA, &s3c2410sdi_dma_client, NULL)) {
+-		printk(KERN_ERR PFX "unable to get DMA channel.\n" );
++	if (s3c2410_dma_request(S3C2410SDI_DMA, &s3c2410sdi_dma_client, NULL)) {
++		ERR("unable to get DMA channel.\n" );
+ 		ret = -EBUSY;
+ 		goto probe_free_irq_cd;
+ 	}
+ 
+-	host->clk = clk_get(&pdev->dev, "sdi");
++	host->clk = clk_get(dev, "sdi");
+ 	if (IS_ERR(host->clk)) {
+-		printk(KERN_ERR PFX "failed to find clock source.\n");
++		ERR("failed to find clock source.\n");
+ 		ret = PTR_ERR(host->clk);
+ 		host->clk = NULL;
+ 		goto probe_free_host;
+ 	}
+ 
+-	if((ret = clk_enable(host->clk))) {
+-		printk(KERN_ERR PFX "failed to enable clock source.\n");
++#if 0
++	if ((ret = clk_use(host->clk))) {
++		ERR("failed to use clock source.\n");
++		goto clk_free;
++	}
++#endif
++
++	if ((ret = clk_enable(host->clk))) {
++		ERR("failed to enable clock source.\n");
+ 		goto clk_unuse;
+ 	}
+ 
+ 
+ 	mmc->ops 	= &s3c2410sdi_ops;
+-	mmc->ocr_avail	= pdata->ocr_avail;
+-	mmc->f_min 	= clk_get_rate(host->clk) / 512;
+-	mmc->f_max 	= clk_get_rate(host->clk) / 2;
+-	mmc->caps	= MMC_CAP_4_BIT_DATA;
+-
+-	if(pdata->f_max && (mmc->f_max>pdata->f_max))
+-		mmc->f_max = pdata->f_max;
+-
+-	/*
+-	 * Since we only have a 16-bit data length register, we must
+-	 * ensure that we don't exceed 2^16-1 bytes in a single request.
+-	 * Choose 64 (512-byte) sectors as the limit.
+-	 */
+-	mmc->max_sectors = 64;
++	mmc->ocr_avail	= MMC_VDD_32_33;
++	//mmc->caps	= MMC_CAP_4_BIT_DATA;
++	mmc->f_min 	= clk_get_rate(host->clk) / (((host->is2440)?1:2) * 256);
++	mmc->f_max 	= clk_get_rate(host->clk) / ((host->is2440)?1:2);
+ 
+-	/*
+-	 * Set the maximum segment size.  Since we aren't doing DMA
+-	 * (yet) we are only limited by the data length register.
+-	 */
+-
+-	mmc->max_seg_size = mmc->max_sectors << 9;
+-	printk(KERN_INFO PFX "probe: mapped sdi_base=%p irq=%u irq_cd=%u \n",
+-		host->base, host->irq, host->irq_cd);
++	mmc->max_sectors	= 4095;
++	mmc->max_seg_size	= mmc->max_sectors << 9;
++	
++	mmc->max_phys_segs	= 128;
++	mmc->max_hw_segs	= 128;
++	
++	DBG("probe: mode:%s fix2410:%s mapped sdi_base=%p irq=%u irq_cd=%u "
++	    "dma=%u.\n", (host->is2440?"2440":"2410"), 
++	    (host->fix2410?"enabled":"disabled"),
++	    host->base, host->irq, host->irq_cd, host->dma);
+ 
+-	if((ret = mmc_add_host(mmc))) {
+-		printk(KERN_ERR PFX "failed to add mmc host.\n");
+-		goto clk_disable;
++	if ((ret = mmc_add_host(mmc))) {
++		ERR("failed to add mmc host.\n");
++		goto free_dmabuf;
+ 	}
+ 
+-	platform_set_drvdata(pdev, mmc);
++	dev_set_drvdata(dev, mmc);
+ 
+-	mmc_detect_change(mmc, 0);
+-
+-	printk(KERN_INFO PFX "initialisation done.\n");
++	INFO("initialisation done.\n");
+ 	return 0;
+-	
+- clk_disable:
++
++ free_dmabuf:
+ 	clk_disable(host->clk);
+ 
+  clk_unuse:
++	//clk_unuse(host->clk);
++
++ clk_free:
+ 	clk_put(host->clk);
+ 
+  probe_free_irq_cd:
+@@ -705,13 +1215,14 @@
+ 	return ret;
+ }
+ 
+-static int s3c2410sdi_remove(struct platform_device *pdev)
++static int s3c2410sdi_remove(struct device *dev)
+ {
+-	struct mmc_host 	*mmc  = platform_get_drvdata(pdev);
++	struct mmc_host 	*mmc  = dev_get_drvdata(dev);
+ 	struct s3c2410sdi_host 	*host = mmc_priv(mmc);
+ 
+ 	mmc_remove_host(mmc);
+ 	clk_disable(host->clk);
++	//clk_unuse(host->clk);
+ 	clk_put(host->clk);
+  	free_irq(host->irq_cd, host);
+  	free_irq(host->irq, host);
+@@ -722,71 +1233,96 @@
+ 	return 0;
+ }
+ 
+-#ifdef CONFIG_PM
+-static int s3c2410mci_suspend(struct platform_device *dev, pm_message_t state)
+-{
+-	struct mmc_host *mmc = platform_get_drvdata(dev);
+-	struct s3c2410sdi_host  *host;
+-	int ret = 0;
+-
+-	if (mmc) {
+-		host = mmc_priv(mmc);
++/* FIXME: This is a coarse hack. Selection of mode should be done by adding different
++ *        devices (s3c2410-sdi or s3c2440-sdi) to the platform bus. */
+ 
+-		ret = mmc_suspend_host(mmc, state);
++static int s3c24xxsdi_probe_cpuid(struct device *dev)
++{
++	u32 idcode = __raw_readl(S3C2410_GSTATUS1) & S3C2410_GSTATUS1_IDMASK;
++	switch (idcode) {
++		case S3C2410_GSTATUS1_2410:
++			return s3c24xxsdi_probe(dev, 0);
+ 
+-		clk_disable(host->clk);
++		case S3C2410_GSTATUS1_2440:
++			return s3c24xxsdi_probe(dev, 1);
+ 
+-		disable_irq(host->irq_cd);
+-		disable_irq(host->irq);
++		default:
++			ERR("unkonown CPUID (0x%08x). Can't load driver.\n", idcode);
+ 	}
++	return -ENOENT;
++}
+ 
+-	return ret;
++#if 0
++static int s3c2410sdi_probe(struct device *dev)
++{
++	return s3c24xxsdi_probe(dev, 0);
+ }
+ 
+-static int s3c2410mci_resume(struct platform_device *dev)
++static int s3c2440sdi_probe(struct device *dev)
+ {
+-	struct mmc_host *mmc = platform_get_drvdata(dev);
+-	struct s3c2410sdi_host  *host;
+-	int ret = 0;
++	return s3c24xxsdi_probe(dev, 1);
++}
++#endif
+ 
+-	if (mmc) {
+-		host = mmc_priv(mmc);
++#ifdef CONFIG_PM
++static int s3c24XXsdi_suspend(struct device *dev, pm_message_t state)
++{
++	struct mmc_host *mmc = dev_get_drvdata(dev);
++	int ret = 0;
+ 
+-		enable_irq(host->irq_cd);
+-		enable_irq(host->irq);
++	if (mmc)
++		ret = mmc_suspend_host(mmc, state);
+ 
+-		clk_enable(host->clk);
++	return ret;
++}
+ 
++static int s3c24XXsdi_resume(struct device *dev)
++{
++	struct mmc_host *mmc = dev_get_drvdata(dev);
++	int ret = 0;
++	
++	if (mmc)
+ 		ret = mmc_resume_host(mmc);
+-	}
+ 
+ 	return ret;
+ }
+ #else
+-#define s3c2410mci_suspend	NULL
+-#define s3c2410mci_resume	NULL
++#define s3c24XXsdi_suspend NULL
++#define s3c24XXsdi_resume NULL
+ #endif
+ 
+-static struct platform_driver s3c2410sdi_driver =
++static struct device_driver s3c2410sdi_driver =
++{
++        .name           = "s3c2410-sdi",
++        .bus            = &platform_bus_type,
++        .probe          = s3c24xxsdi_probe_cpuid,
++        .remove         = s3c2410sdi_remove,
++		.suspend		= s3c24XXsdi_suspend,
++		.resume			= s3c24XXsdi_resume,
++};
++
++static struct device_driver s3c2440sdi_driver =
+ {
+-	.driver		= {
+-        	.name	= "s3c2410-sdi",
+-		.owner	= THIS_MODULE,
+-	},
+-        .probe          = s3c2410sdi_probe,
++        .name           = "s3c2440-sdi",
++        .bus            = &platform_bus_type,
++        .probe          = s3c24xxsdi_probe_cpuid,
+         .remove         = s3c2410sdi_remove,
+-	.suspend	= s3c2410mci_suspend,
+-	.resume		= s3c2410mci_resume,
++		.suspend		= s3c24XXsdi_suspend,
++		.resume			= s3c24XXsdi_resume,
+ };
+ 
++
+ static int __init s3c2410sdi_init(void)
+ {
+-	return platform_driver_register(&s3c2410sdi_driver);
++	driver_register(&s3c2410sdi_driver);
++	driver_register(&s3c2440sdi_driver);
++	return 0;
+ }
+ 
+ static void __exit s3c2410sdi_exit(void)
+ {
+-	platform_driver_unregister(&s3c2410sdi_driver);
++	driver_unregister(&s3c2410sdi_driver);
++	driver_unregister(&s3c2440sdi_driver);
+ }
+ 
+ module_init(s3c2410sdi_init);
+@@ -794,3 +1330,4 @@
+ 
+ MODULE_DESCRIPTION("Samsung S3C2410 Multimedia Card Interface driver");
+ MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Thomas Kleffel <tk at maintech.de>");
+Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.h
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/mmc/s3c2410mci.h	2006-08-07 17:35:41.000000000 +0200
++++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.h	2006-08-07 17:38:53.000000000 +0200
+@@ -10,10 +10,9 @@
+ 
+ struct clk;
+ 
++//FIXME: DMA Resource management ?!
+ #define S3C2410SDI_DMA 0
+ 
+-#define S3C2410SDI_CDLATENCY 50
+-
+ enum s3c2410sdi_waitfor {
+ 	COMPLETION_NONE,
+ 	COMPLETION_CMDSENT,
+@@ -22,11 +21,8 @@
+ 	COMPLETION_XFERFINISH_RSPFIN,
+ };
+ 
+-typedef struct s3c24xx_mmc_platdata s3c24xx_mmc_pdata_t;
+-
+ struct s3c2410sdi_host {
+ 	struct mmc_host		*mmc;
+-	s3c24xx_mmc_pdata_t	*pdata;
+ 
+ 	struct resource		*mem;
+ 	struct clk		*clk;
+@@ -34,22 +30,35 @@
+ 	int			irq;
+ 	int			irq_cd;
+ 	int			dma;
++	
++	unsigned long		real_rate;
++	u8			prescaler;
++
++	int			is2440;
++	int			fix2410;
++	int			dodma;
+ 
+-	struct scatterlist*	cur_sg;		/* Current SG entry */
+-	unsigned int		num_sg;		/* Number of entries left */
+-	void*			mapped_sg;	/* vaddr of mapped sg */
+-
+-	unsigned int		offset;		/* Offset into current entry */
+-	unsigned int		remain;		/* Data left in curren entry */
+-
+-	int			size;		/* Total size of transfer */
++	volatile int		dmatogo;
+ 
+ 	struct mmc_request	*mrq;
+-
+-	unsigned char		bus_width;	/* Current bus width */
++	int			cmd_is_stop;
+ 
+ 	spinlock_t		complete_lock;
+-	struct completion	complete_request;
+-	struct completion	complete_dma;
+-	enum s3c2410sdi_waitfor	complete_what;
++	volatile enum s3c2410sdi_waitfor	
++				complete_what;
++		
++	volatile int		dma_complete;
++	
++	u32			pio_sgptr;
++	u32			pio_words;
++	u32			*pio_ptr;
++#define XFER_NONE 0
++#define XFER_READ 1
++#define XFER_WRITE 2
++	u32			pio_active;
++	
++	char 			dbgmsg_cmd[301];
++	char 			dbgmsg_dat[301];
++
++	unsigned int		ccnt, dcnt;	
+ };
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/dma.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/dma.h	2006-08-07 17:35:41.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/dma.h	2006-08-07 17:38:53.000000000 +0200
+@@ -189,6 +189,7 @@
+ 	unsigned long          dev_addr;
+ 	unsigned long          load_timeout;
+ 	unsigned int           flags;        /* channel flags */
++	unsigned int           hwsrc;
+ 
+ 	/* channel's hardware position and configuration */
+ 	void __iomem           *regs;        /* channels registers */
+@@ -275,7 +276,8 @@
+ */
+ 
+ extern int s3c2410_dma_devconfig(int channel, s3c2410_dmasrc_t source,
+-				 int hwcfg, unsigned long devaddr);
++				 int hwcfg, unsigned long devaddr,
++				 unsigned int hwsrc);
+ 
+ /* s3c2410_dma_getposition
+  *
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-sdi.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/regs-sdi.h	2006-08-07 17:35:41.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-sdi.h	2006-08-07 17:38:53.000000000 +0200
+@@ -18,6 +18,7 @@
+ #ifndef __ASM_ARM_REGS_SDI
+ #define __ASM_ARM_REGS_SDI "regs-sdi.h"
+ 
++#define S3C2410_SDIREG(x)       ((x) + S3C24XX_VA_SDI)
+ #define S3C2410_SDICON                (0x00)
+ #define S3C2410_SDIPRE                (0x04)
+ #define S3C2410_SDICMDARG             (0x08)
+@@ -33,9 +34,16 @@
+ #define S3C2410_SDIDCNT               (0x30)
+ #define S3C2410_SDIDSTA               (0x34)
+ #define S3C2410_SDIFSTA               (0x38)
++
++//This is REALLY ugly!
+ #define S3C2410_SDIDATA               (0x3C)
+ #define S3C2410_SDIIMSK               (0x40)
+ 
++#define S3C2440_SDIDATA               (0x40)
++#define S3C2440_SDIIMSK               (0x3C)
++
++#define S3C2440_SDICON_SDRESET        (1<<8)
++#define S3C2440_SDICON_MMCCLOCK       (1<<5)
+ #define S3C2410_SDICON_BYTEORDER      (1<<4)
+ #define S3C2410_SDICON_SDIOIRQ        (1<<3)
+ #define S3C2410_SDICON_RWAITEN        (1<<2)
+@@ -57,6 +65,9 @@
+ #define S3C2410_SDICMDSTAT_XFERING    (1<<8)
+ #define S3C2410_SDICMDSTAT_INDEX      (0xff)
+ 
++#define S3C2440_SDIDCON_DS_BYTE       (0<<22)
++#define S3C2440_SDIDCON_DS_HALFWORD   (1<<22)
++#define S3C2440_SDIDCON_DS_WORD       (2<<22)
+ #define S3C2410_SDIDCON_IRQPERIOD     (1<<21)
+ #define S3C2410_SDIDCON_TXAFTERRESP   (1<<20)
+ #define S3C2410_SDIDCON_RXAFTERCMD    (1<<19)
+@@ -65,6 +76,7 @@
+ #define S3C2410_SDIDCON_WIDEBUS       (1<<16)
+ #define S3C2410_SDIDCON_DMAEN         (1<<15)
+ #define S3C2410_SDIDCON_STOP          (1<<14)
++#define S3C2440_SDIDCON_DATSTART      (1<<14)
+ #define S3C2410_SDIDCON_DATMODE	      (3<<12)
+ #define S3C2410_SDIDCON_BLKNUM        (0x7ff)
+ 
+@@ -89,10 +101,12 @@
+ #define S3C2410_SDIDSTA_TXDATAON      (1<<1)
+ #define S3C2410_SDIDSTA_RXDATAON      (1<<0)
+ 
++#define S3C2440_SDIFSTA_FIFORESET      (1<<16)
++#define S3C2440_SDIFSTA_FIFOFAIL       (3<<14)  /* 3 is correct (2 bits) */
+ #define S3C2410_SDIFSTA_TFDET          (1<<13)
+ #define S3C2410_SDIFSTA_RFDET          (1<<12)
+-#define S3C2410_SDIFSTA_TXHALF         (1<<11)
+-#define S3C2410_SDIFSTA_TXEMPTY        (1<<10)
++#define S3C2410_SDIFSTA_TFHALF         (1<<11)
++#define S3C2410_SDIFSTA_TFEMPTY        (1<<10)
+ #define S3C2410_SDIFSTA_RFLAST         (1<<9)
+ #define S3C2410_SDIFSTA_RFFULL         (1<<8)
+ #define S3C2410_SDIFSTA_RFHALF         (1<<7)

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/mmc.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/mmc.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/mmc.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,996 @@
+Index: linux-2.6.17.7-new/drivers/mmc/Kconfig
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/mmc/Kconfig	2006-08-07 09:32:34.000000000 +0200
++++ linux-2.6.17.7-new/drivers/mmc/Kconfig	2006-08-07 09:33:51.000000000 +0200
+@@ -82,6 +82,15 @@
+ 
+ 	  If unsure, say N.
+ 
++config MMC_S3C2410
++	tristate "Samsung S3C2410 Multimedia Card Interface support"
++	depends on ARCH_S3C2410 && MMC
++	help
++	  This selects the Samsung S3C2410 Multimedia Card Interface
++	  support.
++
++	  If unsure, say N.
++
+ config MMC_AU1X
+ 	tristate "Alchemy AU1XX0 MMC Card Interface support"
+ 	depends on MMC && SOC_AU1200
+Index: linux-2.6.17.7-new/drivers/mmc/Makefile
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/mmc/Makefile	2006-08-07 09:32:34.000000000 +0200
++++ linux-2.6.17.7-new/drivers/mmc/Makefile	2006-08-07 09:33:51.000000000 +0200
+@@ -20,6 +20,7 @@
+ obj-$(CONFIG_MMC_IMX)		+= imxmmc.o
+ obj-$(CONFIG_MMC_SDHCI)		+= sdhci.o
+ obj-$(CONFIG_MMC_WBSD)		+= wbsd.o
++obj-$(CONFIG_MMC_S3C2410)	+= s3c2410mci.o
+ obj-$(CONFIG_MMC_AU1X)		+= au1xmmc.o
+ obj-$(CONFIG_MMC_OMAP)		+= omap.o
+ obj-$(CONFIG_MMC_AT91RM9200)	+= at91_mci.o
+Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c	2006-08-07 09:33:51.000000000 +0200
+@@ -0,0 +1,781 @@
++/*
++ *  linux/drivers/mmc/s3c2410mci.h - Samsung S3C2410 SDI Interface driver
++ *
++ *  Copyright (C) 2004 Thomas Kleffel, 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 version 2 as
++ * published by the Free Software Foundation.
++ */
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/ioport.h>
++#include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/dma-mapping.h>
++#include <linux/mmc/host.h>
++#include <linux/mmc/protocol.h>
++#include <linux/clk.h>
++
++#include <asm/dma.h>
++#include <asm/dma-mapping.h>
++#include <asm/arch/dma.h>
++
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/mach/mmc.h>
++
++#include <asm/arch/regs-sdi.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/mmc.h>
++
++#ifdef CONFIG_MMC_DEBUG
++#define DBG(x...)       printk(KERN_INFO x)
++#else
++#define DBG(x...)       do { } while (0)
++#endif
++
++#include "s3c2410mci.h"
++
++#define DRIVER_NAME "mmci-s3c2410"
++#define PFX DRIVER_NAME ": "
++
++#define RESSIZE(ressource) (((ressource)->end - (ressource)->start)+1)
++
++static struct s3c2410_dma_client s3c2410sdi_dma_client = {
++	.name		= "s3c2410-sdi",
++};
++
++/*
++ * ISR for SDI Interface IRQ
++ * Communication between driver and ISR works as follows:
++ *   host->mrq 			points to current request
++ *   host->complete_what	tells the ISR when the request is considered done
++ *     COMPLETION_CMDSENT	  when the command was sent
++ *     COMPLETION_RSPFIN          when a response was received
++ *     COMPLETION_XFERFINISH	  when the data transfer is finished
++ *     COMPLETION_XFERFINISH_RSPFIN both of the above.
++ *   host->complete_request	is the completion-object the driver waits for
++ *
++ * 1) Driver sets up host->mrq and host->complete_what
++ * 2) Driver prepares the transfer
++ * 3) Driver enables interrupts
++ * 4) Driver starts transfer
++ * 5) Driver waits for host->complete_rquest
++ * 6) ISR checks for request status (errors and success)
++ * 6) ISR sets host->mrq->cmd->error and host->mrq->data->error
++ * 7) ISR completes host->complete_request
++ * 8) ISR disables interrupts
++ * 9) Driver wakes up and takes care of the request
++*/
++
++static irqreturn_t s3c2410sdi_irq(int irq, void *dev_id, struct pt_regs *regs)
++{
++	struct s3c2410sdi_host *host;
++	u32 sdi_csta, sdi_dsta, sdi_dcnt;
++	u32 sdi_cclear, sdi_dclear;
++	unsigned long iflags;
++
++	host = (struct s3c2410sdi_host *)dev_id;
++
++	/* Check for things not supposed to happen */
++	if(!host) return IRQ_HANDLED;
++	
++	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
++	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
++	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
++	
++	DBG(PFX "IRQ csta=0x%08x dsta=0x%08x dcnt:0x%08x\n", sdi_csta, sdi_dsta, sdi_dcnt);
++		
++	spin_lock_irqsave( &host->complete_lock, iflags);
++	
++	if( host->complete_what==COMPLETION_NONE ) {
++		goto clear_imask;
++	}
++	
++	if(!host->mrq) { 
++		goto clear_imask;
++	}
++
++	
++	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
++	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
++	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
++	sdi_cclear	= 0;
++	sdi_dclear	= 0;
++	
++	
++	if(sdi_csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
++		host->mrq->cmd->error = MMC_ERR_TIMEOUT;
++		goto transfer_closed;
++	}
++
++	if(sdi_csta & S3C2410_SDICMDSTAT_CMDSENT) {
++		if(host->complete_what == COMPLETION_CMDSENT) {
++			host->mrq->cmd->error = MMC_ERR_NONE;
++			goto transfer_closed;
++		}
++
++		sdi_cclear |= S3C2410_SDICMDSTAT_CMDSENT;
++	}
++
++	if(sdi_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
++		if (host->mrq->cmd->flags & MMC_RSP_136) {
++			DBG(PFX "s3c2410 fixup : ignore CRC fail with long rsp\n");
++		}
++		else {
++			DBG(PFX "COMMAND CRC FAILED %x\n", sdi_csta);
++			if(host->mrq->cmd->flags & MMC_RSP_CRC) {
++				host->mrq->cmd->error = MMC_ERR_BADCRC;
++				goto transfer_closed;
++			}
++		}
++		sdi_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;
++	}
++
++	if(sdi_csta & S3C2410_SDICMDSTAT_RSPFIN) {
++		if(host->complete_what == COMPLETION_RSPFIN) {
++			host->mrq->cmd->error = MMC_ERR_NONE;
++			goto transfer_closed;
++		}
++
++		if(host->complete_what == COMPLETION_XFERFINISH_RSPFIN) {
++			host->mrq->cmd->error = MMC_ERR_NONE;
++			host->complete_what = COMPLETION_XFERFINISH;
++		}
++
++		sdi_cclear |= S3C2410_SDICMDSTAT_RSPFIN;
++	}
++
++	if(sdi_dsta & S3C2410_SDIDSTA_FIFOFAIL) {
++		host->mrq->cmd->error = MMC_ERR_NONE;
++		host->mrq->data->error = MMC_ERR_FIFO;
++		goto transfer_closed;
++	}
++
++	if(sdi_dsta & S3C2410_SDIDSTA_RXCRCFAIL) {
++		host->mrq->cmd->error = MMC_ERR_NONE;
++		host->mrq->data->error = MMC_ERR_BADCRC;
++		goto transfer_closed;
++	}
++
++	if(sdi_dsta & S3C2410_SDIDSTA_CRCFAIL) {
++		DBG(PFX "DATA CRC FAILED %u\n", sdi_csta);
++		host->mrq->cmd->error = MMC_ERR_NONE;
++		host->mrq->data->error = MMC_ERR_BADCRC;
++		goto transfer_closed;
++	}
++
++	if(sdi_dsta & S3C2410_SDIDSTA_DATATIMEOUT) {
++		host->mrq->cmd->error = MMC_ERR_NONE;
++		host->mrq->data->error = MMC_ERR_TIMEOUT;
++		goto transfer_closed;
++	}
++
++	if(sdi_dsta & S3C2410_SDIDSTA_XFERFINISH) {
++		if(host->complete_what == COMPLETION_XFERFINISH) {
++			host->mrq->cmd->error = MMC_ERR_NONE;
++			host->mrq->data->error = MMC_ERR_NONE;
++			goto transfer_closed;
++		}
++
++		if(host->complete_what == COMPLETION_XFERFINISH_RSPFIN) {
++			host->mrq->data->error = MMC_ERR_NONE;
++			host->complete_what = COMPLETION_RSPFIN;
++		}
++
++		sdi_dclear |= S3C2410_SDIDSTA_XFERFINISH;
++	}
++
++	writel(sdi_cclear, host->base + S3C2410_SDICMDSTAT);
++	writel(sdi_dclear, host->base + S3C2410_SDIDSTA);
++
++	spin_unlock_irqrestore( &host->complete_lock, iflags);
++	DBG(PFX "IRQ still waiting.\n");
++	return IRQ_HANDLED;
++
++
++transfer_closed:
++	writel(sdi_cclear, host->base + S3C2410_SDICMDSTAT);
++	writel(sdi_dclear, host->base + S3C2410_SDIDSTA);
++	host->complete_what = COMPLETION_NONE;
++	complete(&host->complete_request);
++	writel(0, host->base + S3C2410_SDIIMSK);
++	spin_unlock_irqrestore( &host->complete_lock, iflags);
++	DBG(PFX "IRQ transfer closed.\n");
++	return IRQ_HANDLED;
++	
++clear_imask:
++	writel(0, host->base + S3C2410_SDIIMSK);
++	spin_unlock_irqrestore( &host->complete_lock, iflags);
++	DBG(PFX "IRQ clear imask.\n");
++	return IRQ_HANDLED;
++
++}
++
++
++/*
++ * ISR for the CardDetect Pin
++*/
++
++static irqreturn_t s3c2410sdi_irq_cd(int irq, void *dev_id, struct pt_regs *regs)
++{
++	struct s3c2410sdi_host *host = (struct s3c2410sdi_host *)dev_id;
++	mmc_detect_change(host->mmc, S3C2410SDI_CDLATENCY);
++
++	return IRQ_HANDLED;
++}
++
++
++
++static void s3c2410sdi_dma_done_callback(s3c2410_dma_chan_t *dma_ch, void *buf_id,
++	int size, s3c2410_dma_buffresult_t result)
++{	unsigned long iflags;
++	u32 sdi_csta, sdi_dsta,sdi_dcnt;
++	struct s3c2410sdi_host *host = (struct s3c2410sdi_host *)buf_id;
++	
++	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
++	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
++	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
++	
++	DBG(PFX "DMAD csta=0x%08x dsta=0x%08x dcnt:0x%08x result:0x%08x\n", sdi_csta, sdi_dsta, sdi_dcnt, result);
++	
++	spin_lock_irqsave( &host->complete_lock, iflags);
++	
++	if(!host->mrq) goto out;
++	if(!host->mrq->data) goto out;
++	
++	
++	sdi_csta 	= readl(host->base + S3C2410_SDICMDSTAT);
++	sdi_dsta 	= readl(host->base + S3C2410_SDIDSTA);
++	sdi_dcnt 	= readl(host->base + S3C2410_SDIDCNT);
++		
++	if( result!=S3C2410_RES_OK ) {
++		goto fail_request;
++	}
++	
++	
++	if(host->mrq->data->flags & MMC_DATA_READ) {
++		if( sdi_dcnt>0 ) {
++			goto fail_request;
++		}
++	}
++	
++out:	
++	complete(&host->complete_dma);
++	spin_unlock_irqrestore( &host->complete_lock, iflags);
++	return;
++
++
++fail_request:
++	host->mrq->data->error = MMC_ERR_FAILED;
++	host->complete_what = COMPLETION_NONE;
++	complete(&host->complete_request);
++	writel(0, host->base + S3C2410_SDIIMSK);
++	goto out;
++
++}
++
++
++static void s3c2410sdi_dma_setup(struct s3c2410sdi_host *host, s3c2410_dmasrc_t source) {
++	
++	s3c2410_dma_devconfig(host->dma, source, 3, host->mem->start + S3C2410_SDIDATA);
++	s3c2410_dma_config(host->dma, 4, (1<<23) | (2<<24));
++	s3c2410_dma_set_buffdone_fn(host->dma, s3c2410sdi_dma_done_callback);
++	s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
++}
++
++static void s3c2410sdi_request(struct mmc_host *mmc, struct mmc_request *mrq) {
++ 	struct s3c2410sdi_host *host = mmc_priv(mmc);
++	struct device *dev = mmc_dev(host->mmc);
++	struct platform_device *pdev = to_platform_device(dev);
++	u32 sdi_carg, sdi_ccon, sdi_timer;
++	u32 sdi_bsize, sdi_dcon, sdi_imsk;
++	int dma_len = 0;
++
++	DBG(KERN_DEBUG PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
++		mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
++	DBG(PFX "request : %s mode\n",mmc->mode == MMC_MODE_MMC ? "mmc" : "sd");
++
++
++	sdi_ccon = mrq->cmd->opcode & S3C2410_SDICMDCON_INDEX;
++	sdi_ccon|= S3C2410_SDICMDCON_SENDERHOST;
++	sdi_ccon|= S3C2410_SDICMDCON_CMDSTART;
++
++	sdi_carg = mrq->cmd->arg;
++
++	sdi_timer= 0xFFFF;
++
++	sdi_bsize= 0;
++	sdi_dcon = 0;
++	sdi_imsk = 0;
++
++	/* enable interrupts for transmission errors */
++	sdi_imsk |= S3C2410_SDIIMSK_RESPONSEND;
++	sdi_imsk |= S3C2410_SDIIMSK_CRCSTATUS;
++
++	host->complete_what = COMPLETION_CMDSENT;
++
++	if (mrq->cmd->flags & MMC_RSP_PRESENT) {
++		host->complete_what = COMPLETION_RSPFIN;
++
++		sdi_ccon |= S3C2410_SDICMDCON_WAITRSP;
++		sdi_imsk |= S3C2410_SDIIMSK_CMDTIMEOUT;
++
++	} else {
++		/* We need the CMDSENT-Interrupt only if we want are not waiting
++		 * for a response
++		 */
++		sdi_imsk |= S3C2410_SDIIMSK_CMDSENT;
++	}
++
++	if(mrq->cmd->flags & MMC_RSP_136) {
++		sdi_ccon|= S3C2410_SDICMDCON_LONGRSP;
++	}
++
++	if(mrq->cmd->flags & MMC_RSP_CRC) {
++			sdi_imsk |= S3C2410_SDIIMSK_RESPONSECRC;
++	}
++
++
++	if (mrq->data) {
++		host->complete_what = COMPLETION_XFERFINISH_RSPFIN;
++
++		sdi_bsize = (1 << mrq->data->blksz_bits);
++		host->size = mrq->data->blocks << mrq->data->blksz_bits;
++
++		sdi_dcon  = (mrq->data->blocks & S3C2410_SDIDCON_BLKNUM_MASK);
++		sdi_dcon |= S3C2410_SDIDCON_DMAEN;
++
++		sdi_imsk |= S3C2410_SDIIMSK_FIFOFAIL;
++		sdi_imsk |= S3C2410_SDIIMSK_DATACRC;
++		sdi_imsk |= S3C2410_SDIIMSK_DATATIMEOUT;
++		sdi_imsk |= S3C2410_SDIIMSK_DATAFINISH;
++		sdi_imsk |= 0xFFFFFFE0;
++
++		DBG(PFX "request: [DAT] bsize:%u blocks:%u bytes:%u\n",
++			sdi_bsize, mrq->data->blocks, mrq->data->blocks * sdi_bsize);
++
++		if (host->bus_width == MMC_BUS_WIDTH_4) {
++			sdi_dcon |= S3C2410_SDIDCON_WIDEBUS;
++		}
++
++		if(!(mrq->data->flags & MMC_DATA_STREAM)) {
++			sdi_dcon |= S3C2410_SDIDCON_BLOCKMODE;
++		}
++
++		if(mrq->data->flags & MMC_DATA_WRITE) {
++			sdi_dcon |= S3C2410_SDIDCON_TXAFTERRESP;
++			sdi_dcon |= S3C2410_SDIDCON_XFER_TXSTART;
++		}
++
++		if(mrq->data->flags & MMC_DATA_READ) {
++			sdi_dcon |= S3C2410_SDIDCON_RXAFTERCMD;
++			sdi_dcon |= S3C2410_SDIDCON_XFER_RXSTART;
++		}
++
++		s3c2410sdi_dma_setup(host, mrq->data->flags & MMC_DATA_WRITE ? S3C2410_DMASRC_MEM : S3C2410_DMASRC_HW);
++
++		/* see DMA-API.txt */
++		dma_len = dma_map_sg(&pdev->dev, mrq->data->sg, \
++				mrq->data->sg_len, \
++				mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
++
++		/* start DMA */
++		s3c2410_dma_enqueue(host->dma, (void *) host,
++			sg_dma_address(&mrq->data->sg[0]),
++			(mrq->data->blocks << mrq->data->blksz_bits) );
++	}
++
++	host->mrq = mrq;
++
++	init_completion(&host->complete_request);
++	init_completion(&host->complete_dma);
++
++	/* Clear command and data status registers */
++	writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT);
++	writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA);
++
++	/* Setup SDI controller */
++	writel(sdi_bsize,host->base + S3C2410_SDIBSIZE);
++	writel(sdi_timer,host->base + S3C2410_SDITIMER);
++	writel(sdi_imsk,host->base + S3C2410_SDIIMSK);
++
++	/* Setup SDI command argument and data control */
++	writel(sdi_carg, host->base + S3C2410_SDICMDARG);
++	writel(sdi_dcon, host->base + S3C2410_SDIDCON);
++
++	/* This initiates transfer */
++	writel(sdi_ccon, host->base + S3C2410_SDICMDCON);
++
++	/* Wait for transfer to complete */
++	wait_for_completion(&host->complete_request);
++	DBG(PFX "[CMD] request complete.\n");
++	if(mrq->data) {
++		wait_for_completion(&host->complete_dma);
++		DBG(PFX "[DAT] DMA complete.\n");
++	}
++	
++	/* Cleanup controller */
++	writel(0, host->base + S3C2410_SDICMDARG);
++	writel(0, host->base + S3C2410_SDIDCON);
++	writel(0, host->base + S3C2410_SDICMDCON);
++	writel(0, host->base + S3C2410_SDIIMSK);
++
++	/*  Read response */
++	mrq->cmd->resp[0] = readl(host->base + S3C2410_SDIRSP0);
++	mrq->cmd->resp[1] = readl(host->base + S3C2410_SDIRSP1);
++	mrq->cmd->resp[2] = readl(host->base + S3C2410_SDIRSP2);
++	mrq->cmd->resp[3] = readl(host->base + S3C2410_SDIRSP3);
++
++	host->mrq = NULL;
++
++	DBG(PFX "request done.\n");
++
++	/* If we have no data transfer we are finished here */
++	if (!mrq->data) goto request_done;
++
++	dma_unmap_sg(&pdev->dev, mrq->data->sg, dma_len, \
++			mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
++
++	/* Calulate the amout of bytes transfer, but only if there was
++	 * no error
++	 */
++	if(mrq->data->error == MMC_ERR_NONE) {
++		mrq->data->bytes_xfered = (mrq->data->blocks << mrq->data->blksz_bits);
++	} else {
++		mrq->data->bytes_xfered = 0;
++	}
++
++	/* If we had an error while transfering data we flush the
++	 * DMA channel to clear out any garbage
++	 */
++	if(mrq->data->error != MMC_ERR_NONE) {
++		s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);
++		DBG(PFX "flushing DMA.\n");		
++	}
++
++	if(mrq->data->stop) mmc_wait_for_cmd(mmc, mrq->data->stop, 3);
++
++request_done:
++
++	mrq->done(mrq);
++}
++
++static void s3c2410sdi_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) {
++	struct s3c2410sdi_host *host = mmc_priv(mmc);
++	u32 sdi_psc, sdi_con;
++
++	/* Set power */
++	sdi_con = readl(host->base + S3C2410_SDICON);
++	switch(ios->power_mode) {
++		case MMC_POWER_ON:
++		case MMC_POWER_UP:
++			DBG(PFX "power on\n");
++			s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK);
++			s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD);
++			s3c2410_gpio_cfgpin(S3C2410_GPE7, S3C2410_GPE7_SDDAT0);
++			s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);
++			s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);
++			s3c2410_gpio_cfgpin(S3C2410_GPE10, S3C2410_GPE10_SDDAT3);
++
++			if (host->pdata->set_power)
++				(host->pdata->set_power)(1);
++
++			sdi_con|= S3C2410_SDICON_FIFORESET;
++			break;
++
++		case MMC_POWER_OFF:
++		default:
++			if (host->pdata->set_power)
++				(host->pdata->set_power)(0);
++			break;
++	}
++
++	/* Set clock */
++	for(sdi_psc=0;sdi_psc<255;sdi_psc++) {
++		if( (clk_get_rate(host->clk) / (2*(sdi_psc+1))) <= ios->clock) break;
++	}
++
++	if(sdi_psc > 255) sdi_psc = 255;
++	writel(sdi_psc, host->base + S3C2410_SDIPRE);
++
++	/* Set CLOCK_ENABLE */
++	if(ios->clock) 	sdi_con |= S3C2410_SDICON_CLOCKTYPE;
++	else		sdi_con &=~S3C2410_SDICON_CLOCKTYPE;
++
++	writel(sdi_con, host->base + S3C2410_SDICON);
++
++	host->bus_width = ios->bus_width;
++
++}
++
++static struct mmc_host_ops s3c2410sdi_ops = {
++	.request	= s3c2410sdi_request,
++	.set_ios	= s3c2410sdi_set_ios,
++};
++
++static void s3c2410_mmc_def_setpower(unsigned int to)
++{
++	s3c2410_gpio_cfgpin(S3C2410_GPA17, S3C2410_GPIO_OUTPUT);
++	s3c2410_gpio_setpin(S3C2410_GPA17, to);
++}
++
++static struct s3c24xx_mmc_platdata s3c2410_mmc_defplat = {
++	.gpio_detect	= S3C2410_GPF2,
++	.set_power	= s3c2410_mmc_def_setpower,
++	.f_max		= 3000000,
++	.ocr_avail	= MMC_VDD_32_33,
++};
++
++static int s3c2410sdi_probe(struct platform_device *pdev)
++{
++	struct mmc_host 	*mmc;
++	s3c24xx_mmc_pdata_t	*pdata;
++	struct s3c2410sdi_host 	*host;
++
++
++	int ret;
++
++	mmc = mmc_alloc_host(sizeof(struct s3c2410sdi_host), &pdev->dev);
++	if (!mmc) {
++		ret = -ENOMEM;
++		goto probe_out;
++	}
++
++	host = mmc_priv(mmc);
++
++	spin_lock_init( &host->complete_lock );
++	host->complete_what 	= COMPLETION_NONE;
++	host->mmc 		= mmc;
++	host->dma		= S3C2410SDI_DMA;
++
++	pdata = pdev->dev.platform_data;
++	if (!pdata) {
++		pdev->dev.platform_data = &s3c2410_mmc_defplat;
++		pdata = &s3c2410_mmc_defplat;
++	}
++
++	host->pdata = pdata;
++
++	host->irq_cd = s3c2410_gpio_getirq(pdata->gpio_detect);
++	s3c2410_gpio_cfgpin(pdata->gpio_detect, S3C2410_GPIO_IRQ);
++
++	host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++	if (!host->mem) {
++		printk(KERN_ERR PFX "failed to get io memory region resouce.\n");
++		ret = -ENOENT;
++		goto probe_free_host;
++	}
++
++	host->mem = request_mem_region(host->mem->start,
++		RESSIZE(host->mem), pdev->name);
++
++	if (!host->mem) {
++		printk(KERN_ERR PFX "failed to request io memory region.\n");
++		ret = -ENOENT;
++		goto probe_free_host;
++	}
++
++	host->base = ioremap(host->mem->start, RESSIZE(host->mem));
++	if (host->base == 0) {
++		printk(KERN_ERR PFX "failed to ioremap() io memory region.\n");
++		ret = -EINVAL;
++		goto probe_free_mem_region;
++	}
++
++	host->irq = platform_get_irq(pdev, 0);
++	if (host->irq == 0) {
++		printk(KERN_ERR PFX "failed to get interrupt resouce.\n");
++		ret = -EINVAL;
++		goto probe_iounmap;
++	}
++
++	if(request_irq(host->irq, s3c2410sdi_irq, 0, DRIVER_NAME, host)) {
++		printk(KERN_ERR PFX "failed to request sdi interrupt.\n");
++		ret = -ENOENT;
++		goto probe_iounmap;
++	}
++
++	set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
++	if(request_irq(host->irq_cd, s3c2410sdi_irq_cd, 0, DRIVER_NAME, host)) {
++		printk(KERN_ERR PFX "failed to request card detect interrupt.\n" );
++		ret = -ENOENT;
++		goto probe_free_irq;
++	}
++
++	if(s3c2410_dma_request(S3C2410SDI_DMA, &s3c2410sdi_dma_client, NULL)) {
++		printk(KERN_ERR PFX "unable to get DMA channel.\n" );
++		ret = -EBUSY;
++		goto probe_free_irq_cd;
++	}
++
++	host->clk = clk_get(&pdev->dev, "sdi");
++	if (IS_ERR(host->clk)) {
++		printk(KERN_ERR PFX "failed to find clock source.\n");
++		ret = PTR_ERR(host->clk);
++		host->clk = NULL;
++		goto probe_free_host;
++	}
++
++	if((ret = clk_enable(host->clk))) {
++		printk(KERN_ERR PFX "failed to enable clock source.\n");
++		goto clk_unuse;
++	}
++
++
++	mmc->ops 	= &s3c2410sdi_ops;
++	mmc->ocr_avail	= pdata->ocr_avail;
++	mmc->f_min 	= clk_get_rate(host->clk) / 512;
++	mmc->f_max 	= clk_get_rate(host->clk) / 2;
++	mmc->caps	= MMC_CAP_4_BIT_DATA;
++
++	if(pdata->f_max && (mmc->f_max>pdata->f_max))
++		mmc->f_max = pdata->f_max;
++
++	/*
++	 * Since we only have a 16-bit data length register, we must
++	 * ensure that we don't exceed 2^16-1 bytes in a single request.
++	 * Choose 64 (512-byte) sectors as the limit.
++	 */
++	mmc->max_sectors = 64;
++
++	/*
++	 * Set the maximum segment size.  Since we aren't doing DMA
++	 * (yet) we are only limited by the data length register.
++	 */
++
++	mmc->max_seg_size = mmc->max_sectors << 9;
++	printk(KERN_INFO PFX "probe: mapped sdi_base=%p irq=%u irq_cd=%u \n",
++		host->base, host->irq, host->irq_cd);
++
++	if((ret = mmc_add_host(mmc))) {
++		printk(KERN_ERR PFX "failed to add mmc host.\n");
++		goto clk_disable;
++	}
++
++	platform_set_drvdata(pdev, mmc);
++
++	mmc_detect_change(mmc, 0);
++
++	printk(KERN_INFO PFX "initialisation done.\n");
++	return 0;
++	
++ clk_disable:
++	clk_disable(host->clk);
++
++ clk_unuse:
++	clk_put(host->clk);
++
++ probe_free_irq_cd:
++ 	free_irq(host->irq_cd, host);
++
++ probe_free_irq:
++ 	free_irq(host->irq, host);
++
++ probe_iounmap:
++	iounmap(host->base);
++
++ probe_free_mem_region:
++	release_mem_region(host->mem->start, RESSIZE(host->mem));
++
++ probe_free_host:
++	mmc_free_host(mmc);
++ probe_out:
++	return ret;
++}
++
++static int s3c2410sdi_remove(struct platform_device *pdev)
++{
++	struct mmc_host 	*mmc  = platform_get_drvdata(pdev);
++	struct s3c2410sdi_host 	*host = mmc_priv(mmc);
++
++	mmc_remove_host(mmc);
++	clk_disable(host->clk);
++	clk_put(host->clk);
++ 	free_irq(host->irq_cd, host);
++ 	free_irq(host->irq, host);
++	iounmap(host->base);
++	release_mem_region(host->mem->start, RESSIZE(host->mem));
++	mmc_free_host(mmc);
++
++	return 0;
++}
++
++#ifdef CONFIG_PM
++static int s3c2410mci_suspend(struct platform_device *dev, pm_message_t state)
++{
++	struct mmc_host *mmc = platform_get_drvdata(dev);
++	struct s3c2410sdi_host  *host;
++	int ret = 0;
++
++	if (mmc) {
++		host = mmc_priv(mmc);
++
++		ret = mmc_suspend_host(mmc, state);
++
++		clk_disable(host->clk);
++
++		disable_irq(host->irq_cd);
++		disable_irq(host->irq);
++	}
++
++	return ret;
++}
++
++static int s3c2410mci_resume(struct platform_device *dev)
++{
++	struct mmc_host *mmc = platform_get_drvdata(dev);
++	struct s3c2410sdi_host  *host;
++	int ret = 0;
++
++	if (mmc) {
++		host = mmc_priv(mmc);
++
++		enable_irq(host->irq_cd);
++		enable_irq(host->irq);
++
++		clk_enable(host->clk);
++
++		ret = mmc_resume_host(mmc);
++	}
++
++	return ret;
++}
++#else
++#define s3c2410mci_suspend	NULL
++#define s3c2410mci_resume	NULL
++#endif
++
++static struct platform_driver s3c2410sdi_driver =
++{
++	.driver		= {
++        	.name	= "s3c2410-sdi",
++		.owner	= THIS_MODULE,
++	},
++        .probe          = s3c2410sdi_probe,
++        .remove         = s3c2410sdi_remove,
++	.suspend	= s3c2410mci_suspend,
++	.resume		= s3c2410mci_resume,
++};
++
++static int __init s3c2410sdi_init(void)
++{
++	return platform_driver_register(&s3c2410sdi_driver);
++}
++
++static void __exit s3c2410sdi_exit(void)
++{
++	platform_driver_unregister(&s3c2410sdi_driver);
++}
++
++module_init(s3c2410sdi_init);
++module_exit(s3c2410sdi_exit);
++
++MODULE_DESCRIPTION("Samsung S3C2410 Multimedia Card Interface driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.h	2006-08-07 09:33:51.000000000 +0200
+@@ -0,0 +1,55 @@
++/*
++ *  linux/drivers/mmc/s3c2410mci.h - Samsung S3C2410 SDI Interface driver
++ *
++ *  Copyright (C) 2004 Thomas Kleffel, 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 version 2 as
++ * published by the Free Software Foundation.
++ */
++
++struct clk;
++
++#define S3C2410SDI_DMA 0
++
++#define S3C2410SDI_CDLATENCY 50
++
++enum s3c2410sdi_waitfor {
++	COMPLETION_NONE,
++	COMPLETION_CMDSENT,
++	COMPLETION_RSPFIN,
++	COMPLETION_XFERFINISH,
++	COMPLETION_XFERFINISH_RSPFIN,
++};
++
++typedef struct s3c24xx_mmc_platdata s3c24xx_mmc_pdata_t;
++
++struct s3c2410sdi_host {
++	struct mmc_host		*mmc;
++	s3c24xx_mmc_pdata_t	*pdata;
++
++	struct resource		*mem;
++	struct clk		*clk;
++	void __iomem		*base;
++	int			irq;
++	int			irq_cd;
++	int			dma;
++
++	struct scatterlist*	cur_sg;		/* Current SG entry */
++	unsigned int		num_sg;		/* Number of entries left */
++	void*			mapped_sg;	/* vaddr of mapped sg */
++
++	unsigned int		offset;		/* Offset into current entry */
++	unsigned int		remain;		/* Data left in curren entry */
++
++	int			size;		/* Total size of transfer */
++
++	struct mmc_request	*mrq;
++
++	unsigned char		bus_width;	/* Current bus width */
++
++	spinlock_t		complete_lock;
++	struct completion	complete_request;
++	struct completion	complete_dma;
++	enum s3c2410sdi_waitfor	complete_what;
++};
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/mmc.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/mmc.h	2006-08-07 09:33:51.000000000 +0200
+@@ -0,0 +1,32 @@
++/* linux/include/asm-arm/arch-s3c2410/mmc.h
++ *
++ * (c) 2004-2005 Simtec Electronics
++ *	http://www.simtec.co.uk/products/SWLINUX/
++ *	Ben Dooks <ben at simtec.co.uk>
++ *
++ * S3C24XX - MMC/SD platform data
++ *
++ * 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.
++ *
++ * Changelog:
++ *	26-Oct-2005 BJD  Created file
++*/
++
++#ifndef __ASM_ARCH_MMC_H
++#define __ASM_ARCH_MMC_H __FILE__
++
++struct s3c24xx_mmc_platdata {
++	unsigned int	gpio_detect;
++	unsigned int	gpio_wprotect;
++	unsigned int	detect_polarity;
++	unsigned int	wprotect_polarity;
++
++	unsigned long	f_max;
++	unsigned long	ocr_avail;
++
++	void		(*set_power)(unsigned int to);
++};
++
++#endif /* __ASM_ARCH_MMC_H */
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-sdi.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/regs-sdi.h	2006-08-07 09:32:34.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-sdi.h	2006-08-07 09:33:51.000000000 +0200
+@@ -47,7 +47,8 @@
+ #define S3C2410_SDICMDCON_LONGRSP     (1<<10)
+ #define S3C2410_SDICMDCON_WAITRSP     (1<<9)
+ #define S3C2410_SDICMDCON_CMDSTART    (1<<8)
+-#define S3C2410_SDICMDCON_INDEX       (0xff)
++#define S3C2410_SDICMDCON_SENDERHOST  (1<<6)
++#define S3C2410_SDICMDCON_INDEX       (0x3f)
+ 
+ #define S3C2410_SDICMDSTAT_CRCFAIL    (1<<12)
+ #define S3C2410_SDICMDSTAT_CMDSENT    (1<<11)
+@@ -73,6 +74,7 @@
+ #define S3C2410_SDIDCON_XFER_RXSTART  (2<<12)
+ #define S3C2410_SDIDCON_XFER_TXSTART  (3<<12)
+ 
++#define S3C2410_SDIDCON_BLKNUM_MASK   (0xFFF)
+ #define S3C2410_SDIDCNT_BLKNUM_SHIFT  (12)
+ 
+ #define S3C2410_SDIDSTA_RDYWAITREQ    (1<<10)
+@@ -115,4 +117,14 @@
+ #define S3C2410_SDIIMSK_RXFIFOFULL     (1<<1)
+ #define S3C2410_SDIIMSK_RXFIFOHALF     (1<<0)
+ 
++#define S3C2410_SDICMDCON_ABORT       (1<<12)
++#define S3C2410_SDICMDCON_WITHDATA    (1<<11)
++#define S3C2410_SDICMDCON_LONGRSP     (1<<10)
++#define S3C2410_SDICMDCON_WAITRSP     (1<<9)
++#define S3C2410_SDICMDCON_CMDSTART    (1<<8)
++#define S3C2410_SDICMDCON_SENDERHOST  (1<<6)
++
++#define S3C2410_SDIDCON_BLKNUM_MASK   (0xFFF)
++#define S3C2410_SDIDCNT_BLKNUM_SHIFT  (12)
++
+ #endif /* __ASM_ARM_REGS_SDI */
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 09:33:27.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 09:34:20.000000000 +0200
+@@ -29,6 +29,7 @@
+ #include <linux/timer.h>
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
++#include <linux/mmc/protocol.h>
+ 
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/nand.h>
+@@ -45,7 +46,9 @@
+ #include <asm/mach-types.h>
+ 
+ #include <asm/arch/regs-serial.h>
++#include <asm/arch/regs-gpio.h>
+ #include <asm/arch/fb.h>
++#include <asm/arch/mmc.h>
+ #include <asm/arch/nand.h>
+ 
+ #include "devs.h"
+@@ -236,6 +239,13 @@
+ 	.sets		= qt2410_nand_sets,
+ };
+ 
++static struct s3c24xx_mmc_platdata qt2410_mmc_cfg = {
++	.gpio_detect	= S3C2410_GPG10,
++	.gpio_wprotect	= S3C2410_GPH8,
++	.set_power	= NULL,
++	.ocr_avail	= MMC_VDD_32_33,
++};
++
+ static void __init qt2410_map_io(void)
+ {
+ 	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
+@@ -259,6 +269,7 @@
+ 	s3c2410_gpio_setpin(S3C2410_GPF7, 1);
+ 
+ 	s3c_device_nand.dev.platform_data = &qt2410_nand_info;
++	s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
+ 	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
+ 
+ 	s3c2410_pm_init();

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-base.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-base.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-base.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,338 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/Kconfig
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/Kconfig	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/Kconfig	2006-08-07 09:23:57.000000000 +0200
+@@ -63,6 +63,12 @@
+ 	   Say Y here if you are using the SMDK2410 or the derived module A9M2410
+            <http://www.fsforth.de>
+ 
++config MACH_QT2410
++	bool "QT2410"
++	select CPU_S3C2410
++	help
++	   Say Y here if you are using the Armzone QT2410 
++
+ config ARCH_S3C2440
+ 	bool "SMDK2440"
+ 	select CPU_S3C2440
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/Makefile
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/Makefile	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/Makefile	2006-08-07 09:18:43.000000000 +0200
+@@ -43,10 +43,11 @@
+ obj-$(CONFIG_ARCH_H1940)	+= mach-h1940.o
+ obj-$(CONFIG_MACH_N30)		+= mach-n30.o
+ obj-$(CONFIG_ARCH_SMDK2410)	+= mach-smdk2410.o
++obj-$(CONFIG_MACH_QT2410)	+= mach-qt2410.o
+ obj-$(CONFIG_ARCH_S3C2440)	+= mach-smdk2440.o
+ obj-$(CONFIG_MACH_VR1000)	+= mach-vr1000.o usb-simtec.o
+ obj-$(CONFIG_MACH_RX3715)	+= mach-rx3715.o
+ obj-$(CONFIG_MACH_OTOM)		+= mach-otom.o
+ obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
+ 
+-obj-$(CONFIG_MACH_SMDK)		+= common-smdk.o
+\ No newline at end of file
++obj-$(CONFIG_MACH_SMDK)		+= common-smdk.o
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 09:33:27.000000000 +0200
+@@ -0,0 +1,277 @@
++/*
++ *
++ * linux/arch/arm/mach-s3c2410/mach-qt2410.c
++ *
++ * Copyright (C) 2006 by Harald Welte <hwelte at hmw-consulting.de>
++ * 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
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/types.h>
++#include <linux/interrupt.h>
++#include <linux/list.h>
++#include <linux/timer.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/nand_ecc.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/mach-types.h>
++
++#include <asm/arch/regs-serial.h>
++#include <asm/arch/fb.h>
++#include <asm/arch/nand.h>
++
++#include "devs.h"
++#include "cpu.h"
++
++#include "pm.h"
++
++static struct map_desc qt2410_iodesc[] __initdata = {
++	IODESC_ENT(SDI),
++	IODESC_ENT(IIS),
++	{ 0xe0000000, __phys_to_pfn(S3C2410_CS3+0x01000000), SZ_1M, MT_DEVICE }
++};
++
++#define UCON S3C2410_UCON_DEFAULT
++#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
++#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
++
++static struct s3c2410_uartcfg smdk2410_uartcfgs[] = {
++	[0] = {
++		.hwport	     = 0,
++		.flags	     = 0,
++		.ucon	     = UCON,
++		.ulcon	     = ULCON,
++		.ufcon	     = UFCON,
++	},
++	[1] = {
++		.hwport	     = 1,
++		.flags	     = 0,
++		.ucon	     = UCON,
++		.ulcon	     = ULCON,
++		.ufcon	     = UFCON,
++	},
++	[2] = {
++		.hwport	     = 2,
++		.flags	     = 0,
++		.ucon	     = UCON,
++		.ulcon	     = ULCON,
++		.ufcon	     = UFCON,
++	}
++};
++
++/* LCD driver info */
++
++static struct s3c2410fb_mach_info qt2410_lcd_cfg __initdata = {
++	.regs	= {
++
++		.lcdcon1	= S3C2410_LCDCON1_TFT16BPP |
++				  S3C2410_LCDCON1_TFT |
++				  S3C2410_LCDCON1_CLKVAL(0x04),
++
++		.lcdcon2	= S3C2410_LCDCON2_VBPD(1) |
++				  S3C2410_LCDCON2_LINEVAL(319) |
++				  S3C2410_LCDCON2_VFPD(6) |
++				  S3C2410_LCDCON2_VSPW(3),
++
++		.lcdcon3	= S3C2410_LCDCON3_HBPD(12) |
++				  S3C2410_LCDCON3_HOZVAL(239) |
++				  S3C2410_LCDCON3_HFPD(7),
++
++		.lcdcon4	= S3C2410_LCDCON4_MVAL(0) |
++				  S3C2410_LCDCON4_HSPW(3),
++
++		.lcdcon5	= S3C2410_LCDCON5_FRM565 |
++				  S3C2410_LCDCON5_INVVLINE |
++				  S3C2410_LCDCON5_INVVFRAME |
++				  S3C2410_LCDCON5_PWREN |
++				  S3C2410_LCDCON5_HWSWP,
++	},
++
++#if 0
++	/* currently setup by downloader */
++	.gpccon		= 0xaa940659,
++	.gpccon_mask	= 0xffffffff,
++	.gpcup		= 0x0000ffff,
++	.gpcup_mask	= 0xffffffff,
++	.gpdcon		= 0xaa84aaa0,
++	.gpdcon_mask	= 0xffffffff,
++	.gpdup		= 0x0000faff,
++	.gpdup_mask	= 0xffffffff,
++#endif
++
++	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
++
++	.width		= 240,
++	.height		= 320,
++
++	.xres		= {
++		.min	= 240,
++		.max	= 240,
++		.defval	= 240,
++	},
++
++	.yres		= {
++		.min	= 320,
++		.max	= 320,
++		.defval = 320,
++	},
++
++	.bpp		= {
++		.min	= 16,
++		.max	= 16,
++		.defval = 16,
++	},
++};
++
++static struct resource cs89x0_resources[] = {
++	[0] = {
++		.start	= 0x19000000,
++		.end	= 0x19000000 + 16,
++		.flags	= IORESOURCE_MEM,
++	},
++	[1] = {
++		.start	= IRQ_EINT9,
++		.end	= IRQ_EINT9,
++		.flags	= IORESOURCE_IRQ,
++	},
++};
++
++static struct platform_device cs89x0_device = {
++	.name		= "cirrus-cs89x0",
++	.num_resources	= ARRAY_SIZE(cs89x0_resources),
++	.resource	= cs89x0_resources,
++};
++
++static struct platform_device *qt2410_devices[] __initdata = {
++	&s3c_device_usb,
++	&s3c_device_lcd,
++	&s3c_device_wdt,
++	&s3c_device_i2c,
++	&s3c_device_iis,
++	&s3c_device_sdi,
++	&s3c_device_usbgadget,
++	&s3c_device_nand,
++	&cs89x0_device,
++};
++
++static struct s3c24xx_board qt2410_board __initdata = {
++	.devices       = qt2410_devices,
++	.devices_count = ARRAY_SIZE(qt2410_devices)
++};
++
++static struct mtd_partition qt2410_nand_part[] = {
++	[0] = {
++		.name	= "U-Boot",
++		.size	= 0x30000,
++		.offset	= 0,
++	},
++	[1] = {
++		.name	= "U-Boot environment",
++		.offset = 0x30000,
++		.size	= 0x4000,
++	},
++	[2] = {
++		.name	= "kernel",
++		.offset = 0x34000,
++		.size	= SZ_2M,
++	},
++	[3] = {
++		.name	= "initrd",
++		.offset	= 0x234000,
++		.size	= SZ_4M,
++	},
++	[4] = {
++		.name	= "jffs2",
++		.offset = 0x634000,
++		.size	= 0x39cc000,
++	},
++};
++
++static struct s3c2410_nand_set qt2410_nand_sets[] = {
++	[0] = {
++		.name		= "NAND",
++		.nr_chips	= 1,
++		.nr_partitions	= ARRAY_SIZE(qt2410_nand_part),
++		.partitions	= qt2410_nand_part,
++	},
++};
++
++/* choose a set of timings which should suit most 512Mbit
++ * chips and beyond.
++ */
++
++static struct s3c2410_platform_nand qt2410_nand_info = {
++	.tacls		= 20,
++	.twrph0		= 60,
++	.twrph1		= 20,
++	.nr_sets	= ARRAY_SIZE(qt2410_nand_sets),
++	.sets		= qt2410_nand_sets,
++};
++
++static void __init qt2410_map_io(void)
++{
++	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
++	s3c24xx_init_clocks(0);
++	s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));
++	s3c24xx_set_board(&qt2410_board);
++}
++
++static void __init qt2410_machine_init(void)
++{
++	/* Configure the LEDs (even if we have no LED support)*/
++
++	s3c2410_gpio_cfgpin(S3C2410_GPF4, S3C2410_GPF4_OUTP);
++	s3c2410_gpio_cfgpin(S3C2410_GPF5, S3C2410_GPF5_OUTP);
++	s3c2410_gpio_cfgpin(S3C2410_GPF6, S3C2410_GPF6_OUTP);
++	s3c2410_gpio_cfgpin(S3C2410_GPF7, S3C2410_GPF7_OUTP);
++
++	s3c2410_gpio_setpin(S3C2410_GPF4, 1);
++	s3c2410_gpio_setpin(S3C2410_GPF5, 1);
++	s3c2410_gpio_setpin(S3C2410_GPF6, 1);
++	s3c2410_gpio_setpin(S3C2410_GPF7, 1);
++
++	s3c_device_nand.dev.platform_data = &qt2410_nand_info;
++	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
++
++	s3c2410_pm_init();
++}
++
++MACHINE_START(QT2410, "QT2410") 
++	.phys_io	= S3C2410_PA_UART,
++	.io_pg_offst	= (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
++	.boot_params	= S3C2410_SDRAM_PA + 0x100,
++	.map_io		= qt2410_map_io,
++	.init_irq	= s3c24xx_init_irq,
++	.init_machine	= qt2410_machine_init,
++	.timer		= &s3c24xx_timer,
++MACHINE_END
++
++
+Index: linux-2.6.17.7-new/arch/arm/tools/mach-types
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/tools/mach-types	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/tools/mach-types	2006-08-07 09:18:43.000000000 +0200
+@@ -1040,3 +1040,4 @@
+ ai2410			MACH_AI2410		AI2410			1027
+ ixp465			MACH_IXP465		IXP465			1028
+ balloon3		MACH_BALLOON3		BALLOON3		1029
++qt2410			MACH_QT2410		QT2410			1108
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/map.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/map.h	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/map.h	2006-08-07 09:18:43.000000000 +0200
+@@ -225,6 +225,7 @@
+ #define S3C24XX_PA_RTC      S3C2410_PA_RTC
+ #define S3C24XX_PA_ADC      S3C2410_PA_ADC
+ #define S3C24XX_PA_SPI      S3C2410_PA_SPI
++#define S3C24XX_PA_SDI      S3C2410_PA_SDI
+ #endif
+ 
+ #endif /* __ASM_ARCH_MAP_H */

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-biglcd.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-biglcd.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-biglcd.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,178 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-27 15:37:33.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-28 12:08:02.000000000 +0200
+@@ -94,6 +94,133 @@
+ 
+ /* LCD driver info */
+ 
++/* Configuration for 640x480 SHARP LQ080V3DG01 */
++static struct s3c2410fb_mach_info qt2410_biglcd_cfg __initdata = {
++	.regs	= {
++
++		.lcdcon1	= S3C2410_LCDCON1_TFT16BPP |
++				  S3C2410_LCDCON1_TFT |
++				  S3C2410_LCDCON1_CLKVAL(0x01),	/* HCLK/4 */
++
++		.lcdcon2	= S3C2410_LCDCON2_VBPD(18) |	/* 19 */
++				  S3C2410_LCDCON2_LINEVAL(479) |
++				  S3C2410_LCDCON2_VFPD(10) |	/* 11 */
++				  S3C2410_LCDCON2_VSPW(14),	/* 15 */
++
++		.lcdcon3	= S3C2410_LCDCON3_HBPD(43) |	/* 44 */
++				  S3C2410_LCDCON3_HOZVAL(639) |	/* 640 */
++				  S3C2410_LCDCON3_HFPD(115),	/* 116 */
++
++		.lcdcon4	= S3C2410_LCDCON4_MVAL(0) |
++				  S3C2410_LCDCON4_HSPW(95),	/* 96 */
++
++		.lcdcon5	= S3C2410_LCDCON5_FRM565 |
++				  S3C2410_LCDCON5_INVVLINE |
++				  S3C2410_LCDCON5_INVVFRAME |
++				  S3C2410_LCDCON5_PWREN |
++				  S3C2410_LCDCON5_HWSWP,
++	},
++
++#if 0
++	/* currently setup by downloader */
++	.gpccon		= 0xaa940659,
++	.gpccon_mask	= 0xffffffff,
++	.gpcup		= 0x0000ffff,
++	.gpcup_mask	= 0xffffffff,
++	.gpdcon		= 0xaa84aaa0,
++	.gpdcon_mask	= 0xffffffff,
++	.gpdup		= 0x0000faff,
++	.gpdup_mask	= 0xffffffff,
++#endif
++
++	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
++
++	.width		= 640,
++	.height		= 480,
++
++	.xres		= {
++		.min	= 640,
++		.max	= 640,
++		.defval	= 640,
++	},
++
++	.yres		= {
++		.min	= 480,
++		.max	= 480,
++		.defval = 480,
++	},
++
++	.bpp		= {
++		.min	= 16,
++		.max	= 16,
++		.defval = 16,
++	},
++};
++
++/* Configuration for 480x640 toppoly TD028TTEC1 */
++static struct s3c2410fb_mach_info qt2410_prodlcd_cfg __initdata = {
++	.regs	= {
++
++		.lcdcon1	= S3C2410_LCDCON1_TFT16BPP |
++				  S3C2410_LCDCON1_TFT |
++				  S3C2410_LCDCON1_CLKVAL(0x01),	/* HCLK/4 */
++
++		.lcdcon2	= S3C2410_LCDCON2_VBPD(1) |	/* 2 */
++				  S3C2410_LCDCON2_LINEVAL(639) |/* 640 */
++				  S3C2410_LCDCON2_VFPD(3) |	/* 4 */
++				  S3C2410_LCDCON2_VSPW(1),	/* 2 */
++
++		.lcdcon3	= S3C2410_LCDCON3_HBPD(7) |	/* 8 */
++				  S3C2410_LCDCON3_HOZVAL(479) |	/* 479 */
++				  S3C2410_LCDCON3_HFPD(23),	/* 24 */
++
++		.lcdcon4	= S3C2410_LCDCON4_MVAL(0) |
++				  S3C2410_LCDCON4_HSPW(7),	/* 8 */
++
++		.lcdcon5	= S3C2410_LCDCON5_FRM565 |
++				  S3C2410_LCDCON5_INVVLINE |
++				  S3C2410_LCDCON5_INVVFRAME |
++				  S3C2410_LCDCON5_PWREN |
++				  S3C2410_LCDCON5_HWSWP,
++	},
++
++#if 0
++	/* currently setup by downloader */
++	.gpccon		= 0xaa940659,
++	.gpccon_mask	= 0xffffffff,
++	.gpcup		= 0x0000ffff,
++	.gpcup_mask	= 0xffffffff,
++	.gpdcon		= 0xaa84aaa0,
++	.gpdcon_mask	= 0xffffffff,
++	.gpdup		= 0x0000faff,
++	.gpdup_mask	= 0xffffffff,
++#endif
++
++	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
++
++	.width		= 480,
++	.height		= 640,
++
++	.xres		= {
++		.min	= 480,
++		.max	= 480,
++		.defval	= 480,
++	},
++
++	.yres		= {
++		.min	= 640,
++		.max	= 640,
++		.defval = 640,
++	},
++
++	.bpp		= {
++		.min	= 16,
++		.max	= 16,
++		.defval = 16,
++	},
++};
++
++/* Config for 240x320 LCD */
+ static struct s3c2410fb_mach_info qt2410_lcd_cfg __initdata = {
+ 	.regs	= {
+ 
+@@ -275,6 +402,17 @@
+ 	.oversampling_shift = 2,
+ };
+ 
++static char tft_type = 's';
++
++int __init tft_setup(char *str)
++{
++	tft_type = str[0];
++	return 1;
++}
++
++__setup("tft=", tft_setup);
++
++
+ static void __init qt2410_map_io(void)
+ {
+ 	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
+@@ -299,7 +437,20 @@
+ 
+ 	s3c_device_nand.dev.platform_data = &qt2410_nand_info;
+ 	s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
+-	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
++
++	switch (tft_type) {
++	case 'p': /* production */
++		s3c24xx_fb_set_platdata(&qt2410_prodlcd_cfg);
++		break;
++	case 'b': /* big */
++		s3c24xx_fb_set_platdata(&qt2410_biglcd_cfg);
++		break;
++	case 's': /* small */
++	default:
++		s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
++		break;
++	}
++
+ 	s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
+ 	set_s3c2410ts_info(&qt2410_ts_cfg);
+ 

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-cs8900.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-cs8900.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/qt2410-cs8900.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,60 @@
+diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.5/drivers/net/Kconfig linux-2.6.17.5-old/drivers/net/Kconfig
+--- linux-2.6.17.5/drivers/net/Kconfig	2006-07-15 04:38:43.000000000 +0200
++++ linux-2.6.17.5-old/drivers/net/Kconfig	2006-08-06 13:31:47.000000000 +0200
+@@ -1246,7 +1246,7 @@
+ 
+ config NET_PCI
+ 	bool "EISA, VLB, PCI and on board controllers"
+-	depends on NET_ETHERNET && (ISA || EISA || PCI)
++	depends on NET_ETHERNET && (ISA || EISA || PCI || MACH_QT2410)
+ 	help
+ 	  This is another class of network cards which attach directly to the
+ 	  bus. If you have one of those, say Y and read the Ethernet-HOWTO,
+@@ -1386,7 +1386,7 @@
+ 
+ config CS89x0
+ 	tristate "CS89x0 support"
+-	depends on NET_PCI && (ISA || MACH_IXDP2351 || ARCH_IXDP2X01 || ARCH_PNX010X)
++	depends on NET_PCI && (ISA || MACH_IXDP2351 || ARCH_IXDP2X01 || ARCH_PNX010X || MACH_QT2410)
+ 	---help---
+ 	  Support for CS89x0 chipset based Ethernet cards. If you have a
+ 	  network (Ethernet) card of this type, say Y and read the
+diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.5/drivers/net/cs89x0.c linux-2.6.17.5-old/drivers/net/cs89x0.c
+--- linux-2.6.17.5/drivers/net/cs89x0.c	2006-07-15 04:38:43.000000000 +0200
++++ linux-2.6.17.5-old/drivers/net/cs89x0.c	2006-08-06 15:37:49.000000000 +0200
+@@ -195,6 +195,10 @@
+ #define CIRRUS_DEFAULT_IRQ	VH_INTC_INT_NUM_CASCADED_INTERRUPT_1 /* Event inputs bank 1 - ID 35/bit 3 */
+ static unsigned int netcard_portlist[] __initdata = {CIRRUS_DEFAULT_BASE, 0};
+ static unsigned int cs8900_irq_map[] = {CIRRUS_DEFAULT_IRQ, 0, 0, 0};
++#elif defined(CONFIG_MACH_QT2410)
++#include <asm/arch/irqs.h>
++static unsigned int netcard_portlist [] __initdata = { 0xe0000300, 0 };
++static unsigned int cs8900_irq_map[] = { IRQ_EINT9, 0, 0, 0 };
+ #else
+ static unsigned int netcard_portlist[] __initdata =
+    { 0x300, 0x320, 0x340, 0x360, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0};
+@@ -830,6 +834,14 @@
+ 
+ 	printk(" IRQ %d", dev->irq);
+ 
++	dev->dev_addr[0] = 0x00;
++	dev->dev_addr[1] = 0x00;
++	dev->dev_addr[2] = 0xc0;
++	dev->dev_addr[3] = 0xff;
++	dev->dev_addr[4] = 0xee;
++	dev->dev_addr[5] = 0x08;
++	set_mac_address(dev, dev->dev_addr);
++
+ #if ALLOW_DMA
+ 	if (lp->use_dma) {
+ 		get_dma_channel(dev);
+@@ -1310,7 +1322,7 @@
+ 	else
+ #endif
+ 	{
+-#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X)
++#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X) && !defined(CONFIG_MACH_QT2410)
+ 		if (((1 << dev->irq) & lp->irq_map) == 0) {
+ 			printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n",
+                                dev->name, dev->irq, lp->irq_map);
+

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/s3c2410_serial-nodebug.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/s3c2410_serial-nodebug.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/s3c2410_serial-nodebug.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,28 @@
+Index: linux-2.6.17.7-new/drivers/serial/s3c2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/serial/s3c2410.c	2006-08-12 01:43:50.000000000 +0530
++++ linux-2.6.17.7-new/drivers/serial/s3c2410.c	2006-08-12 01:44:30.000000000 +0530
+@@ -710,10 +710,6 @@
+ 		int calc_deviation;
+ 
+ 		for (sptr = res; sptr < resptr; sptr++) {
+-			printk(KERN_DEBUG
+-			       "found clk %p (%s) quot %d, calc %d\n",
+-			       sptr->clksrc, sptr->clksrc->name,
+-			       sptr->quot, sptr->calc);
+ 
+ 			calc_deviation = baud - sptr->calc;
+ 			if (calc_deviation < 0)
+@@ -725,12 +721,8 @@
+ 			}
+ 		}
+ 
+-		printk(KERN_DEBUG "best %p (deviation %d)\n", best, deviation);
+ 	}
+ 
+-	printk(KERN_DEBUG "selected clock %p (%s) quot %d, calc %d\n",
+-	       best->clksrc, best->clksrc->name, best->quot, best->calc);
+-
+ 	/* store results to pass back */
+ 
+ 	*clksrc = best->clksrc;

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/series
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/series	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/series	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,12 @@
+qt2410-base.patch
+qt2410-cs8900.patch
+mmc.patch
+udc.patch
+touchscreen.patch
+mmc-get_ro.patch
+mmc-sdipre_limit.patch
+mmc-fixdmalockup.patch
+mmc-fixdebugp.patch
+mmc-tt1104.patch
+s3c2410_serial-nodebug.patch
+qt2410-biglcd.patch

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/touchscreen.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/touchscreen.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/touchscreen.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,530 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/devs.c	2006-08-07 09:34:31.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.c	2006-08-07 17:36:09.000000000 +0200
+@@ -37,6 +37,7 @@
+ 
+ #include <asm/arch/regs-serial.h>
+ #include <asm/arch/udc.h>
++#include <asm/arch/ts.h>
+ 
+ #include "devs.h"
+ 
+@@ -137,6 +138,23 @@
+ 
+ EXPORT_SYMBOL(s3c_device_nand);
+ 
++/* Touchscreen */
++struct platform_device s3c_device_ts = {
++	.name		  = "s3c2410-ts",
++	.id		  = -1,
++};
++
++EXPORT_SYMBOL(s3c_device_ts);
++
++static struct s3c2410_ts_mach_info s3c2410ts_info;
++
++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
++{
++	memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
++	s3c_device_ts.dev.platform_data = &s3c2410ts_info;
++}
++EXPORT_SYMBOL(set_s3c2410ts_info);
++
+ /* USB Device (Gadget)*/
+ 
+ static struct resource s3c_usbgadget_resource[] = {
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.h
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/devs.h	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.h	2006-08-07 17:36:09.000000000 +0200
+@@ -39,6 +39,7 @@
+ extern struct platform_device s3c_device_timer3;
+ 
+ extern struct platform_device s3c_device_usbgadget;
++extern struct platform_device s3c_device_ts;
+ 
+ /* s3c2440 specific devices */
+ 
+Index: linux-2.6.17.7-new/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/input/touchscreen/Kconfig	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/drivers/input/touchscreen/Kconfig	2006-08-07 17:36:09.000000000 +0200
+@@ -49,6 +49,24 @@
+ 	  To compile this driver as a module, choose M here: the
+ 	  module will be called corgi_ts.
+ 
++config TOUCHSCREEN_S3C2410
++	tristate "Samsung S3C2410 touchscreen input driver"
++	depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
++	select SERIO
++	help
++	  Say Y here if you have the s3c2410 touchscreen.
++
++	  If unsure, say N.
++
++	  To compile this driver as a module, choose M here: the
++	  module will be called s3c2410_ts.
++
++config TOUCHSCREEN_S3C2410_DEBUG
++	boolean "Samsung S3C2410 touchscreen debug messages"
++	depends on TOUCHSCREEN_S3C2410
++	help
++	  Select this if you want debug messages
++
+ config TOUCHSCREEN_GUNZE
+ 	tristate "Gunze AHL-51S touchscreen"
+ 	select SERIO
+Index: linux-2.6.17.7-new/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/input/touchscreen/Makefile	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/drivers/input/touchscreen/Makefile	2006-08-07 17:36:09.000000000 +0200
+@@ -12,3 +12,5 @@
+ obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
+ obj-$(CONFIG_TOUCHSCREEN_MK712)	+= mk712.o
+ obj-$(CONFIG_TOUCHSCREEN_HP600)	+= hp680_ts_input.o
++obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
++
+Index: linux-2.6.17.7-new/drivers/input/touchscreen/s3c2410_ts.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/drivers/input/touchscreen/s3c2410_ts.c	2006-08-07 17:36:09.000000000 +0200
+@@ -0,0 +1,351 @@
++/*
++ * 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
++ *
++ * Copyright (c) 2004 Arnaud Patard <arnaud.patard at rtp-net.org>
++ * iPAQ H1940 touchscreen support
++ *
++ * ChangeLog
++ *
++ * 2004-09-05: Herbert Pötzl <herbert at 13thfloor.at>
++ *	- added clock (de-)allocation code
++ *
++ * 2005-03-06: Arnaud Patard <arnaud.patard at rtp-net.org>
++ *      - h1940_ -> s3c2410 (this driver is now also used on the n30
++ *        machines :P)
++ *      - Debug messages are now enabled with the config option
++ *        TOUCHSCREEN_S3C2410_DEBUG
++ *      - Changed the way the value are read
++ *      - Input subsystem should now work
++ *      - Use ioremap and readl/writel
++ *
++ * 2005-03-23: Arnaud Patard <arnaud.patard at rtp-net.org>
++ *      - Make use of some undocumented features of the touchscreen
++ *        controller
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/input.h>
++#include <linux/init.h>
++#include <linux/serio.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/clk.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/regs-adc.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/ts.h>
++
++/* For ts.dev.id.version */
++#define S3C2410TSVERSION	0x0101
++
++#define WAIT4INT(x)  (((x)<<8) | \
++		     S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
++		     S3C2410_ADCTSC_XY_PST(3))
++
++#define AUTOPST	     (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
++		     S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
++
++#define DEBUG_LVL    KERN_DEBUG
++
++MODULE_AUTHOR("Arnaud Patard <arnaud.patard at rtp-net.org>");
++MODULE_DESCRIPTION("s3c2410 touchscreen driver");
++MODULE_LICENSE("GPL");
++
++/*
++ * Definitions & global arrays.
++ */
++
++
++static char *s3c2410ts_name = "s3c2410 TouchScreen";
++
++/*
++ * Per-touchscreen data.
++ */
++
++struct s3c2410ts {
++	struct input_dev *dev;
++	long xp;
++	long yp;
++	int count;
++	int shift;
++};
++
++static struct s3c2410ts ts;
++static void __iomem *base_addr;
++
++static inline void s3c2410_ts_connect(void)
++{
++	s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
++	s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
++	s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
++	s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
++}
++
++static void touch_timer_fire(unsigned long data)
++{
++  	unsigned long data0;
++  	unsigned long data1;
++	int updown;
++
++  	data0 = readl(base_addr+S3C2410_ADCDAT0);
++  	data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++ 	updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++ 	if (updown) {
++ 		if (ts.count != 0) {
++ 			ts.xp >>= ts.shift;
++ 			ts.yp >>= ts.shift;
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ 			{
++ 				struct timeval tv;
++ 				do_gettimeofday(&tv);
++ 				printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
++ 			}
++#endif
++
++ 			input_report_abs(ts.dev, ABS_X, ts.xp);
++ 			input_report_abs(ts.dev, ABS_Y, ts.yp);
++
++ 			input_report_key(ts.dev, BTN_TOUCH, 1);
++ 			input_report_abs(ts.dev, ABS_PRESSURE, 1);
++ 			input_sync(ts.dev);
++ 		}
++
++ 		ts.xp = 0;
++ 		ts.yp = 0;
++ 		ts.count = 0;
++
++ 		writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
++ 		writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
++ 	} else {
++ 		ts.count = 0;
++
++ 		input_report_key(ts.dev, BTN_TOUCH, 0);
++ 		input_report_abs(ts.dev, ABS_PRESSURE, 0);
++ 		input_sync(ts.dev);
++
++ 		writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++ 	}
++}
++
++static struct timer_list touch_timer =
++		TIMER_INITIALIZER(touch_timer_fire, 0, 0);
++
++static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs)
++{
++	unsigned long data0;
++	unsigned long data1;
++	int updown;
++
++	data0 = readl(base_addr+S3C2410_ADCDAT0);
++	data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++	updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++	/* TODO we should never get an interrupt with updown set while
++	 * the timer is running, but maybe we ought to verify that the
++	 * timer isn't running anyways. */
++
++	if (updown)
++		touch_timer_fire(0);
++
++	return IRQ_HANDLED;
++}
++
++
++static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs)
++{
++	unsigned long data0;
++	unsigned long data1;
++
++	data0 = readl(base_addr+S3C2410_ADCDAT0);
++	data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++	ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
++	ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
++	ts.count++;
++
++        if (ts.count < (1<<ts.shift)) {
++		writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
++		writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
++	} else {
++		mod_timer(&touch_timer, jiffies+1);
++		writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
++	}
++
++	return IRQ_HANDLED;
++}
++
++static struct clk	*adc_clock;
++
++/*
++ * The functions for inserting/removing us as a module.
++ */
++
++static int __init s3c2410ts_probe(struct platform_device *pdev)
++{
++	struct s3c2410_ts_mach_info *info;
++	struct input_dev *input_dev;
++
++	info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
++
++	if (!info)
++	{
++		printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
++		return -EINVAL;
++	}
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++	printk(DEBUG_LVL "Entering s3c2410ts_init\n");
++#endif
++
++	adc_clock = clk_get(NULL, "adc");
++	if (!adc_clock) {
++		printk(KERN_ERR "failed to get adc clock source\n");
++		return -ENOENT;
++	}
++	clk_enable(adc_clock);
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++	printk(DEBUG_LVL "got and enabled clock\n");
++#endif
++
++	base_addr=ioremap(S3C2410_PA_ADC,0x20);
++	if (base_addr == NULL) {
++		printk(KERN_ERR "Failed to remap register block\n");
++		return -ENOMEM;
++	}
++
++
++	/* Configure GPIOs */
++	s3c2410_ts_connect();
++
++	if ((info->presc&0xff) > 0)
++		writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
++			     base_addr+S3C2410_ADCCON);
++	else
++		writel(0,base_addr+S3C2410_ADCCON);
++
++
++	/* Initialise registers */
++	if ((info->delay&0xffff) > 0)
++		writel(info->delay & 0xffff,  base_addr+S3C2410_ADCDLY);
++
++	writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++	/* Initialise input stuff */
++	memset(&ts, 0, sizeof(struct s3c2410ts));
++	input_dev = input_allocate_device();
++
++	if (!input_dev) {
++		printk(KERN_ERR "Unable to allocate the input device !!\n");
++		return -ENOMEM;
++	}
++
++	ts.dev = input_dev;
++	ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
++	ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++	input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
++	input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
++	input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
++
++	ts.dev->private = &ts;
++	ts.dev->name = s3c2410ts_name;
++	ts.dev->id.bustype = BUS_RS232;
++	ts.dev->id.vendor = 0xDEAD;
++	ts.dev->id.product = 0xBEEF;
++	ts.dev->id.version = S3C2410TSVERSION;
++
++	ts.shift = info->oversampling_shift;
++
++	/* Get irqs */
++	if (request_irq(IRQ_ADC, stylus_action, SA_SAMPLE_RANDOM,
++		"s3c2410_action", ts.dev)) {
++		printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
++		iounmap(base_addr);
++		return -EIO;
++	}
++	if (request_irq(IRQ_TC, stylus_updown, SA_SAMPLE_RANDOM,
++			"s3c2410_action", ts.dev)) {
++		printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
++		iounmap(base_addr);
++		return -EIO;
++	}
++
++	printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);
++
++	/* All went ok, so register to the input system */
++	input_register_device(ts.dev);
++
++	return 0;
++}
++
++static int s3c2410ts_remove(struct platform_device *pdev)
++{
++	disable_irq(IRQ_ADC);
++	disable_irq(IRQ_TC);
++	free_irq(IRQ_TC,ts.dev);
++	free_irq(IRQ_ADC,ts.dev);
++
++	if (adc_clock) {
++		clk_disable(adc_clock);
++		clk_put(adc_clock);
++		adc_clock = NULL;
++	}
++
++	input_unregister_device(ts.dev);
++	iounmap(base_addr);
++
++	return 0;
++}
++
++static struct platform_driver s3c2410ts_driver = {
++       .driver         = {
++	       .name   = "s3c2410-ts",
++	       .owner  = THIS_MODULE,
++       },
++       .probe          = s3c2410ts_probe,
++       .remove         = s3c2410ts_remove,
++};
++
++
++static int __init s3c2410ts_init(void)
++{
++	return platform_driver_register(&s3c2410ts_driver);
++}
++
++static void __exit s3c2410ts_exit(void)
++{
++	platform_driver_unregister(&s3c2410ts_driver);
++}
++
++module_init(s3c2410ts_init);
++module_exit(s3c2410ts_exit);
++
++/*
++    Local variables:
++        compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
++        c-basic-offset: 8
++    End:
++*/
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-adc.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/regs-adc.h	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-adc.h	2006-08-07 17:36:09.000000000 +0200
+@@ -44,7 +44,7 @@
+ #define S3C2410_ADCTSC_XP_SEN		(1<<4)
+ #define S3C2410_ADCTSC_PULL_UP_DISABLE	(1<<3)
+ #define S3C2410_ADCTSC_AUTO_PST		(1<<2)
+-#define S3C2410_ADCTSC_XY_PST		(0x3<<0)
++#define S3C2410_ADCTSC_XY_PST(x)	(((x)&0x3)<<0)
+ 
+ /* ADCDAT0 Bits */
+ #define S3C2410_ADCDAT0_UPDOWN		(1<<15)
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/ts.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/ts.h	2006-08-07 17:36:09.000000000 +0200
+@@ -0,0 +1,28 @@
++/* linux/include/asm/arch-s3c2410/ts.h
++ *
++ * Copyright (c) 2005 Arnaud Patard <arnaud.patard at rtp-net.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.
++ *
++ *
++ *  Changelog:
++ *     24-Mar-2005     RTP     Created file
++ *     03-Aug-2005     RTP     Renamed to ts.h
++ */
++
++#ifndef __ASM_ARM_TS_H
++#define __ASM_ARM_TS_H
++
++struct s3c2410_ts_mach_info {
++       int             delay;
++       int             presc;
++       int             oversampling_shift;
++};
++
++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
++
++#endif /* __ASM_ARM_TS_H */
++
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 17:36:58.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 17:38:45.000000000 +0200
+@@ -51,6 +51,7 @@
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/udc.h>
+ #include <asm/arch/nand.h>
++#include <asm/arch/ts.h>
+ 
+ #include "devs.h"
+ #include "cpu.h"
+@@ -183,6 +184,7 @@
+ 	&s3c_device_sdi,
+ 	&s3c_device_usbgadget,
+ 	&s3c_device_nand,
++	&s3c_device_ts,
+ 	&cs89x0_device,
+ };
+ 
+@@ -267,6 +269,12 @@
+ 	.udc_command	= qt2410_udc_pullup,
+ };
+ 
++static struct s3c2410_ts_mach_info qt2410_ts_cfg = {
++	.delay = 10000,
++	.presc = 49,
++	.oversampling_shift = 2,
++};
++
+ static void __init qt2410_map_io(void)
+ {
+ 	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
+@@ -293,6 +301,7 @@
+ 	s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
+ 	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
+ 	s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
++	set_s3c2410ts_info(&qt2410_ts_cfg);
+ 
+ 	s3c2410_pm_init();
+ }

Added: trunk/oe/packages/linux/linux-qt2410/new/patches/udc.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/new/patches/udc.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/new/patches/udc.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,2195 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/devs.c	2006-08-07 09:31:05.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.c	2006-08-07 09:34:31.000000000 +0200
+@@ -36,6 +36,7 @@
+ #include <asm/irq.h>
+ 
+ #include <asm/arch/regs-serial.h>
++#include <asm/arch/udc.h>
+ 
+ #include "devs.h"
+ 
+@@ -161,6 +162,20 @@
+ 
+ EXPORT_SYMBOL(s3c_device_usbgadget);
+ 
++void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *pd)
++{
++	struct s3c2410_udc_mach_info *npd;
++
++	npd = kmalloc(sizeof(*npd), GFP_KERNEL);
++	if (npd) {
++		memcpy(npd, pd, sizeof(*npd));
++		s3c_device_usbgadget.dev.platform_data = npd;
++	} else {
++		printk(KERN_ERR "no memory for udc platform data\n");
++	}
++}
++
++
+ /* Watchdog */
+ 
+ static struct resource s3c_wdt_resource[] = {
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/s3c2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/s3c2410.c	2006-08-07 09:31:05.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/s3c2410.c	2006-08-07 09:34:31.000000000 +0200
+@@ -48,6 +48,7 @@
+ 
+ static struct map_desc s3c2410_iodesc[] __initdata = {
+ 	IODESC_ENT(USBHOST),
++	IODESC_ENT(USBDEV),
+ 	IODESC_ENT(CLKPWR),
+ 	IODESC_ENT(LCD),
+ 	IODESC_ENT(TIMER),
+Index: linux-2.6.17.7-new/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/usb/gadget/Kconfig	2006-08-07 09:31:05.000000000 +0200
++++ linux-2.6.17.7-new/drivers/usb/gadget/Kconfig	2006-08-07 09:34:31.000000000 +0200
+@@ -187,6 +187,27 @@
+ 
+ 	   Select this only if your OMAP board has a Mini-AB connector.
+ 
++config USB_GADGET_S3C2410
++	boolean "S3C2410 USB Device Controller"
++	depends on ARCH_S3C2410
++	select USB_GADGET_SELECTED
++	help
++	  Samsung's S3C2410 is an ARM-4 processor with an integrated
++	  full speed USB 1.1 device controller.
++	  It has 4 configurable endpoints, as well as endpoint
++	  zero (for control transfers).
++
++config USB_S3C2410
++	tristate
++	depends on USB_GADGET_S3C2410
++	default USB_GADGET
++
++config USB_S3C2410_DEBUG
++	boolean "S3C2410 udc debug messages"
++	depends on USB_GADGET_S3C2410
++	help
++	  foo
++
+ config USB_GADGET_AT91
+ 	boolean "AT91 USB Device Port"
+ 	depends on ARCH_AT91RM9200
+Index: linux-2.6.17.7-new/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/usb/gadget/Makefile	2006-08-07 09:31:05.000000000 +0200
++++ linux-2.6.17.7-new/drivers/usb/gadget/Makefile	2006-08-07 09:34:31.000000000 +0200
+@@ -7,6 +7,7 @@
+ obj-$(CONFIG_USB_GOKU)		+= goku_udc.o
+ obj-$(CONFIG_USB_OMAP)		+= omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X)	+= lh7a40x_udc.o
++obj-$(CONFIG_USB_S3C2410)	+= s3c2410_udc.o
+ obj-$(CONFIG_USB_AT91)		+= at91_udc.o
+ 
+ #
+Index: linux-2.6.17.7-new/drivers/usb/gadget/s3c2410_udc.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/drivers/usb/gadget/s3c2410_udc.c	2006-08-07 09:34:31.000000000 +0200
+@@ -0,0 +1,1800 @@
++/*
++ * linux/drivers/usb/gadget/s3c2410_udc.c
++ * Samsung on-chip full speed USB device controllers
++ *
++ * Copyright (C) 2004-2006 Herbert Pötzl - Arnaud Patard
++ *
++ * 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/config.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/delay.h>
++#include <linux/ioport.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/smp_lock.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/list.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/version.h>
++#include <linux/clk.h>
++
++#include <linux/usb.h>
++#include <linux/usb_gadget.h>
++
++#include <asm/byteorder.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/unaligned.h>
++#include <asm/arch/irqs.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/regs-clock.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-udc.h>
++#include <asm/arch/udc.h>
++
++#include <asm/mach-types.h>
++
++#include "s3c2410_udc.h"
++
++#define ENABLE_SYSFS
++
++#define DRIVER_DESC     "S3C2410 USB Device Controller Gadget"
++#define DRIVER_VERSION  "30 Apr 2006"
++#define DRIVER_AUTHOR	"Herbert Pötzl <herbert at 13thfloor.at>, Arnaud Patard <arnaud.patard at rtp-net.org>"
++
++static const char       gadget_name [] = "s3c2410_udc";
++static const char	driver_desc [] = DRIVER_DESC;
++
++static struct s3c2410_udc	*the_controller;
++static struct clk      		*udc_clock;
++static struct clk      		*usb_bus_clock;
++static void __iomem 		*base_addr;
++static u64			rsrc_start;
++static u64			rsrc_len;
++
++static inline u32 udc_readl(u32 reg)
++{
++	return readl(base_addr+reg);
++}
++static inline void udc_writel(u32 value, u32 reg)
++{
++	writel(value,base_addr+reg);
++}
++
++static struct s3c2410_udc_mach_info *udc_info;
++
++/*************************** DEBUG FUNCTION ***************************/
++#define DEBUG_NORMAL	1
++#define DEBUG_VERBOSE	2
++
++#ifdef CONFIG_USB_S3C2410_DEBUG
++#define USB_S3C2410_DEBUG_LEVEL 1
++
++static uint32_t s3c2410_ticks=0;
++
++static int dprintk(int level, const char *fmt, ...)
++{
++	static char printk_buf[1024];
++	static long prevticks;
++	static int invocation;
++	va_list args;
++	int len;
++
++	if (level > USB_S3C2410_DEBUG_LEVEL)
++		return 0;
++
++	if (s3c2410_ticks != prevticks) {
++		prevticks = s3c2410_ticks;
++		invocation = 0;
++	}
++
++	len = scnprintf(printk_buf, \
++			sizeof(printk_buf), "%1lu.%02d USB: ", \
++			prevticks, invocation++);
++
++	va_start(args, fmt);
++	len = vscnprintf(printk_buf+len, \
++			sizeof(printk_buf)-len, fmt, args);
++	va_end(args);
++
++	return printk("%s", printk_buf);
++}
++#else
++static int dprintk(int level, const char *fmt, ...)  { return 0; }
++#endif
++#ifdef ENABLE_SYSFS
++static ssize_t s3c2410udc_regs_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++	u32 addr_reg,pwr_reg,ep_int_reg,usb_int_reg;
++	u32 ep_int_en_reg, usb_int_en_reg, ep0_csr;
++	u32 ep1_i_csr1,ep1_i_csr2,ep1_o_csr1,ep1_o_csr2;
++	u32 ep2_i_csr1,ep2_i_csr2,ep2_o_csr1,ep2_o_csr2;
++
++	addr_reg       = udc_readl(S3C2410_UDC_FUNC_ADDR_REG);
++	pwr_reg        = udc_readl(S3C2410_UDC_PWR_REG);
++	ep_int_reg     = udc_readl(S3C2410_UDC_EP_INT_REG);
++	usb_int_reg    = udc_readl(S3C2410_UDC_USB_INT_REG);
++	ep_int_en_reg  = udc_readl(S3C2410_UDC_EP_INT_EN_REG);
++	usb_int_en_reg = udc_readl(S3C2410_UDC_USB_INT_EN_REG);
++	udc_writel(0, S3C2410_UDC_INDEX_REG);
++	ep0_csr        = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	udc_writel(1, S3C2410_UDC_INDEX_REG);
++	ep1_i_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	ep1_i_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
++	ep1_o_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	ep1_o_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
++	udc_writel(2, S3C2410_UDC_INDEX_REG);
++	ep2_i_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	ep2_i_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
++	ep2_o_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	ep2_o_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
++
++
++	return snprintf(buf, PAGE_SIZE,        \
++		 "FUNC_ADDR_REG  : 0x%04X\n"   \
++		 "PWR_REG        : 0x%04X\n"   \
++		 "EP_INT_REG     : 0x%04X\n"   \
++		 "USB_INT_REG    : 0x%04X\n"   \
++		 "EP_INT_EN_REG  : 0x%04X\n"   \
++		 "USB_INT_EN_REG : 0x%04X\n"   \
++		 "EP0_CSR        : 0x%04X\n"   \
++		 "EP1_I_CSR1     : 0x%04X\n"   \
++		 "EP1_I_CSR2     : 0x%04X\n"   \
++		 "EP1_O_CSR1     : 0x%04X\n"   \
++		 "EP1_O_CSR2     : 0x%04X\n"   \
++		 "EP2_I_CSR1     : 0x%04X\n"   \
++		 "EP2_I_CSR2     : 0x%04X\n"   \
++		 "EP2_O_CSR1     : 0x%04X\n"   \
++		 "EP2_O_CSR2     : 0x%04X\n",  \
++		 addr_reg,pwr_reg,ep_int_reg,usb_int_reg,     \
++		 ep_int_en_reg, usb_int_en_reg, ep0_csr,      \
++		 ep1_i_csr1,ep1_i_csr2,ep1_o_csr1,ep1_o_csr2, \
++		 ep2_i_csr1,ep2_i_csr2,ep2_o_csr1,ep2_o_csr2  \
++		 );
++}
++
++static DEVICE_ATTR(regs, 0444,
++		   s3c2410udc_regs_show,
++		   NULL);
++#endif
++/*------------------------- I/O ----------------------------------*/
++static void done(struct s3c2410_ep *ep, struct s3c2410_request *req, int status);
++static void nuke (struct s3c2410_udc *udc, struct s3c2410_ep *ep, int status)
++{
++	/* Sanity check */
++	if (&ep->queue != NULL)
++		while (!list_empty (&ep->queue)) {
++			struct s3c2410_request  *req;
++			req = list_entry (ep->queue.next, struct s3c2410_request, queue);
++			done(ep,req,status);
++		}
++}
++
++/*
++ * 	done
++ */
++static void done(struct s3c2410_ep *ep, struct s3c2410_request *req, int status)
++{
++	unsigned halted = ep->halted;
++
++	list_del_init(&req->queue);
++
++	if (likely (req->req.status == -EINPROGRESS))
++		req->req.status = status;
++	else
++		status = req->req.status;
++
++	ep->halted = 1;
++	req->req.complete(&ep->ep, &req->req);
++	ep->halted = halted;
++}
++
++static inline void clear_ep_state (struct s3c2410_udc *dev)
++{
++	        unsigned i;
++
++		/* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
++		 * fifos, and pending transactions mustn't be continued in any case.
++		 */
++		 for (i = 1; i < S3C2410_ENDPOINTS; i++)
++			 nuke(dev, &dev->ep[i], -ECONNABORTED);
++}
++
++static inline int fifo_count_out(void)
++{
++	int tmp;
++
++	tmp = udc_readl(S3C2410_UDC_OUT_FIFO_CNT2_REG) << 8;
++	tmp |= udc_readl(S3C2410_UDC_OUT_FIFO_CNT1_REG);
++
++	return tmp & 0xffff;
++}
++
++/*
++ * 	write_packet
++ */
++static inline int
++write_packet(int fifo, struct s3c2410_request *req, unsigned max)
++{
++	unsigned	len;
++	u8		*buf;
++
++	buf = req->req.buf + req->req.actual;
++	prefetch(buf);
++
++	len = min(req->req.length - req->req.actual, max);
++	dprintk(DEBUG_VERBOSE, "write_packet %d %d %d ",req->req.actual,req->req.length,len);
++	req->req.actual += len;
++	dprintk(DEBUG_VERBOSE, "%d\n",req->req.actual);
++
++	writesb(base_addr+fifo, buf, len);
++	return len;
++}
++
++static void udc_reinit(struct s3c2410_udc *dev);
++
++/*
++ * 	write_fifo
++ *
++ * return:  0 = still running, 1 = completed, negative = errno
++ */
++static int write_fifo(struct s3c2410_ep *ep, struct s3c2410_request *req)
++{
++	unsigned	count;
++	int		is_last;
++	u32		idx;
++	int		fifo_reg;
++	u32		ep_csr;
++
++
++	switch(ep->bEndpointAddress&0x7F)
++	{
++		default:
++		case 0: idx = 0;
++			fifo_reg = S3C2410_UDC_EP0_FIFO_REG;
++			break;
++		case 1:
++			idx = 1;
++			fifo_reg = S3C2410_UDC_EP1_FIFO_REG;
++			break;
++		case 2:
++			idx = 2;
++			fifo_reg = S3C2410_UDC_EP2_FIFO_REG;
++			break;
++
++		case 3:
++			idx = 3;
++			fifo_reg = S3C2410_UDC_EP3_FIFO_REG;
++			break;
++
++		case 4:
++			idx = 4;
++			fifo_reg = S3C2410_UDC_EP4_FIFO_REG;
++			break;
++	}
++
++	count = write_packet(fifo_reg, req, ep->ep.maxpacket);
++
++	/* last packet is often short (sometimes a zlp) */
++	if (count != ep->ep.maxpacket)
++		is_last = 1;
++	else  if (req->req.length != req->req.actual || req->req.zero)
++		is_last = 0;
++	else
++		is_last = 2;
++
++	/* Only ep0 debug messages are interesting */
++	if (!idx)
++		dprintk(DEBUG_NORMAL, "Written ep%d %d.%d of %d b [last %d,z %d]\n",idx,count,req->req.actual,req->req.length,is_last,req->req.zero);
++
++	if (is_last)
++	{
++		/* The order is important. It prevents to send 2 packet at the same time
++		 **/
++		if (!idx)
++		{
++			/* If we got a reset signal, no need to say 'data sent' */
++			if (! (udc_readl(S3C2410_UDC_USB_INT_REG) & S3C2410_UDC_USBINT_RESET))
++				set_ep0_de_in(base_addr);
++			ep->dev->ep0state=EP0_IDLE;
++		}
++		else
++		{
++			 udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			 ep_csr=udc_readl(S3C2410_UDC_IN_CSR1_REG);
++			 udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			 udc_writel(ep_csr|S3C2410_UDC_ICSR1_PKTRDY,S3C2410_UDC_IN_CSR1_REG);
++		}
++		done(ep, req, 0);
++		is_last=1;
++	}
++	else
++	{
++		if (!idx)
++		{
++			/* If we got a reset signal, no need to say 'data sent' */
++			if (! (udc_readl(S3C2410_UDC_USB_INT_REG) & S3C2410_UDC_USBINT_RESET))
++				set_ep0_ipr(base_addr);
++		}
++		else
++		{
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			ep_csr=udc_readl(S3C2410_UDC_IN_CSR1_REG);
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			udc_writel(ep_csr|S3C2410_UDC_ICSR1_PKTRDY,S3C2410_UDC_IN_CSR1_REG);
++		}
++	}
++
++
++	return is_last;
++}
++
++static inline int
++read_packet(int fifo, u8 *buf, struct s3c2410_request *req, unsigned avail)
++{
++	unsigned	len;
++
++	len = min(req->req.length - req->req.actual, avail);
++	req->req.actual += len;
++
++	readsb(fifo + base_addr, buf, len);
++	return len;
++}
++
++/*
++ * return:  0 = still running, 1 = queue empty, negative = errno
++ */
++static int read_fifo(struct s3c2410_ep *ep, struct s3c2410_request *req)
++{
++	u8		*buf;
++	u32		ep_csr;
++	unsigned	bufferspace;
++	int 		is_last=1;
++	unsigned 	avail;
++	int 		fifo_count = 0;
++	u32		idx;
++	int		fifo_reg;
++
++	
++	switch(ep->bEndpointAddress&0x7F)
++	{
++		default:
++		case 0: idx = 0;
++			fifo_reg = S3C2410_UDC_EP0_FIFO_REG;
++			break;
++		case 1:
++			idx = 1;
++			fifo_reg = S3C2410_UDC_EP1_FIFO_REG;
++			break;
++		case 2:
++			idx = 2;
++			fifo_reg = S3C2410_UDC_EP2_FIFO_REG;
++			break;
++
++		case 3:
++			idx = 3;
++			fifo_reg = S3C2410_UDC_EP3_FIFO_REG;
++			break;
++
++		case 4:
++			idx = 4;
++			fifo_reg = S3C2410_UDC_EP4_FIFO_REG;
++			break;
++
++	}
++
++	if (!req->req.length) {
++		return 1;
++	}
++
++	buf = req->req.buf + req->req.actual;
++	bufferspace = req->req.length - req->req.actual;
++	if (!bufferspace)
++	{
++		dprintk(DEBUG_NORMAL, "read_fifo: Buffer full !!\n");
++		return -1;
++	}
++
++	udc_writel(idx, S3C2410_UDC_INDEX_REG);
++
++        fifo_count = fifo_count_out();
++	dprintk(DEBUG_NORMAL, "fifo_read fifo count : %d\n",fifo_count);
++
++	if (fifo_count > ep->ep.maxpacket)
++		avail = ep->ep.maxpacket;
++	else
++		avail = fifo_count;
++
++	fifo_count=read_packet(fifo_reg,buf,req,avail);
++
++	/* checking this with ep0 is not accurate as we already
++	 * read a control request 
++	 **/
++	if (idx && fifo_count < ep->ep.maxpacket) {
++		is_last = 1;
++		/* overflowed this request?  flush extra data */
++		if (fifo_count != avail) {
++			req->req.status = -EOVERFLOW;
++		}
++	} else {
++		if (req->req.length <= req->req.actual)
++			is_last = 1;
++		else
++			is_last = 0;
++	}
++
++	udc_writel(idx, S3C2410_UDC_INDEX_REG);
++	fifo_count = fifo_count_out();
++
++	/* Only ep0 debug messages are interesting */
++	if (!idx)
++		dprintk(DEBUG_VERBOSE, "fifo_read fifo count : %d [last %d]\n",fifo_count,is_last);
++
++
++	if (is_last) {
++		if (!idx)
++		{
++			set_ep0_de_out(base_addr);
++			ep->dev->ep0state=EP0_IDLE;
++		}
++		else
++		{
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			ep_csr=udc_readl(S3C2410_UDC_OUT_CSR1_REG);
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			udc_writel(ep_csr&~S3C2410_UDC_OCSR1_PKTRDY,S3C2410_UDC_OUT_CSR1_REG);
++		}
++		done(ep, req, 0);
++		if (!list_empty(&ep->queue))
++		{
++			is_last=0;
++			req = container_of(ep->queue.next,
++				struct s3c2410_request, queue);
++		}
++		else
++			is_last=1;
++
++	}
++	else
++	{
++		if (!idx)
++		{
++			clear_ep0_opr(base_addr);
++		}
++		else
++		{
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			ep_csr=udc_readl(S3C2410_UDC_OUT_CSR1_REG);
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			udc_writel(ep_csr&~S3C2410_UDC_OCSR1_PKTRDY,S3C2410_UDC_OUT_CSR1_REG);
++		}
++	}
++
++
++	return is_last;
++}
++
++
++static int
++read_fifo_crq(struct usb_ctrlrequest *crq)
++{
++	int bytes_read = 0;
++	int fifo_count = 0;
++	int i;
++
++
++	unsigned char *pOut = (unsigned char*)crq;
++
++	udc_writel(0, S3C2410_UDC_INDEX_REG);
++
++	fifo_count = fifo_count_out();
++
++	dprintk(DEBUG_NORMAL, "read_fifo_crq(): fifo_count=%d\n", fifo_count );
++
++	fifo_count = sizeof(struct usb_ctrlrequest);
++	while( fifo_count-- ) {
++		i = 0;
++
++		do {
++			*pOut = (unsigned char)udc_readl(S3C2410_UDC_EP0_FIFO_REG);
++			i++;
++		} while((fifo_count_out() != fifo_count) && (i < 10));
++
++		if ( i == 10 ) {
++			dprintk(DEBUG_NORMAL, "read_fifo(): read failure\n");
++		}
++
++		pOut++;
++		bytes_read++;
++	}
++
++	dprintk(DEBUG_VERBOSE, "read_fifo_crq: len=%d %02x:%02x {%x,%x,%x}\n",
++			bytes_read, crq->bRequest, crq->bRequestType,
++			crq->wValue, crq->wIndex, crq->wLength);
++
++	return bytes_read;
++}
++static int s3c2410_get_status(struct s3c2410_udc *dev, struct usb_ctrlrequest  *crq)
++{
++	u16 status = 0;
++	u8 ep_num = crq->wIndex & 0x7F;
++	u8 is_in = crq->wIndex & USB_DIR_IN;
++
++	switch(crq->bRequestType & USB_RECIP_MASK) {
++		case USB_RECIP_INTERFACE:
++			break;
++		case USB_RECIP_DEVICE:
++			status = dev->devstatus;
++			break;
++		case USB_RECIP_ENDPOINT:
++			if (ep_num>4 || crq->wLength > 2)
++				return 1;
++			if (!ep_num) {
++				udc_writel(0, S3C2410_UDC_INDEX_REG);
++				status = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++				status = ( (status & S3C2410_UDC_EP0_CSR_SENDSTL) == S3C2410_UDC_EP0_CSR_SENDSTL);
++			}
++			else {
++				udc_writel(ep_num, S3C2410_UDC_INDEX_REG);
++				if (is_in) {
++					status = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++					status = ( (status & S3C2410_UDC_ICSR1_SENTSTL) == S3C2410_UDC_ICSR1_SENTSTL);
++				}
++				else {
++					status = udc_readl(S3C2410_UDC_OUT_CSR1_REG);
++					status = ( (status & S3C2410_UDC_OCSR1_SENTSTL) == S3C2410_UDC_OCSR1_SENTSTL);
++				}
++			}
++
++			break;
++		default:
++			return 1;
++	}
++
++	/* Seems to be needed to get it working. ouch :( */
++	udelay(0x20);
++	udc_writel(status&0xFF,S3C2410_UDC_EP0_FIFO_REG);
++	udc_writel(status>>8,S3C2410_UDC_EP0_FIFO_REG);
++	set_ep0_de_in(base_addr);
++
++	return 0;
++}
++/*------------------------- usb state machine -------------------------------*/
++static void handle_ep0(struct s3c2410_udc *dev)
++{
++	u32			ep0csr;
++	struct s3c2410_ep	*ep = &dev->ep [0];
++	struct s3c2410_request	*req;
++	struct usb_ctrlrequest	crq;
++
++	if (list_empty(&ep->queue))
++    		req = NULL;
++	else
++		req = list_entry(ep->queue.next, struct s3c2410_request, queue);
++
++
++	udc_writel(0, S3C2410_UDC_INDEX_REG);
++	ep0csr = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	dprintk(DEBUG_NORMAL,"ep0csr %x ep0state %s\n",ep0csr,ep0states[dev->ep0state]);
++
++	/* clear stall status */
++	if (ep0csr & S3C2410_UDC_EP0_CSR_SENTSTL) {
++		/* FIXME */
++		nuke(dev, ep, -EPIPE);
++	    	dprintk(DEBUG_NORMAL, "... clear SENT_STALL ...\n");
++	    	clear_ep0_sst(base_addr);
++		dev->ep0state = EP0_IDLE;
++		return;
++	}
++
++	/* clear setup end */
++	if (ep0csr & S3C2410_UDC_EP0_CSR_SE
++	    	/* && dev->ep0state != EP0_IDLE */) {
++	    	dprintk(DEBUG_NORMAL, "... serviced SETUP_END ...\n");
++		nuke(dev, ep, 0);
++	    	clear_ep0_se(base_addr);
++		dev->ep0state = EP0_IDLE;
++	}
++
++
++	switch (dev->ep0state) {
++	case EP0_IDLE:
++		/* start control request? */
++		if (ep0csr & S3C2410_UDC_EP0_CSR_OPKRDY) {
++			int len, ret, tmp;
++
++			nuke (dev, ep, -EPROTO);
++
++			len = read_fifo_crq(&crq);
++			if (len != sizeof(crq)) {
++			  	dprintk(DEBUG_NORMAL, "setup begin: fifo READ ERROR"
++				    	" wanted %d bytes got %d. Stalling out...\n",
++					sizeof(crq), len);
++ 				set_ep0_ss(base_addr);
++				return;
++			}
++
++			dprintk(DEBUG_NORMAL, "bRequest = %d bRequestType %d wLength = %d\n", crq.bRequest,crq.bRequestType,  crq.wLength);
++
++
++			/* cope with automagic for some standard requests. */
++			dev->req_std = (crq.bRequestType & USB_TYPE_MASK)
++						== USB_TYPE_STANDARD;
++			dev->req_config = 0;
++			dev->req_pending = 1;
++			switch (crq.bRequest) {
++				case USB_REQ_SET_CONFIGURATION:
++				    	dprintk(DEBUG_NORMAL, "USB_REQ_SET_CONFIGURATION ... \n");
++					if (crq.bRequestType == USB_RECIP_DEVICE) {
++config_change:
++						dev->req_config = 1;
++/*						clear_ep_state(dev);*/
++						set_ep0_de_out(base_addr);
++					}
++					break;
++				case USB_REQ_SET_INTERFACE:
++				    	dprintk(DEBUG_NORMAL, "USB_REQ_SET_INTERFACE ... \n");
++					if (crq.bRequestType == USB_RECIP_INTERFACE) {
++						goto config_change;
++					}
++					break;
++
++				case USB_REQ_SET_ADDRESS:
++				    	dprintk(DEBUG_NORMAL, "USB_REQ_SET_ADDRESS ... \n");
++					if (crq.bRequestType == USB_RECIP_DEVICE) {
++						tmp = crq.wValue & 0x7F;
++						dev->address = tmp;
++ 						udc_writel((tmp | 0x80), S3C2410_UDC_FUNC_ADDR_REG);
++						set_ep0_de_out(base_addr);
++						return;
++					}
++					break;
++					
++				case USB_REQ_GET_STATUS:
++					dprintk(DEBUG_NORMAL, "USB_REQ_GET_STATUS ... \n");
++					clear_ep0_opr(base_addr);
++					if (!s3c2410_get_status(dev, &crq)) {
++						return;
++					}
++					break;
++
++				default:
++					clear_ep0_opr(base_addr);
++					break;
++			}
++
++			if (crq.bRequestType & USB_DIR_IN)
++				dev->ep0state = EP0_IN_DATA_PHASE;
++			else
++				dev->ep0state = EP0_OUT_DATA_PHASE;
++			ret = dev->driver->setup(&dev->gadget, &crq);
++			if (ret < 0) {
++				if (dev->req_config) {
++					dprintk(DEBUG_NORMAL, "config change %02x fail %d?\n",
++						crq.bRequest, ret);
++					return;
++				}
++				if (ret == -EOPNOTSUPP)
++					dprintk(DEBUG_NORMAL, "Operation not supported\n");
++				else
++					dprintk(DEBUG_NORMAL, "dev->driver->setup failed. (%d)\n",ret);
++
++				set_ep0_ss(base_addr);
++				set_ep0_de_out(base_addr);
++				dev->ep0state = EP0_IDLE;
++			/* deferred i/o == no response yet */
++			} else if (dev->req_pending) {
++			    	dprintk(DEBUG_VERBOSE, "dev->req_pending... what now?\n");
++				dev->req_pending=0;
++			}
++			dprintk(DEBUG_VERBOSE, "ep0state %s\n",ep0states[dev->ep0state]);
++		}
++		break;
++	case EP0_IN_DATA_PHASE:			/* GET_DESCRIPTOR etc */
++	    	dprintk(DEBUG_NORMAL, "EP0_IN_DATA_PHASE ... what now?\n");
++		if (!(ep0csr & 2) && req)
++		{
++			write_fifo(ep, req);
++		}
++		break;
++	case EP0_OUT_DATA_PHASE:		/* SET_DESCRIPTOR etc */
++	    	dprintk(DEBUG_NORMAL, "EP0_OUT_DATA_PHASE ... what now?\n");
++		if ((ep0csr & 1) && req ) {
++			read_fifo(ep,req);
++		}
++		break;
++	case EP0_END_XFER:
++	    	dprintk(DEBUG_NORMAL, "EP0_END_XFER ... what now?\n");
++		dev->ep0state=EP0_IDLE;
++		break;
++	case EP0_STALL:
++	    	dprintk(DEBUG_NORMAL, "EP0_STALL ... what now?\n");
++	    	dev->ep0state=EP0_IDLE;
++		break;
++	}
++}
++/*
++ * 	handle_ep - Manage I/O endpoints
++ */
++static void handle_ep(struct s3c2410_ep *ep)
++{
++	struct s3c2410_request	*req;
++	int			is_in = ep->bEndpointAddress & USB_DIR_IN;
++	u32			ep_csr1;
++	u32			idx;
++
++	if (likely (!list_empty(&ep->queue)))
++		req = list_entry(ep->queue.next,
++				struct s3c2410_request, queue);
++	else
++		req = NULL;
++
++	idx = (u32)(ep->bEndpointAddress&0x7F);
++
++	if (is_in) {
++		udc_writel(idx, S3C2410_UDC_INDEX_REG);
++		ep_csr1 = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++		dprintk(DEBUG_VERBOSE, "ep%01d write csr:%02x %d\n",idx,ep_csr1,req ? 1 : 0);
++
++		if (ep_csr1 & S3C2410_UDC_ICSR1_SENTSTL)
++		{
++			dprintk(DEBUG_VERBOSE, "st\n");
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			udc_writel(0x00,S3C2410_UDC_IN_CSR1_REG);
++			return;
++		}
++
++		if (!(ep_csr1 & S3C2410_UDC_ICSR1_PKTRDY) && req)
++		{
++			write_fifo(ep,req);
++		}
++	}
++	else {
++		udc_writel(idx, S3C2410_UDC_INDEX_REG);
++		ep_csr1 = udc_readl(S3C2410_UDC_OUT_CSR1_REG);
++		dprintk(DEBUG_VERBOSE, "ep%01d read csr:%02x\n",idx,ep_csr1);
++
++		if (ep_csr1 & S3C2410_UDC_OCSR1_SENTSTL)
++		{
++			udc_writel(idx, S3C2410_UDC_INDEX_REG);
++			udc_writel(0x00,S3C2410_UDC_OUT_CSR1_REG);
++			return;
++		}
++		if( (ep_csr1 & S3C2410_UDC_OCSR1_PKTRDY) && req)
++		{
++			read_fifo(ep,req);
++		}
++	}
++}
++
++#include <asm/arch/regs-irq.h>
++/*
++ *      s3c2410_udc_irq - interrupt handler
++ */
++static irqreturn_t
++s3c2410_udc_irq(int irq, void *_dev, struct pt_regs *r)
++{
++	struct s3c2410_udc      *dev = _dev;
++	int usb_status;
++	int usbd_status;
++	int pwr_reg;
++	int ep0csr;
++	int     i;
++	u32	idx;
++	unsigned long flags;
++
++	spin_lock_irqsave(&dev->lock,flags);
++
++	/* Driver connected ? */
++	if (!dev->driver) {
++		/* Clear interrupts */
++		udc_writel( \
++				udc_readl(S3C2410_UDC_USB_INT_REG), \
++				S3C2410_UDC_USB_INT_REG \
++			    );
++		udc_writel( \
++				udc_readl(S3C2410_UDC_EP_INT_REG), \
++				S3C2410_UDC_EP_INT_REG \
++			    );
++	}
++
++	/* Save index */
++	idx = udc_readl(S3C2410_UDC_INDEX_REG);
++
++	/* Read status registers */
++	usb_status = udc_readl(S3C2410_UDC_USB_INT_REG);
++	usbd_status = udc_readl(S3C2410_UDC_EP_INT_REG);
++	pwr_reg = udc_readl(S3C2410_UDC_PWR_REG);
++
++	S3C2410_UDC_SETIX(base_addr,EP0);
++	ep0csr = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++
++	// dprintk(DEBUG_NORMAL, "usbs=%02x, usbds=%02x, pwr=%02x ep0csr=%02x\n", usb_status, usbd_status, pwr_reg,ep0csr);
++
++	/*
++	 * Now, handle interrupts. There's two types :
++	 * - Reset, Resume, Suspend coming -> usb_int_reg
++	 * - EP -> ep_int_reg
++	 */
++
++	/* RESET */
++	if (usb_status & S3C2410_UDC_USBINT_RESET )
++	{
++		/* two kind of reset :
++		 * - reset start -> pwr reg = 8
++		 * - reset end   -> pwr reg = 0
++		 **/
++		dprintk(DEBUG_NORMAL, "USB reset csr %x pwr %x\n",ep0csr,pwr_reg);
++		dev->gadget.speed = USB_SPEED_UNKNOWN;
++		udc_writel(0x00, S3C2410_UDC_INDEX_REG);
++		udc_writel((dev->ep[0].ep.maxpacket&0x7ff)>>3,S3C2410_UDC_MAXP_REG);
++		dev->address = 0;
++
++		dev->ep0state = EP0_IDLE;
++		dev->gadget.speed = USB_SPEED_FULL;
++
++		/* clear interrupt */
++		udc_writel(S3C2410_UDC_USBINT_RESET,
++			S3C2410_UDC_USB_INT_REG);
++
++		udc_writel(idx,S3C2410_UDC_INDEX_REG);
++		spin_unlock_irqrestore(&dev->lock,flags);
++		return IRQ_HANDLED;
++	}
++
++	/* RESUME */
++	if (usb_status & S3C2410_UDC_USBINT_RESUME)
++	{
++		dprintk(DEBUG_NORMAL, "USB resume\n");
++
++		/* clear interrupt */
++		udc_writel(S3C2410_UDC_USBINT_RESUME,
++			S3C2410_UDC_USB_INT_REG);
++		if (dev->gadget.speed != USB_SPEED_UNKNOWN
++			&& dev->driver
++			&& dev->driver->resume)
++			dev->driver->resume(&dev->gadget);
++	}
++
++	/* SUSPEND */
++	if (usb_status & S3C2410_UDC_USBINT_SUSPEND)
++	{
++		dprintk(DEBUG_NORMAL, "USB suspend\n");
++
++		/* clear interrupt */
++		udc_writel(S3C2410_UDC_USBINT_SUSPEND,
++			S3C2410_UDC_USB_INT_REG);
++
++		if (dev->gadget.speed != USB_SPEED_UNKNOWN
++				&& dev->driver
++				&& dev->driver->suspend)
++			dev->driver->suspend(&dev->gadget);
++
++		dev->ep0state = EP0_IDLE;
++	}
++
++	/* EP */
++	/* control traffic */
++	/* check on ep0csr != 0 is not a good idea as clearing in_pkt_ready
++	 * generate an interrupt
++	 */
++	if (usbd_status & S3C2410_UDC_INT_EP0)
++	{
++		dprintk(DEBUG_VERBOSE, "USB ep0 irq\n");
++		/* Clear the interrupt bit by setting it to 1 */
++		udc_writel(S3C2410_UDC_INT_EP0, S3C2410_UDC_EP_INT_REG);
++		handle_ep0(dev);
++	}
++	/* endpoint data transfers */
++	for (i = 1; i < S3C2410_ENDPOINTS; i++) {
++		u32 tmp = 1 << i;
++		if (usbd_status & tmp) {
++			dprintk(DEBUG_VERBOSE, "USB ep%d irq\n", i);
++
++			/* Clear the interrupt bit by setting it to 1 */
++			udc_writel(tmp, S3C2410_UDC_EP_INT_REG);
++			handle_ep(&dev->ep[i]);
++		}
++	}
++
++
++	dprintk(DEBUG_VERBOSE,"irq: %d done.\n", irq);
++
++	/* Restore old index */
++	udc_writel(idx,S3C2410_UDC_INDEX_REG);
++
++	spin_unlock_irqrestore(&dev->lock,flags);
++
++	return IRQ_HANDLED;
++}
++/*------------------------- s3c2410_ep_ops ----------------------------------*/
++
++/*
++ * 	s3c2410_ep_enable
++ */
++static int
++s3c2410_ep_enable (struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)
++{
++	struct s3c2410_udc	*dev;
++	struct s3c2410_ep	*ep;
++	u32			max, tmp;
++	unsigned long		flags;
++	u32			csr1,csr2;
++	u32			int_en_reg;
++
++
++	ep = container_of (_ep, struct s3c2410_ep, ep);
++	if (!_ep || !desc || ep->desc || _ep->name == ep0name
++			|| desc->bDescriptorType != USB_DT_ENDPOINT)
++		return -EINVAL;
++	dev = ep->dev;
++	if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)
++		return -ESHUTDOWN;
++
++	max = le16_to_cpu (desc->wMaxPacketSize) & 0x1fff;
++
++	local_irq_save (flags);
++	_ep->maxpacket = max & 0x7ff;
++	ep->desc = desc;
++	ep->halted = 0;
++	ep->bEndpointAddress = desc->bEndpointAddress;
++
++	/* set max packet */
++	udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++	udc_writel(max>>3,S3C2410_UDC_MAXP_REG);
++
++
++	/* set type, direction, address; reset fifo counters */
++	if (desc->bEndpointAddress & USB_DIR_IN)
++	{
++		csr1 = S3C2410_UDC_ICSR1_FFLUSH|S3C2410_UDC_ICSR1_CLRDT;
++		csr2 = S3C2410_UDC_ICSR2_MODEIN|S3C2410_UDC_ICSR2_DMAIEN;
++
++		udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++		udc_writel(csr1,S3C2410_UDC_IN_CSR1_REG);
++		udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++		udc_writel(csr2,S3C2410_UDC_IN_CSR2_REG);
++	}
++	else
++	{
++		/* don't flush he in fifo or there will be an interrupt for that
++		 * endpoint */
++		csr1 = S3C2410_UDC_ICSR1_CLRDT;
++		csr2 = S3C2410_UDC_ICSR2_DMAIEN;
++
++		udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++		udc_writel(csr1,S3C2410_UDC_IN_CSR1_REG);
++		udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++		udc_writel(csr2,S3C2410_UDC_IN_CSR2_REG);
++
++		csr1 = S3C2410_UDC_OCSR1_FFLUSH | S3C2410_UDC_OCSR1_CLRDT;
++		csr2 = S3C2410_UDC_OCSR2_DMAIEN;
++
++		udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++		udc_writel(csr1,S3C2410_UDC_OUT_CSR1_REG);
++		udc_writel(ep->num, S3C2410_UDC_INDEX_REG);
++		udc_writel(csr2,S3C2410_UDC_OUT_CSR2_REG);
++	}
++
++
++	/* enable irqs */
++	int_en_reg = udc_readl(S3C2410_UDC_EP_INT_EN_REG);
++	udc_writel(int_en_reg | (1<<ep->num),S3C2410_UDC_EP_INT_EN_REG);
++
++
++	/* print some debug message */
++	tmp = desc->bEndpointAddress;
++	dprintk (DEBUG_NORMAL, "enable %s(%d) ep%x%s-blk max %02x\n",
++		_ep->name,ep->num, tmp, desc->bEndpointAddress & USB_DIR_IN ? "in" : "out", max);
++
++	local_irq_restore (flags);
++
++	return 0;
++}
++
++/*
++ * s3c2410_ep_disable
++ */
++static int s3c2410_ep_disable (struct usb_ep *_ep)
++{
++	struct s3c2410_ep	*ep = container_of(_ep, struct s3c2410_ep, ep);
++	unsigned long	flags;
++	u32			int_en_reg;
++
++
++	if (!_ep || !ep->desc) {
++		dprintk(DEBUG_NORMAL, "%s not enabled\n",
++			_ep ? ep->ep.name : NULL);
++		return -EINVAL;
++	}
++
++	local_irq_save(flags);
++
++	printk(KERN_ERR "ep_disable: %s\n",_ep->name);
++
++	ep->desc = NULL;
++	ep->halted = 1;
++
++	nuke (ep->dev, ep, -ESHUTDOWN);
++
++	/* disable irqs */
++	int_en_reg = udc_readl(S3C2410_UDC_EP_INT_EN_REG);
++	udc_writel(int_en_reg & ~(1<<ep->num),S3C2410_UDC_EP_INT_EN_REG);
++
++	local_irq_restore(flags);
++
++	dprintk(DEBUG_NORMAL, "%s disabled\n", _ep->name);
++
++	return 0;
++}
++
++/*
++ * s3c2410_alloc_request
++ */
++static struct usb_request *
++s3c2410_alloc_request (struct usb_ep *_ep, gfp_t mem_flags)
++{
++	struct s3c2410_ep	*ep;
++	struct s3c2410_request	*req;
++
++    	dprintk(DEBUG_VERBOSE,"s3c2410_alloc_request(ep=%p,flags=%d)\n", _ep, mem_flags);
++
++	ep = container_of (_ep, struct s3c2410_ep, ep);
++	if (!_ep)
++		return NULL;
++
++	req = kzalloc (sizeof *req, mem_flags);
++	if (!req)
++		return NULL;
++	INIT_LIST_HEAD (&req->queue);
++	return &req->req;
++}
++
++/*
++ * s3c2410_free_request
++ */
++static void
++s3c2410_free_request (struct usb_ep *_ep, struct usb_request *_req)
++{
++	struct s3c2410_ep	*ep;
++	struct s3c2410_request	*req;
++
++    	dprintk(DEBUG_VERBOSE, "s3c2410_free_request(ep=%p,req=%p)\n", _ep, _req);
++
++	ep = container_of (_ep, struct s3c2410_ep, ep);
++	if (!ep || !_req || (!ep->desc && _ep->name != ep0name))
++		return;
++
++	req = container_of (_req, struct s3c2410_request, req);
++	WARN_ON (!list_empty (&req->queue));
++	kfree (req);
++}
++
++/*
++ * 	s3c2410_alloc_buffer
++ */
++static void *
++s3c2410_alloc_buffer (
++	struct usb_ep *_ep,
++	unsigned bytes,
++	dma_addr_t *dma,
++	gfp_t mem_flags)
++{
++	char *retval;
++
++    	dprintk(DEBUG_VERBOSE,"s3c2410_alloc_buffer()\n");
++
++	if (!the_controller->driver)
++		return NULL;
++	retval = kmalloc (bytes, mem_flags);
++	*dma = (dma_addr_t) retval;
++	return retval;
++}
++
++/*
++ * s3c2410_free_buffer
++ */
++static void
++s3c2410_free_buffer (
++	struct usb_ep *_ep,
++	void *buf,
++	dma_addr_t dma,
++	unsigned bytes)
++{
++    	dprintk(DEBUG_VERBOSE, "s3c2410_free_buffer()\n");
++
++	if (bytes)
++		kfree (buf);
++}
++
++/*
++ * 	s3c2410_queue
++ */
++static int
++s3c2410_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
++{
++	struct s3c2410_request	*req;
++	struct s3c2410_ep	*ep;
++	struct s3c2410_udc	*dev;
++	u32			ep_csr=0;
++	int 			fifo_count=0;
++	unsigned long		flags;
++
++
++	ep = container_of(_ep, struct s3c2410_ep, ep);
++	if (unlikely (!_ep || (!ep->desc && ep->ep.name != ep0name))) {
++		dprintk(DEBUG_NORMAL, "s3c2410_queue: inval 2\n");
++		return -EINVAL;
++	}
++
++	dev = ep->dev;
++	if (unlikely (!dev->driver
++			|| dev->gadget.speed == USB_SPEED_UNKNOWN)) {
++		return -ESHUTDOWN;
++	}
++
++	local_irq_save (flags);
++	
++	req = container_of(_req, struct s3c2410_request, req);
++	if (unlikely (!_req || !_req->complete || !_req->buf
++	|| !list_empty(&req->queue))) {
++		if (!_req)
++			dprintk(DEBUG_NORMAL, "s3c2410_queue: 1 X X X\n");
++		else
++		{
++			dprintk(DEBUG_NORMAL, "s3c2410_queue: 0 %01d %01d %01d\n",!_req->complete,!_req->buf, !list_empty(&req->queue));
++		}
++		local_irq_restore(flags);
++		return -EINVAL;
++	}
++
++	_req->status = -EINPROGRESS;
++	_req->actual = 0;
++
++	dprintk(DEBUG_VERBOSE,"s3c2410_queue: ep%x len %d\n",ep->bEndpointAddress,_req->length);
++	
++	if (ep->bEndpointAddress) {
++		udc_writel(ep->bEndpointAddress&0x7F,S3C2410_UDC_INDEX_REG);
++		ep_csr = udc_readl(ep->bEndpointAddress&USB_DIR_IN ? S3C2410_UDC_IN_CSR1_REG : S3C2410_UDC_OUT_CSR1_REG);
++		fifo_count=fifo_count_out();
++	}
++	else {
++		udc_writel(0,S3C2410_UDC_INDEX_REG);
++		ep_csr = udc_readl(S3C2410_UDC_IN_CSR1_REG);
++	}
++	/* kickstart this i/o queue? */
++	if (list_empty(&ep->queue) && !ep->halted) {
++		if (ep->bEndpointAddress == 0 /* ep0 */) {
++			switch (dev->ep0state) {
++			case EP0_IN_DATA_PHASE:
++				if (write_fifo(ep, req)) {
++					dev->ep0state = EP0_IDLE;
++					req = NULL;
++				}
++				break;
++
++			case EP0_OUT_DATA_PHASE:
++				if ( (!_req->length) || ((ep_csr & 1) && read_fifo(ep,req))) {
++					dev->ep0state = EP0_IDLE;
++					req = NULL;
++				}
++				break;
++
++			default:
++				local_irq_restore(flags);
++				return -EL2HLT;
++			}
++		}
++		else if ((ep->bEndpointAddress & USB_DIR_IN) != 0
++				&& (!(ep_csr&S3C2410_UDC_OCSR1_PKTRDY)) && write_fifo(ep, req)) {
++			req = NULL;
++		} else if ((ep_csr & S3C2410_UDC_OCSR1_PKTRDY) && fifo_count && read_fifo(ep, req)) {
++			req = NULL;
++		}
++
++	}
++
++	/* pio or dma irq handler advances the queue. */
++	if (likely (req != 0))
++		list_add_tail(&req->queue, &ep->queue);
++
++	local_irq_restore(flags);
++
++	dprintk(DEBUG_VERBOSE, "s3c2410_queue normal end\n");
++	return 0;
++}
++
++/*
++ * 	s3c2410_dequeue
++ */
++static int s3c2410_dequeue (struct usb_ep *_ep, struct usb_request *_req)
++{
++	struct s3c2410_ep	*ep;
++	struct s3c2410_udc	*udc;
++	int			retval = -EINVAL;
++	unsigned long		flags;
++	struct s3c2410_request	*req = NULL;
++
++    	dprintk(DEBUG_VERBOSE,"s3c2410_dequeue(ep=%p,req=%p)\n", _ep, _req);
++
++	if (!the_controller->driver)
++		return -ESHUTDOWN;
++
++	if (!_ep || !_req)
++		return retval;
++	ep = container_of (_ep, struct s3c2410_ep, ep);
++	udc = container_of (ep->gadget, struct s3c2410_udc, gadget);
++
++	local_irq_save (flags);
++
++	list_for_each_entry (req, &ep->queue, queue) {
++		if (&req->req == _req) {
++			list_del_init (&req->queue);
++			_req->status = -ECONNRESET;
++			retval = 0;
++			break;
++		}
++	}
++
++	if (retval == 0) {
++		dprintk(DEBUG_VERBOSE, "dequeued req %p from %s, len %d buf %p\n",
++				req, _ep->name, _req->length, _req->buf);
++
++		done(ep, req, -ECONNRESET);
++	}
++	local_irq_restore (flags);
++
++	return retval;
++}
++
++
++/*
++ * s3c2410_set_halt
++ */
++static int
++s3c2410_set_halt (struct usb_ep *_ep, int value)
++{
++	return 0;
++}
++
++
++static const struct usb_ep_ops s3c2410_ep_ops = {
++	.enable         = s3c2410_ep_enable,
++	.disable        = s3c2410_ep_disable,
++
++	.alloc_request  = s3c2410_alloc_request,
++	.free_request   = s3c2410_free_request,
++
++	.alloc_buffer   = s3c2410_alloc_buffer,
++	.free_buffer    = s3c2410_free_buffer,
++
++	.queue          = s3c2410_queue,
++	.dequeue        = s3c2410_dequeue,
++
++	.set_halt       = s3c2410_set_halt,
++};
++
++/*------------------------- usb_gadget_ops ----------------------------------*/
++
++/*
++ * 	s3c2410_g_get_frame
++ */
++static int s3c2410_g_get_frame (struct usb_gadget *_gadget)
++{
++	int tmp;
++
++	dprintk(DEBUG_VERBOSE,"s3c2410_g_get_frame()\n");
++
++	tmp = udc_readl(S3C2410_UDC_FRAME_NUM2_REG) << 8;
++	tmp |= udc_readl(S3C2410_UDC_FRAME_NUM1_REG);
++
++	return tmp & 0xffff;
++}
++
++/*
++ * 	s3c2410_wakeup
++ */
++static int s3c2410_wakeup (struct usb_gadget *_gadget)
++{
++
++	dprintk(DEBUG_NORMAL,"s3c2410_wakeup()\n");
++
++	return 0;
++}
++
++/*
++ * 	s3c2410_set_selfpowered
++ */
++static int s3c2410_set_selfpowered (struct usb_gadget *_gadget, int value)
++{
++	struct s3c2410_udc  *udc;
++
++	dprintk(DEBUG_NORMAL, "s3c2410_set_selfpowered()\n");
++
++	udc = container_of (_gadget, struct s3c2410_udc, gadget);
++
++	if (value)
++		udc->devstatus |= (1 << USB_DEVICE_SELF_POWERED);
++	else
++		udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
++
++	return 0;
++}
++
++static void udc_disable(struct s3c2410_udc *dev);
++static void udc_enable(struct s3c2410_udc *dev);
++
++static int s3c2410_pullup (struct usb_gadget *_gadget, int is_on)
++{
++	struct s3c2410_udc  *udc;
++
++	dprintk(DEBUG_NORMAL, "s3c2410_pullup()\n");
++	
++	udc = container_of (_gadget, struct s3c2410_udc, gadget);
++
++	if (udc_info && udc_info->udc_command) {
++		if (is_on)
++			udc_enable(udc);
++		else {
++			if (udc->gadget.speed != USB_SPEED_UNKNOWN) {
++				if (udc->driver && udc->driver->disconnect)
++					udc->driver->disconnect(&udc->gadget);
++			
++			}
++			udc_disable(udc);
++		}
++	}
++	else
++		return -EOPNOTSUPP;
++
++	return 0;
++}
++
++static const struct usb_gadget_ops s3c2410_ops = {
++	.get_frame          = s3c2410_g_get_frame,
++	.wakeup             = s3c2410_wakeup,
++	.set_selfpowered    = s3c2410_set_selfpowered,
++        .pullup             = s3c2410_pullup,
++};
++
++
++/*------------------------- gadget driver handling---------------------------*/
++/*
++ * udc_disable
++ */
++static void udc_disable(struct s3c2410_udc *dev)
++{
++	dprintk(DEBUG_NORMAL, "udc_disable called\n");
++
++	/* Disable all interrupts */
++	udc_writel(0x00, S3C2410_UDC_USB_INT_EN_REG);
++	udc_writel(0x00, S3C2410_UDC_EP_INT_EN_REG);
++
++	/* Clear the interrupt registers */
++	udc_writel(   S3C2410_UDC_USBINT_RESET  | \
++			S3C2410_UDC_USBINT_RESUME | \
++			S3C2410_UDC_USBINT_SUSPEND, \
++			S3C2410_UDC_USB_INT_REG);
++	udc_writel(   0x1F, S3C2410_UDC_EP_INT_REG);
++	
++
++	/* Good bye, cruel world */
++	if (udc_info && udc_info->udc_command)
++		udc_info->udc_command(S3C2410_UDC_P_DISABLE);
++
++	/* Set address to 0 */
++	/*udc_writel( 0x80, S3C2410_UDC_FUNC_ADDR_REG);*/
++
++	/* Set speed to unknown */
++	dev->gadget.speed = USB_SPEED_UNKNOWN;
++}
++/*
++ * udc_reinit
++ */
++static void udc_reinit(struct s3c2410_udc *dev)
++{
++	u32     i;
++
++	/* device/ep0 records init */
++	INIT_LIST_HEAD (&dev->gadget.ep_list);
++	INIT_LIST_HEAD (&dev->gadget.ep0->ep_list);
++	dev->ep0state = EP0_IDLE;
++
++
++	for (i = 0; i < S3C2410_ENDPOINTS; i++) {
++		struct s3c2410_ep *ep = &dev->ep[i];
++
++		if (i != 0)
++			list_add_tail (&ep->ep.ep_list, &dev->gadget.ep_list);
++
++		ep->dev = dev;
++		ep->desc = NULL;
++		ep->halted = 0;
++		INIT_LIST_HEAD (&ep->queue);
++	}
++}
++
++/*
++ * udc_enable
++ */
++static void udc_enable(struct s3c2410_udc *dev)
++{
++	int i;
++
++	dprintk(DEBUG_NORMAL, "udc_enable called\n");
++
++	/* dev->gadget.speed = USB_SPEED_UNKNOWN; */
++	dev->gadget.speed = USB_SPEED_FULL;
++
++	/* Set MAXP for all endpoints */
++	for (i = 0; i < S3C2410_ENDPOINTS; i++) {
++
++		udc_writel(i, S3C2410_UDC_INDEX_REG);
++		udc_writel((dev->ep[i].ep.maxpacket&0x7ff)>>3,S3C2410_UDC_MAXP_REG);
++	}
++
++	/* Set default power state */
++	udc_writel(DEFAULT_POWER_STATE, S3C2410_UDC_PWR_REG);
++
++	/* Enable reset and suspend interrupt interrupts */
++	udc_writel(1<<2 | 1<<0 ,S3C2410_UDC_USB_INT_EN_REG);
++
++	/* Enable ep0 interrupt */
++	udc_writel(0x01,S3C2410_UDC_EP_INT_EN_REG);
++
++	/* time to say "hello, world" */
++	if (udc_info && udc_info->udc_command)
++		udc_info->udc_command(S3C2410_UDC_P_ENABLE);
++}
++
++
++/*
++ * 	nop_release
++ */
++static void nop_release (struct device *dev)
++{
++	        dprintk(DEBUG_NORMAL, "%s %s\n", __FUNCTION__, dev->bus_id);
++}
++/*
++ *	usb_gadget_register_driver
++ */
++int
++usb_gadget_register_driver (struct usb_gadget_driver *driver)
++{
++	struct s3c2410_udc *udc = the_controller;
++	int		retval;
++
++    	dprintk(DEBUG_NORMAL, "usb_gadget_register_driver() '%s'\n",
++		driver->driver.name);
++
++	/* Sanity checks */
++	if (!udc)
++		return -ENODEV;
++	if (udc->driver)
++		return -EBUSY;
++	if (!driver->bind || !driver->unbind || !driver->setup
++			|| driver->speed == USB_SPEED_UNKNOWN)
++		return -EINVAL;
++
++	/* Hook the driver */
++	udc->driver = driver;
++	udc->gadget.dev.driver = &driver->driver;
++
++	/*Bind the driver */
++	device_add(&udc->gadget.dev);
++	dprintk(DEBUG_NORMAL, "binding gadget driver '%s'\n", driver->driver.name);
++	if ((retval = driver->bind (&udc->gadget)) != 0) {
++		device_del(&udc->gadget.dev);
++		udc->driver = NULL;
++		udc->gadget.dev.driver = NULL;
++		return retval;
++	}
++
++        /* driver->driver.bus = 0; */
++
++	/* Enable udc */
++	udc_enable(udc);
++
++	return 0;
++}
++
++
++/*
++ * 	usb_gadget_unregister_driver
++ */
++int
++usb_gadget_unregister_driver (struct usb_gadget_driver *driver)
++{
++	struct s3c2410_udc *udc = the_controller;
++
++	if (!udc)
++		return -ENODEV;
++	if (!driver || driver != udc->driver)
++		return -EINVAL;
++
++    	dprintk(DEBUG_NORMAL,"usb_gadget_register_driver() '%s'\n",
++		driver->driver.name);
++
++	if (driver->disconnect)
++		driver->disconnect(&udc->gadget);
++
++	driver->unbind (&udc->gadget);
++	device_del(&udc->gadget.dev);
++	udc->driver = NULL;
++
++	device_release_driver (&udc->gadget.dev);
++
++	/* Disable udc */
++	udc_disable(udc);
++
++	return 0;
++}
++
++/*---------------------------------------------------------------------------*/
++static struct s3c2410_udc memory = {
++	.gadget = {
++		.ops		= &s3c2410_ops,
++		.ep0		= &memory.ep[0].ep,
++		.name		= gadget_name,
++		.dev = {
++			.bus_id		= "gadget",
++			.release	= nop_release,
++		},
++	},
++
++	/* control endpoint */
++	.ep[0] = {
++		.num		= 0,
++		.ep = {
++			.name		= ep0name,
++			.ops		= &s3c2410_ep_ops,
++			.maxpacket	= EP0_FIFO_SIZE,
++		},
++		.dev		= &memory,
++	},
++
++	/* first group of endpoints */
++	.ep[1] = {
++		.num		= 1,
++		.ep = {
++			.name		= "ep1-bulk",
++			.ops		= &s3c2410_ep_ops,
++			.maxpacket	= EP_FIFO_SIZE,
++		},
++		.dev		= &memory,
++		.fifo_size	= EP_FIFO_SIZE,
++		.bEndpointAddress = 1,
++		.bmAttributes	= USB_ENDPOINT_XFER_BULK,
++	},
++	.ep[2] = {
++		.num		= 2,
++		.ep = {
++			.name		= "ep2-bulk",
++			.ops		= &s3c2410_ep_ops,
++			.maxpacket	= EP_FIFO_SIZE,
++		},
++		.dev		= &memory,
++		.fifo_size	= EP_FIFO_SIZE,
++		.bEndpointAddress = 2,
++		.bmAttributes	= USB_ENDPOINT_XFER_BULK,
++	},
++	.ep[3] = {
++		.num		= 3,
++		.ep = {
++			.name		= "ep3-bulk",
++			.ops		= &s3c2410_ep_ops,
++			.maxpacket	= EP_FIFO_SIZE,
++		},
++		.dev		= &memory,
++		.fifo_size	= EP_FIFO_SIZE,
++		.bEndpointAddress = 3,
++		.bmAttributes	= USB_ENDPOINT_XFER_BULK,
++	},
++	.ep[4] = {
++		.num		= 4,
++		.ep = {
++			.name		= "ep4-bulk",
++			.ops		= &s3c2410_ep_ops,
++			.maxpacket	= EP_FIFO_SIZE,
++		},
++		.dev		= &memory,
++		.fifo_size	= EP_FIFO_SIZE,
++		.bEndpointAddress = 4,
++		.bmAttributes	= USB_ENDPOINT_XFER_BULK,
++	}
++
++};
++
++/*
++ *	probe - binds to the platform device
++ */
++static int s3c2410_udc_probe(struct platform_device *pdev)
++{
++	struct s3c2410_udc *udc = &memory;
++	int retval;
++
++	dprintk(DEBUG_NORMAL,"s3c2410_udc_probe\n");
++
++	usb_bus_clock = clk_get(NULL, "usb-bus");
++	if (IS_ERR(usb_bus_clock)) {
++		printk(KERN_INFO "failed to get usb bus clock source\n");
++		return PTR_ERR(usb_bus_clock);
++	}
++
++	clk_enable(usb_bus_clock);
++
++	udc_clock = clk_get(NULL, "usb-device");
++	if (IS_ERR(udc_clock)) {
++		printk(KERN_INFO "failed to get udc clock source\n");
++		return PTR_ERR(udc_clock);
++	}
++
++	clk_enable(udc_clock);
++
++	mdelay(10);
++
++	dprintk(DEBUG_VERBOSE, "got and enabled clocks\n");
++
++	if (strncmp(pdev->name, "s3c2440", 7) == 0) {
++		printk("Detected S3C2440 - increasing FIFO to 128 bytes\n");
++		memory.ep[1].fifo_size = S3C2440_EP_FIFO_SIZE;
++		memory.ep[2].fifo_size = S3C2440_EP_FIFO_SIZE;
++		memory.ep[3].fifo_size = S3C2440_EP_FIFO_SIZE;
++		memory.ep[4].fifo_size = S3C2440_EP_FIFO_SIZE;
++	}
++
++	spin_lock_init (&udc->lock);
++	udc_info = pdev->dev.platform_data;
++
++	rsrc_start = S3C2410_PA_USBDEV;
++	rsrc_len   = S3C24XX_SZ_USBDEV;
++
++	if (!request_mem_region(rsrc_start, rsrc_len, gadget_name))
++		return -EBUSY;
++
++	base_addr = ioremap(rsrc_start, rsrc_len);
++	if (!base_addr) {
++		retval = -ENOMEM;
++		goto err_mem;
++	}
++	
++	device_initialize(&udc->gadget.dev);
++	udc->gadget.dev.parent = &pdev->dev;
++	udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
++
++	the_controller = udc;
++	platform_set_drvdata(pdev, udc);
++
++	udc_disable(udc);
++	udc_reinit(udc);
++
++	/* irq setup after old hardware state is cleaned up */
++	retval = request_irq(IRQ_USBD, s3c2410_udc_irq,
++		SA_INTERRUPT, gadget_name, udc);
++
++	if (retval != 0) {
++		printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++			gadget_name, IRQ_USBD, retval);
++		retval = -EBUSY;
++		goto err_map;
++	}
++	dprintk(DEBUG_VERBOSE, "%s: got irq %i\n", gadget_name, IRQ_USBD);
++
++#ifdef ENABLE_SYSFS
++	/* create device files */
++	device_create_file(&pdev->dev, &dev_attr_regs);
++#endif
++	return 0;
++
++err_map:
++	iounmap(base_addr);
++err_mem:
++	release_mem_region(rsrc_start, rsrc_len);
++
++	return retval;
++}
++
++/*
++ * 	s3c2410_udc_remove
++ */
++static int s3c2410_udc_remove(struct platform_device *pdev)
++{
++	struct s3c2410_udc *udc = platform_get_drvdata(pdev);
++
++	dprintk(DEBUG_NORMAL, "s3c2410_udc_remove\n");
++	usb_gadget_unregister_driver(udc->driver);
++
++	if (udc->got_irq) {
++		free_irq(IRQ_USBD, udc);
++		udc->got_irq = 0;
++	}
++
++	iounmap(base_addr);
++	release_mem_region(rsrc_start, rsrc_len);
++	
++	platform_set_drvdata(pdev, NULL);
++	kfree(udc);
++
++	if (!IS_ERR(udc_clock) && udc_clock != NULL) {
++		clk_disable(udc_clock);
++		clk_put(udc_clock);
++		udc_clock = NULL;
++	}
++
++	if (!IS_ERR(usb_bus_clock) && usb_bus_clock != NULL) {
++		clk_disable(usb_bus_clock);
++		clk_put(usb_bus_clock);
++		usb_bus_clock = NULL;
++	}
++
++	return 0;
++}
++
++static struct platform_driver udc_driver_2410 = {
++	.driver		= {
++		.name 	= "s3c2410-usbgadget",
++		.owner	= THIS_MODULE,
++	},
++	.probe          = s3c2410_udc_probe,
++	.remove         = s3c2410_udc_remove,
++};
++
++static struct platform_driver udc_driver_2440 = {
++	.driver		= {
++		.name	= "s3c2440-usbgadget",
++		.owner	= THIS_MODULE,
++	},
++	.probe          = s3c2410_udc_probe,
++	.remove         = s3c2410_udc_remove,
++};
++
++static int __init udc_init(void)
++{
++	int retval;
++
++	dprintk(DEBUG_NORMAL, "%s: version %s\n", gadget_name, DRIVER_VERSION);
++
++	retval = platform_driver_register(&udc_driver_2410);
++	if (retval)
++		return retval;
++
++	return platform_driver_register(&udc_driver_2440);
++}
++
++static void __exit udc_exit(void)
++{
++	platform_driver_unregister(&udc_driver_2410);
++	platform_driver_unregister(&udc_driver_2440);
++}
++
++
++EXPORT_SYMBOL (usb_gadget_unregister_driver);
++EXPORT_SYMBOL (usb_gadget_register_driver);
++
++module_init(udc_init);
++module_exit(udc_exit);
++
++MODULE_AUTHOR(DRIVER_AUTHOR);
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_VERSION(DRIVER_VERSION);
++MODULE_LICENSE("GPL");
+Index: linux-2.6.17.7-new/drivers/usb/gadget/s3c2410_udc.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/drivers/usb/gadget/s3c2410_udc.h	2006-08-07 09:34:31.000000000 +0200
+@@ -0,0 +1,187 @@
++#ifndef _S3C2410_UDC_H
++#define _S3C2410_UDC_H
++
++struct s3c2410_ep {
++	struct list_head		queue;
++	unsigned long			last_io;	/* jiffies timestamp */
++	struct usb_gadget		*gadget;
++	struct s3c2410_udc		*dev;
++	const struct usb_endpoint_descriptor *desc;
++	struct usb_ep			ep;
++	u8				num;
++
++	unsigned short			fifo_size;
++	u8				bEndpointAddress;
++	u8				bmAttributes;
++
++	unsigned			halted : 1;
++	unsigned			already_seen : 1;
++	unsigned			setup_stage : 1;
++};
++
++
++/* Warning : ep0 has a fifo of 16 bytes */
++/* Don't try to set 32 or 64            */
++#define EP0_FIFO_SIZE		16
++#define EP_FIFO_SIZE		64
++#define DEFAULT_POWER_STATE	0x00
++
++#define S3C2440_EP_FIFO_SIZE	128
++
++static const char ep0name [] = "ep0";
++
++static const char *const ep_name[] = {
++	ep0name,                                /* everyone has ep0 */
++	/* s3c2410 four bidirectional bulk endpoints */
++	"ep1-bulk", "ep2-bulk", "ep3-bulk", "ep4-bulk",
++};
++
++#define S3C2410_ENDPOINTS       ARRAY_SIZE(ep_name)
++
++struct s3c2410_request {
++	struct list_head		queue;		/* ep's requests */
++	struct usb_request		req;
++};
++
++enum ep0_state {
++        EP0_IDLE,
++        EP0_IN_DATA_PHASE,
++        EP0_OUT_DATA_PHASE,
++        EP0_END_XFER,
++        EP0_STALL,
++};
++
++static const char *ep0states[]= {
++        "EP0_IDLE",
++        "EP0_IN_DATA_PHASE",
++        "EP0_OUT_DATA_PHASE",
++        "EP0_END_XFER",
++        "EP0_STALL",
++};
++
++struct s3c2410_udc {
++	spinlock_t			lock;
++
++	struct s3c2410_ep		ep[S3C2410_ENDPOINTS];
++	int				address;
++	struct usb_gadget		gadget;
++	struct usb_gadget_driver	*driver;
++	struct s3c2410_request		fifo_req;
++	u8				fifo_buf[EP_FIFO_SIZE];
++	u16				devstatus;
++
++	u32				port_status;
++    	int 	    	    	    	ep0state;
++
++	unsigned			got_irq : 1;
++
++	unsigned			req_std : 1;
++	unsigned			req_config : 1;
++	unsigned			req_pending : 1;
++};
++
++/****************** MACROS ******************/
++/* #define BIT_MASK	BIT_MASK*/
++#define BIT_MASK	0xFF
++
++#define maskb(base,v,m,a)      \
++	        writeb((readb(base+a) & ~(m))|((v)&(m)), (base+a))
++
++#define maskw(base,v,m,a)      \
++	        writew((readw(base+a) & ~(m))|((v)&(m)), (base+a))
++
++#define maskl(base,v,m,a)      \
++	        writel((readl(base+a) & ~(m))|((v)&(m)), (base+a))
++
++#define clear_ep0_sst(base) do {			\
++    	S3C2410_UDC_SETIX(base,EP0); 			\
++	writel(0x00, base+S3C2410_UDC_EP0_CSR_REG); 	\
++} while(0)
++
++#define clear_ep0_se(base) do {				\
++    	S3C2410_UDC_SETIX(base,EP0); 			\
++	maskl(base,S3C2410_UDC_EP0_CSR_SSE,		\
++	    	BIT_MASK, S3C2410_UDC_EP0_CSR_REG); 	\
++} while(0)
++
++#define clear_ep0_opr(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP0);			\
++	maskl(base,S3C2410_UDC_EP0_CSR_SOPKTRDY,	\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG); 	\
++} while(0)
++
++#define set_ep0_ipr(base) do {				\
++   	S3C2410_UDC_SETIX(base,EP0);			\
++	maskl(base,S3C2410_UDC_EP0_CSR_IPKRDY,		\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG); 	\
++} while(0)
++
++#define set_ep0_de(base) do {				\
++   	S3C2410_UDC_SETIX(base,EP0);			\
++	maskl(base,S3C2410_UDC_EP0_CSR_DE,		\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);	\
++} while(0)
++
++#if 0
++#define set_ep0_ss(base) do {				\
++   	S3C2410_UDC_SETIX(base,EP0);				\
++	maskl(base,S3C2410_UDC_EP0_CSR_SENDSTL|S3C2410_UDC_EP0_CSR_SOPKTRDY,	\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);	\
++} while(0)
++#else
++#define set_ep0_ss(base) do {				\
++   	S3C2410_UDC_SETIX(base,EP0);				\
++	maskl(base,S3C2410_UDC_EP0_CSR_SENDSTL,	\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);	\
++} while(0)
++#endif
++
++#define set_ep0_de_out(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP0);			\
++	maskl(base,(S3C2410_UDC_EP0_CSR_SOPKTRDY 	\
++		| S3C2410_UDC_EP0_CSR_DE),		\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);	\
++} while(0)
++
++#define set_ep0_sse_out(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP0);			\
++	maskl(base,(S3C2410_UDC_EP0_CSR_SOPKTRDY 	\
++		| S3C2410_UDC_EP0_CSR_SSE),		\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);	\
++} while(0)
++
++#define set_ep0_de_in(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP0);			\
++	maskl(base,(S3C2410_UDC_EP0_CSR_IPKRDY		\
++		| S3C2410_UDC_EP0_CSR_DE),		\
++		BIT_MASK, S3C2410_UDC_EP0_CSR_REG);		\
++} while(0)
++
++
++
++#define clear_stall_ep1_out(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP1);			\
++	orl(0,base+S3C2410_UDC_OUT_CSR1_REG);		\
++} while(0)
++
++
++#define clear_stall_ep2_out(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP2);			\
++	orl(0, base+S3C2410_UDC_OUT_CSR1_REG);		\
++} while(0)
++
++
++#define clear_stall_ep3_out(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP3);			\
++	orl(0,base+S3C2410_UDC_OUT_CSR1_REG);		\
++} while(0)
++
++
++#define clear_stall_ep4_out(base) do {			\
++   	S3C2410_UDC_SETIX(base,EP4);			\
++	orl(0, base+S3C2410_UDC_OUT_CSR1_REG);		\
++} while(0)
++
++#endif
++
++
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-udc.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/regs-udc.h	2006-08-07 09:31:05.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-udc.h	2006-08-07 09:34:31.000000000 +0200
+@@ -17,8 +17,7 @@
+ #ifndef __ASM_ARCH_REGS_UDC_H
+ #define __ASM_ARCH_REGS_UDC_H
+ 
+-
+-#define S3C2410_USBDREG(x) ((x) + S3C24XX_VA_USBDEV)
++#define S3C2410_USBDREG(x) (x)
+ 
+ #define S3C2410_UDC_FUNC_ADDR_REG	S3C2410_USBDREG(0x0140)
+ #define S3C2410_UDC_PWR_REG		S3C2410_USBDREG(0x0144)
+@@ -142,8 +141,8 @@
+ #define S3C2410_UDC_OCSR2_ISO		(1<<6) // R/W
+ #define S3C2410_UDC_OCSR2_DMAIEN	(1<<5) // R/W
+ 
+-#define S3C2410_UDC_SETIX(x)	    \
+-	__raw_writel(S3C2410_UDC_INDEX_ ## x, S3C2410_UDC_INDEX_REG);
++#define S3C2410_UDC_SETIX(base,x)	    \
++	writel(S3C2410_UDC_INDEX_ ## x, base+S3C2410_UDC_INDEX_REG);
+ 
+ 
+ #define S3C2410_UDC_EP0_CSR_OPKRDY	(1<<0)
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/udc.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/udc.h	2006-08-07 09:34:31.000000000 +0200
+@@ -0,0 +1,32 @@
++/* linux/include/asm/arch-s3c2410/udc.h
++ *
++ * Copyright (c) 2005 Arnaud Patard <arnaud.patard at rtp-net.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.
++ *
++ *
++ *  Changelog:
++ *	14-Mar-2005	RTP	Created file
++ *	02-Aug-2005	RTP	File rename
++ *	07-Sep-2005	BJD	Minor cleanups, changed cmd to enum
++*/
++
++#ifndef __ASM_ARM_ARCH_UDC_H
++#define __ASM_ARM_ARCH_UDC_H
++
++enum s3c2410_udc_cmd_e {
++	S3C2410_UDC_P_ENABLE	= 1,	/* Pull-up enable        */
++	S3C2410_UDC_P_DISABLE	= 2,	/* Pull-up disable       */
++	S3C2410_UDC_P_RESET	= 3,	/* UDC reset, in case of */
++};
++
++struct s3c2410_udc_mach_info {
++	void	(*udc_command)(enum s3c2410_udc_cmd_e);
++};
++
++extern void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *);
++
++#endif /* __ASM_ARM_ARCH_UDC_H */
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 09:34:20.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 09:34:44.000000000 +0200
+@@ -49,6 +49,7 @@
+ #include <asm/arch/regs-gpio.h>
+ #include <asm/arch/fb.h>
+ #include <asm/arch/mmc.h>
++#include <asm/arch/udc.h>
+ #include <asm/arch/nand.h>
+ 
+ #include "devs.h"
+@@ -246,6 +247,26 @@
+ 	.ocr_avail	= MMC_VDD_32_33,
+ };
+ 
++static void qt2410_udc_pullup(enum s3c2410_udc_cmd_e cmd)
++{
++	printk(KERN_DEBUG "udc: pullup(%d)\n", cmd);
++
++	switch (cmd) {
++	case S3C2410_UDC_P_ENABLE:
++		break;
++	case S3C2410_UDC_P_DISABLE:
++		break;
++	case S3C2410_UDC_P_RESET:
++		break;
++	default:
++		break;
++	}
++}
++
++static struct s3c2410_udc_mach_info qt2410_udc_cfg = {
++	.udc_command	= qt2410_udc_pullup,
++};
++
+ static void __init qt2410_map_io(void)
+ {
+ 	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
+@@ -271,6 +292,7 @@
+ 	s3c_device_nand.dev.platform_data = &qt2410_nand_info;
+ 	s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
+ 	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
++	s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
+ 
+ 	s3c2410_pm_init();
+ }

Added: trunk/oe/packages/linux/linux-qt2410/new/patches-20060907.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/oe/packages/linux/linux-qt2410/new/patches-20060907.tar.bz2
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/oe/packages/linux/linux-qt2410/patches-2.6.17.7-qt2401-20060806.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/oe/packages/linux/linux-qt2410/patches-2.6.17.7-qt2401-20060806.tar.bz2
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/oe/packages/linux/linux-qt2410/qt2410-biglcd.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/qt2410-biglcd.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/qt2410-biglcd.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,178 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-27 19:07:33.000000000 +0530
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-28 15:38:02.000000000 +0530
+@@ -94,6 +94,133 @@
+ 
+ /* LCD driver info */
+ 
++/* Configuration for 640x480 SHARP LQ080V3DG01 */
++static struct s3c2410fb_mach_info qt2410_biglcd_cfg __initdata = {
++	.regs	= {
++
++		.lcdcon1	= S3C2410_LCDCON1_TFT16BPP |
++				  S3C2410_LCDCON1_TFT |
++				  S3C2410_LCDCON1_CLKVAL(0x01),	/* HCLK/4 */
++
++		.lcdcon2	= S3C2410_LCDCON2_VBPD(18) |	/* 19 */
++				  S3C2410_LCDCON2_LINEVAL(479) |
++				  S3C2410_LCDCON2_VFPD(10) |	/* 11 */
++				  S3C2410_LCDCON2_VSPW(14),	/* 15 */
++
++		.lcdcon3	= S3C2410_LCDCON3_HBPD(43) |	/* 44 */
++				  S3C2410_LCDCON3_HOZVAL(639) |	/* 640 */
++				  S3C2410_LCDCON3_HFPD(115),	/* 116 */
++
++		.lcdcon4	= S3C2410_LCDCON4_MVAL(0) |
++				  S3C2410_LCDCON4_HSPW(95),	/* 96 */
++
++		.lcdcon5	= S3C2410_LCDCON5_FRM565 |
++				  S3C2410_LCDCON5_INVVLINE |
++				  S3C2410_LCDCON5_INVVFRAME |
++				  S3C2410_LCDCON5_PWREN |
++				  S3C2410_LCDCON5_HWSWP,
++	},
++
++#if 0
++	/* currently setup by downloader */
++	.gpccon		= 0xaa940659,
++	.gpccon_mask	= 0xffffffff,
++	.gpcup		= 0x0000ffff,
++	.gpcup_mask	= 0xffffffff,
++	.gpdcon		= 0xaa84aaa0,
++	.gpdcon_mask	= 0xffffffff,
++	.gpdup		= 0x0000faff,
++	.gpdup_mask	= 0xffffffff,
++#endif
++
++	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
++
++	.width		= 640,
++	.height		= 480,
++
++	.xres		= {
++		.min	= 640,
++		.max	= 640,
++		.defval	= 640,
++	},
++
++	.yres		= {
++		.min	= 480,
++		.max	= 480,
++		.defval = 480,
++	},
++
++	.bpp		= {
++		.min	= 16,
++		.max	= 16,
++		.defval = 16,
++	},
++};
++
++/* Configuration for 480x640 toppoly TD028TTEC1 */
++static struct s3c2410fb_mach_info qt2410_prodlcd_cfg __initdata = {
++	.regs	= {
++
++		.lcdcon1	= S3C2410_LCDCON1_TFT16BPP |
++				  S3C2410_LCDCON1_TFT |
++				  S3C2410_LCDCON1_CLKVAL(0x01),	/* HCLK/4 */
++
++		.lcdcon2	= S3C2410_LCDCON2_VBPD(1) |	/* 2 */
++				  S3C2410_LCDCON2_LINEVAL(639) |/* 640 */
++				  S3C2410_LCDCON2_VFPD(3) |	/* 4 */
++				  S3C2410_LCDCON2_VSPW(1),	/* 2 */
++
++		.lcdcon3	= S3C2410_LCDCON3_HBPD(7) |	/* 8 */
++				  S3C2410_LCDCON3_HOZVAL(479) |	/* 479 */
++				  S3C2410_LCDCON3_HFPD(23),	/* 24 */
++
++		.lcdcon4	= S3C2410_LCDCON4_MVAL(0) |
++				  S3C2410_LCDCON4_HSPW(7),	/* 8 */
++
++		.lcdcon5	= S3C2410_LCDCON5_FRM565 |
++				  S3C2410_LCDCON5_INVVLINE |
++				  S3C2410_LCDCON5_INVVFRAME |
++				  S3C2410_LCDCON5_PWREN |
++				  S3C2410_LCDCON5_HWSWP,
++	},
++
++#if 0
++	/* currently setup by downloader */
++	.gpccon		= 0xaa940659,
++	.gpccon_mask	= 0xffffffff,
++	.gpcup		= 0x0000ffff,
++	.gpcup_mask	= 0xffffffff,
++	.gpdcon		= 0xaa84aaa0,
++	.gpdcon_mask	= 0xffffffff,
++	.gpdup		= 0x0000faff,
++	.gpdup_mask	= 0xffffffff,
++#endif
++
++	.lpcsel		= ((0xCE6) & ~7) | 1<<4,
++
++	.width		= 480,
++	.height		= 640,
++
++	.xres		= {
++		.min	= 480,
++		.max	= 480,
++		.defval	= 480,
++	},
++
++	.yres		= {
++		.min	= 640,
++		.max	= 640,
++		.defval = 640,
++	},
++
++	.bpp		= {
++		.min	= 16,
++		.max	= 16,
++		.defval = 16,
++	},
++};
++
++/* Config for 240x320 LCD */
+ static struct s3c2410fb_mach_info qt2410_lcd_cfg __initdata = {
+ 	.regs	= {
+ 
+@@ -275,6 +402,17 @@
+ 	.oversampling_shift = 2,
+ };
+ 
++static char tft_type = 's';
++
++int __init tft_setup(char *str)
++{
++	tft_type = str[0];
++	return 1;
++}
++
++__setup("tft=", tft_setup);
++
++
+ static void __init qt2410_map_io(void)
+ {
+ 	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
+@@ -299,7 +437,20 @@
+ 
+ 	s3c_device_nand.dev.platform_data = &qt2410_nand_info;
+ 	s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
+-	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
++
++	switch (tft_type) {
++	case 'p': /* production */
++		s3c24xx_fb_set_platdata(&qt2410_prodlcd_cfg);
++		break;
++	case 'b': /* big */
++		s3c24xx_fb_set_platdata(&qt2410_biglcd_cfg);
++		break;
++	case 's': /* small */
++	default:
++		s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
++		break;
++	}
++
+ 	s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
+ 	set_s3c2410ts_info(&qt2410_ts_cfg);
+ 

Added: trunk/oe/packages/linux/linux-qt2410/qt2410-touchscreen.patch
===================================================================
--- trunk/oe/packages/linux/linux-qt2410/qt2410-touchscreen.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410/qt2410-touchscreen.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,530 @@
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/devs.c	2006-08-07 09:34:31.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.c	2006-08-07 17:36:09.000000000 +0200
+@@ -37,6 +37,7 @@
+ 
+ #include <asm/arch/regs-serial.h>
+ #include <asm/arch/udc.h>
++#include <asm/arch/ts.h>
+ 
+ #include "devs.h"
+ 
+@@ -137,6 +138,23 @@
+ 
+ EXPORT_SYMBOL(s3c_device_nand);
+ 
++/* Touchscreen */
++struct platform_device s3c_device_ts = {
++	.name		  = "s3c2410-ts",
++	.id		  = -1,
++};
++
++EXPORT_SYMBOL(s3c_device_ts);
++
++static struct s3c2410_ts_mach_info s3c2410ts_info;
++
++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
++{
++	memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
++	s3c_device_ts.dev.platform_data = &s3c2410ts_info;
++}
++EXPORT_SYMBOL(set_s3c2410ts_info);
++
+ /* USB Device (Gadget)*/
+ 
+ static struct resource s3c_usbgadget_resource[] = {
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.h
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/devs.h	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/devs.h	2006-08-07 17:36:09.000000000 +0200
+@@ -39,6 +39,7 @@
+ extern struct platform_device s3c_device_timer3;
+ 
+ extern struct platform_device s3c_device_usbgadget;
++extern struct platform_device s3c_device_ts;
+ 
+ /* s3c2440 specific devices */
+ 
+Index: linux-2.6.17.7-new/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/input/touchscreen/Kconfig	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/drivers/input/touchscreen/Kconfig	2006-08-07 17:36:09.000000000 +0200
+@@ -49,6 +49,24 @@
+ 	  To compile this driver as a module, choose M here: the
+ 	  module will be called corgi_ts.
+ 
++config TOUCHSCREEN_S3C2410
++	tristate "Samsung S3C2410 touchscreen input driver"
++	depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
++	select SERIO
++	help
++	  Say Y here if you have the s3c2410 touchscreen.
++
++	  If unsure, say N.
++
++	  To compile this driver as a module, choose M here: the
++	  module will be called s3c2410_ts.
++
++config TOUCHSCREEN_S3C2410_DEBUG
++	boolean "Samsung S3C2410 touchscreen debug messages"
++	depends on TOUCHSCREEN_S3C2410
++	help
++	  Select this if you want debug messages
++
+ config TOUCHSCREEN_GUNZE
+ 	tristate "Gunze AHL-51S touchscreen"
+ 	select SERIO
+Index: linux-2.6.17.7-new/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.17.7-new.orig/drivers/input/touchscreen/Makefile	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/drivers/input/touchscreen/Makefile	2006-08-07 17:36:09.000000000 +0200
+@@ -12,3 +12,5 @@
+ obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
+ obj-$(CONFIG_TOUCHSCREEN_MK712)	+= mk712.o
+ obj-$(CONFIG_TOUCHSCREEN_HP600)	+= hp680_ts_input.o
++obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
++
+Index: linux-2.6.17.7-new/drivers/input/touchscreen/s3c2410_ts.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/drivers/input/touchscreen/s3c2410_ts.c	2006-08-07 17:36:09.000000000 +0200
+@@ -0,0 +1,351 @@
++/*
++ * 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
++ *
++ * Copyright (c) 2004 Arnaud Patard <arnaud.patard at rtp-net.org>
++ * iPAQ H1940 touchscreen support
++ *
++ * ChangeLog
++ *
++ * 2004-09-05: Herbert Pötzl <herbert at 13thfloor.at>
++ *	- added clock (de-)allocation code
++ *
++ * 2005-03-06: Arnaud Patard <arnaud.patard at rtp-net.org>
++ *      - h1940_ -> s3c2410 (this driver is now also used on the n30
++ *        machines :P)
++ *      - Debug messages are now enabled with the config option
++ *        TOUCHSCREEN_S3C2410_DEBUG
++ *      - Changed the way the value are read
++ *      - Input subsystem should now work
++ *      - Use ioremap and readl/writel
++ *
++ * 2005-03-23: Arnaud Patard <arnaud.patard at rtp-net.org>
++ *      - Make use of some undocumented features of the touchscreen
++ *        controller
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/input.h>
++#include <linux/init.h>
++#include <linux/serio.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/clk.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/regs-adc.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/ts.h>
++
++/* For ts.dev.id.version */
++#define S3C2410TSVERSION	0x0101
++
++#define WAIT4INT(x)  (((x)<<8) | \
++		     S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
++		     S3C2410_ADCTSC_XY_PST(3))
++
++#define AUTOPST	     (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
++		     S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
++
++#define DEBUG_LVL    KERN_DEBUG
++
++MODULE_AUTHOR("Arnaud Patard <arnaud.patard at rtp-net.org>");
++MODULE_DESCRIPTION("s3c2410 touchscreen driver");
++MODULE_LICENSE("GPL");
++
++/*
++ * Definitions & global arrays.
++ */
++
++
++static char *s3c2410ts_name = "s3c2410 TouchScreen";
++
++/*
++ * Per-touchscreen data.
++ */
++
++struct s3c2410ts {
++	struct input_dev *dev;
++	long xp;
++	long yp;
++	int count;
++	int shift;
++};
++
++static struct s3c2410ts ts;
++static void __iomem *base_addr;
++
++static inline void s3c2410_ts_connect(void)
++{
++	s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
++	s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
++	s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
++	s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
++}
++
++static void touch_timer_fire(unsigned long data)
++{
++  	unsigned long data0;
++  	unsigned long data1;
++	int updown;
++
++  	data0 = readl(base_addr+S3C2410_ADCDAT0);
++  	data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++ 	updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++ 	if (updown) {
++ 		if (ts.count != 0) {
++ 			ts.xp >>= ts.shift;
++ 			ts.yp >>= ts.shift;
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ 			{
++ 				struct timeval tv;
++ 				do_gettimeofday(&tv);
++ 				printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
++ 			}
++#endif
++
++ 			input_report_abs(ts.dev, ABS_X, ts.xp);
++ 			input_report_abs(ts.dev, ABS_Y, ts.yp);
++
++ 			input_report_key(ts.dev, BTN_TOUCH, 1);
++ 			input_report_abs(ts.dev, ABS_PRESSURE, 1);
++ 			input_sync(ts.dev);
++ 		}
++
++ 		ts.xp = 0;
++ 		ts.yp = 0;
++ 		ts.count = 0;
++
++ 		writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
++ 		writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
++ 	} else {
++ 		ts.count = 0;
++
++ 		input_report_key(ts.dev, BTN_TOUCH, 0);
++ 		input_report_abs(ts.dev, ABS_PRESSURE, 0);
++ 		input_sync(ts.dev);
++
++ 		writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++ 	}
++}
++
++static struct timer_list touch_timer =
++		TIMER_INITIALIZER(touch_timer_fire, 0, 0);
++
++static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs)
++{
++	unsigned long data0;
++	unsigned long data1;
++	int updown;
++
++	data0 = readl(base_addr+S3C2410_ADCDAT0);
++	data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++	updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++	/* TODO we should never get an interrupt with updown set while
++	 * the timer is running, but maybe we ought to verify that the
++	 * timer isn't running anyways. */
++
++	if (updown)
++		touch_timer_fire(0);
++
++	return IRQ_HANDLED;
++}
++
++
++static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs)
++{
++	unsigned long data0;
++	unsigned long data1;
++
++	data0 = readl(base_addr+S3C2410_ADCDAT0);
++	data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++	ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
++	ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
++	ts.count++;
++
++        if (ts.count < (1<<ts.shift)) {
++		writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
++		writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
++	} else {
++		mod_timer(&touch_timer, jiffies+1);
++		writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
++	}
++
++	return IRQ_HANDLED;
++}
++
++static struct clk	*adc_clock;
++
++/*
++ * The functions for inserting/removing us as a module.
++ */
++
++static int __init s3c2410ts_probe(struct platform_device *pdev)
++{
++	struct s3c2410_ts_mach_info *info;
++	struct input_dev *input_dev;
++
++	info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
++
++	if (!info)
++	{
++		printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
++		return -EINVAL;
++	}
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++	printk(DEBUG_LVL "Entering s3c2410ts_init\n");
++#endif
++
++	adc_clock = clk_get(NULL, "adc");
++	if (!adc_clock) {
++		printk(KERN_ERR "failed to get adc clock source\n");
++		return -ENOENT;
++	}
++	clk_enable(adc_clock);
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++	printk(DEBUG_LVL "got and enabled clock\n");
++#endif
++
++	base_addr=ioremap(S3C2410_PA_ADC,0x20);
++	if (base_addr == NULL) {
++		printk(KERN_ERR "Failed to remap register block\n");
++		return -ENOMEM;
++	}
++
++
++	/* Configure GPIOs */
++	s3c2410_ts_connect();
++
++	if ((info->presc&0xff) > 0)
++		writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
++			     base_addr+S3C2410_ADCCON);
++	else
++		writel(0,base_addr+S3C2410_ADCCON);
++
++
++	/* Initialise registers */
++	if ((info->delay&0xffff) > 0)
++		writel(info->delay & 0xffff,  base_addr+S3C2410_ADCDLY);
++
++	writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++	/* Initialise input stuff */
++	memset(&ts, 0, sizeof(struct s3c2410ts));
++	input_dev = input_allocate_device();
++
++	if (!input_dev) {
++		printk(KERN_ERR "Unable to allocate the input device !!\n");
++		return -ENOMEM;
++	}
++
++	ts.dev = input_dev;
++	ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
++	ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++	input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
++	input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
++	input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
++
++	ts.dev->private = &ts;
++	ts.dev->name = s3c2410ts_name;
++	ts.dev->id.bustype = BUS_RS232;
++	ts.dev->id.vendor = 0xDEAD;
++	ts.dev->id.product = 0xBEEF;
++	ts.dev->id.version = S3C2410TSVERSION;
++
++	ts.shift = info->oversampling_shift;
++
++	/* Get irqs */
++	if (request_irq(IRQ_ADC, stylus_action, SA_SAMPLE_RANDOM,
++		"s3c2410_action", ts.dev)) {
++		printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
++		iounmap(base_addr);
++		return -EIO;
++	}
++	if (request_irq(IRQ_TC, stylus_updown, SA_SAMPLE_RANDOM,
++			"s3c2410_action", ts.dev)) {
++		printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
++		iounmap(base_addr);
++		return -EIO;
++	}
++
++	printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);
++
++	/* All went ok, so register to the input system */
++	input_register_device(ts.dev);
++
++	return 0;
++}
++
++static int s3c2410ts_remove(struct platform_device *pdev)
++{
++	disable_irq(IRQ_ADC);
++	disable_irq(IRQ_TC);
++	free_irq(IRQ_TC,ts.dev);
++	free_irq(IRQ_ADC,ts.dev);
++
++	if (adc_clock) {
++		clk_disable(adc_clock);
++		clk_put(adc_clock);
++		adc_clock = NULL;
++	}
++
++	input_unregister_device(ts.dev);
++	iounmap(base_addr);
++
++	return 0;
++}
++
++static struct platform_driver s3c2410ts_driver = {
++       .driver         = {
++	       .name   = "s3c2410-ts",
++	       .owner  = THIS_MODULE,
++       },
++       .probe          = s3c2410ts_probe,
++       .remove         = s3c2410ts_remove,
++};
++
++
++static int __init s3c2410ts_init(void)
++{
++	return platform_driver_register(&s3c2410ts_driver);
++}
++
++static void __exit s3c2410ts_exit(void)
++{
++	platform_driver_unregister(&s3c2410ts_driver);
++}
++
++module_init(s3c2410ts_init);
++module_exit(s3c2410ts_exit);
++
++/*
++    Local variables:
++        compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
++        c-basic-offset: 8
++    End:
++*/
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-adc.h
+===================================================================
+--- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/regs-adc.h	2006-07-25 05:36:01.000000000 +0200
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-adc.h	2006-08-07 17:36:09.000000000 +0200
+@@ -44,7 +44,7 @@
+ #define S3C2410_ADCTSC_XP_SEN		(1<<4)
+ #define S3C2410_ADCTSC_PULL_UP_DISABLE	(1<<3)
+ #define S3C2410_ADCTSC_AUTO_PST		(1<<2)
+-#define S3C2410_ADCTSC_XY_PST		(0x3<<0)
++#define S3C2410_ADCTSC_XY_PST(x)	(((x)&0x3)<<0)
+ 
+ /* ADCDAT0 Bits */
+ #define S3C2410_ADCDAT0_UPDOWN		(1<<15)
+Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/ts.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/ts.h	2006-08-07 17:36:09.000000000 +0200
+@@ -0,0 +1,28 @@
++/* linux/include/asm/arch-s3c2410/ts.h
++ *
++ * Copyright (c) 2005 Arnaud Patard <arnaud.patard at rtp-net.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.
++ *
++ *
++ *  Changelog:
++ *     24-Mar-2005     RTP     Created file
++ *     03-Aug-2005     RTP     Renamed to ts.h
++ */
++
++#ifndef __ASM_ARM_TS_H
++#define __ASM_ARM_TS_H
++
++struct s3c2410_ts_mach_info {
++       int             delay;
++       int             presc;
++       int             oversampling_shift;
++};
++
++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
++
++#endif /* __ASM_ARM_TS_H */
++
+Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
+===================================================================
+--- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 17:36:58.000000000 +0200
++++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c	2006-08-07 17:38:45.000000000 +0200
+@@ -51,6 +51,7 @@
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/udc.h>
+ #include <asm/arch/nand.h>
++#include <asm/arch/ts.h>
+ 
+ #include "devs.h"
+ #include "cpu.h"
+@@ -183,6 +184,7 @@
+ 	&s3c_device_sdi,
+ 	&s3c_device_usbgadget,
+ 	&s3c_device_nand,
++	&s3c_device_ts,
+ 	&cs89x0_device,
+ };
+ 
+@@ -267,6 +269,12 @@
+ 	.udc_command	= qt2410_udc_pullup,
+ };
+ 
++static struct s3c2410_ts_mach_info qt2410_ts_cfg = {
++	.delay = 10000,
++	.presc = 49,
++	.oversampling_shift = 2,
++};
++
+ static void __init qt2410_map_io(void)
+ {
+ 	s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
+@@ -293,6 +301,7 @@
+ 	s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
+ 	s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
+ 	s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
++	set_s3c2410ts_info(&qt2410_ts_cfg);
+ 
+ 	s3c2410_pm_init();
+ }

Added: trunk/oe/packages/linux/linux-qt2410_2.6.17.7.bb
===================================================================
--- trunk/oe/packages/linux/linux-qt2410_2.6.17.7.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/linux-qt2410_2.6.17.7.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,102 @@
+DESCRIPTION = "2.6 Linux Development Kernel for Armzone QT2410"
+SECTION = "kernel"
+AUTHOR = "Harald Welte <hwelte at hmw-consulting.de>"
+HOMEPAGE = "N/A"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey at vanille.de>"
+LICENSE = "GPL"
+DEPENDS += "quilt-native uboot-qt2410"
+PR = "r2"
+
+inherit kernel
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-qt2410"
+HWSRC = "http://people.gta01.hmw-consulting.de/laforge/src/kernel/20060806"
+
+##############################################################
+# source and patches
+#
+SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.7.tar.bz2 \
+           file://patches-2.6.17.7-qt2401-20060806.tar.bz2 \
+           file://qt2410-biglcd.patch;patch=1 \
+           file://qt2410-touchscreen.patch;patch=1 \
+           file://defconfig-${MACHINE}"
+S = "${WORKDIR}/linux-2.6.17.7"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = 'armzone-qt2410'
+
+CMDLINE_CON = "console=ttyS0,115200n8"
+#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+# uncomment if you want to boot over NFS
+#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
+# uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
+
+###############################################################
+# module configs specific to this kernel
+#
+#module_autoload_pxaficp_ir = "pxaficp_ir"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
+do_prepatch() {
+        mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+        rm -Rf patches .pc
+}
+
+do_configure() {
+	#install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
+	if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+		die "No default configuration for ${MACHINE} available."
+	fi
+
+	echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+	if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
+		echo "CONFIG_AEABI=y"                   >> ${S}/.config
+		echo "CONFIG_OABI_COMPAT=y"             >> ${S}/.config
+	else 
+		echo "# CONFIG_AEABI is not set"        >> ${S}/.config
+		echo "# CONFIG_OABI_COMPAT is not set"  >> ${S}/.config
+	fi
+
+	sed -e '/CONFIG_AEABI/d' \
+	    -e '/CONFIG_OABI_COMPAT=/d' \
+	    -e '/CONFIG_CMDLINE=/d' \
+	    -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
+	    -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
+	    -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
+	    -e '/CONFIG_MTDRAM_ABS_POS=/d' \
+	    '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+
+	yes '' | oe_runmake oldconfig
+}
+
+###############################################################
+# put into deploy directory and append u-boot header
+#
+do_deploy() {
+	install -d ${DEPLOY_DIR_IMAGE}
+	install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+	tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
+	arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
+	rm -f linux.bin.gz
+	gzip -9 linux.bin
+	uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "Kernel Image QT2410" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
+	rm -f linux.bin.gz
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask prepatch before do_patch after do_unpack
+addtask deploy before do_package after do_install
+

Added: trunk/oe/packages/linux/qt2410-kernel_2.6.bb
===================================================================
--- trunk/oe/packages/linux/qt2410-kernel_2.6.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/linux/qt2410-kernel_2.6.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1 @@
+require linux-qt2410_2.6.17.7.bb

Added: trunk/oe/packages/qt2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/oe/packages/qt2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/oe/packages/qt2410-utils/files/sjf2410-linux-20060807.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/oe/packages/qt2410-utils/files/sjf2410-linux-20060807.tar.bz2
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/oe/packages/qt2410-utils/s3c2410-boot-usb-native_20060807.bb
===================================================================
--- trunk/oe/packages/qt2410-utils/s3c2410-boot-usb-native_20060807.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/qt2410-utils/s3c2410-boot-usb-native_20060807.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,31 @@
+DESCRIPTION = "Boots a S3C2410 device with a user supplied kernel zImage"
+DEPENDS = "libusb-native"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey at Vanille.de>"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "file://s3c2410_boot_usb-20060807.tar.bz2"
+S = "${WORKDIR}/s3c2410_boot_usb"
+
+inherit native
+
+do_compile() {
+	${CC} ${CFLAGS} ${LDFLAGS} -lusb -o s3c2410-boot-usb boot_usb.c
+}
+
+do_deploy() {
+        install -d ${DEPLOY_DIR_IMAGE}
+        install -m 0755 s3c2410-boot-usb ${DEPLOY_DIR_IMAGE}
+}
+
+do_stage() {
+	:
+}
+
+do_install() {
+	:
+}
+
+addtask deploy before do_build after do_compile

Added: trunk/oe/packages/qt2410-utils/sjf2410-linux-native_20060807.bb
===================================================================
--- trunk/oe/packages/qt2410-utils/sjf2410-linux-native_20060807.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/qt2410-utils/sjf2410-linux-native_20060807.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,32 @@
+DESCRIPTION = "Jtag utility to interface w/ a S3C2410 device"
+SECTION = "devel"
+AUTHOR = "Harald Welte"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey at Vanille.de>"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "file://sjf2410-linux-20060807.tar.bz2"
+S = "${WORKDIR}/sjf2410-linux"
+
+inherit native
+
+CFLAGS += "-DLINUX_PPDEV"
+
+do_compile() {
+	oe_runmake
+}
+
+do_deploy() {
+        install -d ${DEPLOY_DIR_IMAGE}
+        install -m 0755 sjf2410 ${DEPLOY_DIR_IMAGE}/sjf2410
+}
+
+do_stage() {
+	:
+}
+
+do_install() {
+	:
+}
+
+addtask deploy before do_build after do_compile

Added: trunk/oe/packages/tasks/task-openmoko.bb
===================================================================
--- trunk/oe/packages/tasks/task-openmoko.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/tasks/task-openmoko.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,98 @@
+DESCRIPTION = "OpenMoko: Tasks for the OpenMoko Linux Distribution"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey at Vanille.de>"
+SECTION = "openmoko/base"
+ALLOW_EMPTY = "1"
+PACKAGE_ARCH = "all"
+LICENSE = "MIT"
+PROVIDES = "task-openmoko-everything"
+DEPENDS = "dropbear"
+PR = "r3"
+
+PACKAGES = "\
+  task-openmoko-core \
+  task-openmoko-net \
+  task-openmoko-ui \
+  task-openmoko-base \
+  task-openmoko-finger \
+  task-openmoko-pim \
+  \
+  task-openmoko-devel \
+"
+
+RDEPENDS_task-openmoko-everything := "${PACKAGES}"
+
+#
+# task-openmoko-core
+#
+DESCRIPTION_task-openmoko-core = "OpenMoko: Linux Core Services"
+RDEPENDS_task-openmoko-core = "\
+  task-base \
+  base-files \
+  base-passwd \
+  busybox \
+  initscripts \
+  sysvinit \
+  tinylogin \
+  dropbear \
+"
+
+#
+# task-openmoko-net
+DESCRIPTION_task-openmoko-net = "OpenMoko: Linux Networking"
+RDEPENDS_task-openmoko-net = "\
+  bluez-utils \
+"
+
+#
+# task-openmoko-ui
+#
+DESCRIPTION_task-openmoko-ui = "OpenMoko: The X11/Gtk+2 based native User Interface"
+RDEPENDS_task-openmoko-ui = "\
+  gtk+ \
+  matchbox-wm \
+  matchbox-themes-gtk \
+  matchbox-panel-manager \
+  xserver-kdrive-fbdev \
+"
+
+#
+# task-openmoko-base
+#
+DESCRIPTION_task-openmoko-base = "OpenMoko: Main-Menu Launcher, Phone Application, and Panel"
+RDEPENDS_task-openmoko-base = "\
+"
+
+#
+# task-openmoko-finger
+#
+DESCRIPTION_task-openmoko-finger = "OpenMoko: Finger UI Applications"
+RDEPENDS_task-openmoko-finger = "\
+"
+
+#
+# task-openmoko-pim
+#
+DESCRIPTION_task-openmoko-pim = "OpenMoko: PIM Applications"
+RDEPENDS_task-openmoko-pim = "\
+  eds-dbus \
+"
+
+#
+# task-openmoko-devel
+#
+DESCRIPTION_task-openmoko-devel = "OpenMoko: Development Tools"
+RDEPENDS_task-openmoko-devel = "\
+  strace \
+  ltrace \
+  gdb \
+  gdbserver \
+  tcpdump \
+  tslib-calibrate \
+  tslib-tests \
+  lsof \
+  lrzsz \
+  udev-utils \
+  usbutils \
+  uucp \
+"
+

Added: trunk/oe/packages/uboot/files/arm_flags.patch
===================================================================
--- trunk/oe/packages/uboot/files/arm_flags.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/files/arm_flags.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,13 @@
+Index: u-boot/cpu/pxa/config.mk
+===================================================================
+--- u-boot.orig/cpu/pxa/config.mk	2005-01-09 16:28:17.000000000 -0500
++++ u-boot/cpu/pxa/config.mk	2005-02-25 16:38:23.789788636 -0500
+@@ -23,7 +23,7 @@
+ #
+ 
+ PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
+-	-mshort-load-bytes -msoft-float
++	-msoft-float
+ 
+ #PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
+ PLATFORM_CPPFLAGS += -mapcs-32 -march=armv5 -mtune=xscale

Added: trunk/oe/packages/uboot/files/qt2410.h
===================================================================
--- trunk/oe/packages/uboot/files/qt2410.h	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/files/qt2410.h	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,256 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger at sysgo.de>
+ * Gary Jennejohn <gj at denx.de>
+ * David Mueller <d.mueller at elsoft.ch>
+ *
+ * Configuation settings for the SAMSUNG SMDK2410 board.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#if 0
+/* If we want to start u-boot from usb bootloader in NOR flash */
+#define CONFIG_SKIP_RELOCATE_UBOOT	1
+#define	CONFIG_SKIP_LOWLEVEL_INIT	1
+#else
+/* If we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT	1
+#endif
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T		1	/* This is an ARM920T Core	*/
+#define	CONFIG_S3C2410		1	/* in a SAMSUNG S3C2410 SoC     */
+#define CONFIG_SMDK2410		1	/* on a SAMSUNG SMDK2410 Board  */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ	12000000/* the SMDK2410 has 12MHz input clock */
+
+
+#define USE_920T_MMU		1
+#define CONFIG_USE_IRQ		1
+//#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE	128	/* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_DRIVER_CS8900	1	/* we have a CS8900 on-board */
+#define CS8900_BASE		0x19000300
+#define CS8900_BUS16		1 /* the Linux driver does accesses as shorts */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1          1	/* we use SERIAL 1 on SMDK2410 */
+#define CONFIG_HWFLOW		1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define	CONFIG_RTC_S3C24X0	1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE		115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS \
+			(CONFIG_CMD_DFL	 | \
+			CFG_CMD_BSP	 | \
+			CFG_CMD_CACHE	 | \
+			CFG_CMD_DATE	 | \
+			CFG_CMD_DHCP	 | \
+			CFG_CMD_DIAG	 | \
+			CFG_CMD_ELF	 | \
+			CFG_CMD_EXT2	 | \
+			CFG_CMD_FAT	 | \
+			CFG_CMD_HWFLOW	 | \
+			/* CFG_CMD_IDE	 | */ \
+			/* CFG_CMD_IRQ	 | */ \
+			CFG_CMD_JFFS2	 | \
+			CFG_CMD_MMC	 | \
+			CFG_CMD_NAND	 | \
+			CFG_CMD_PING	 | \
+			CFG_CMD_PORTIO	 | \
+			CFG_CMD_REGINFO  | \
+			CFG_CMD_SAVES	 | \
+			CFG_CMD_USB)
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY	3
+#define CONFIG_BOOTARGS    	"root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
+/*#define CONFIG_ETHADDR	08:00:3e:26:0a:5b */
+#define CONFIG_NETMASK          255.255.255.0
+#define CONFIG_IPADDR		10.0.0.110
+#define CONFIG_SERVERIP		10.0.0.1
+/*#define CONFIG_BOOTFILE	"elinos-lart" */
+#define CONFIG_BOOTCOMMAND	"mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION	1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE	115200		/* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX	1		/* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define	CFG_LONGHELP				/* undef to save memory		*/
+#define	CFG_PROMPT		"QT2410 # "	/* Monitor Command Prompt	*/
+#define	CFG_CBSIZE		256		/* Console I/O Buffer Size	*/
+#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+#define	CFG_MAXARGS		16		/* max number of command args	*/
+#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/
+
+#define CFG_MEMTEST_START	0x30000000	/* memtest works on	*/
+#define CFG_MEMTEST_END		0x33F00000	/* 63 MB in DRAM	*/
+
+#undef  CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */
+
+#define	CFG_LOAD_ADDR		0x33000000	/* default load address	*/
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define	CFG_HZ			1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */
+#endif
+
+/* IDE/ATA config */
+
+#if 0
+#define CFG_IDE_MAXBUS		1
+#define CFG_IDE_MAXDEVICE	2
+#define CFG_IDE_PREINIT		0
+
+#define CFG_ATA_BASE_ADDR	
+#endif
+
+#define CONFIG_USB_OHCI		1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS	1	   /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1		0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE	0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE	0x00200000 /* 2 MB for frame buffer */
+
+#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */
+
+#define CFG_FLASH_BASE		PHYS_FLASH_1
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#define CONFIG_AMD_LV400	1	/* uncomment this if you have a LV400 flash */
+#if 0
+#define CONFIG_AMD_LV800	1	/* uncomment this if you have a LV800 flash */
+#endif
+
+#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks */
+#ifdef CONFIG_AMD_LV800
+#define PHYS_FLASH_SIZE		0x00100000 /* 1MB */
+#define CFG_MAX_FLASH_SECT	(19)	/* max number of sectors on one chip */
+#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
+#endif
+#ifdef CONFIG_AMD_LV400
+#define PHYS_FLASH_SIZE		0x00080000 /* 512KB */
+#define CFG_MAX_FLASH_SECT	(11)	/* max number of sectors on one chip */
+#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x070000) /* addr of environment */
+#endif
+
+/* timeout values are in ticks */
+#define CFG_FLASH_ERASE_TOUT	(5*CFG_HZ) /* Timeout for Flash Erase */
+#define CFG_FLASH_WRITE_TOUT	(5*CFG_HZ) /* Timeout for Flash Write */
+
+#define	CFG_ENV_IS_IN_NAND	1
+#define CFG_ENV_SIZE		0x4000		/* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET		0x30000		/* environment after bootloader */
+
+#define NAND_MAX_CHIPS		1
+#define CFG_NAND_BASE		0x4e000000
+#define CFG_MAX_NAND_DEVICE	1
+
+#define CONFIG_MMC		1
+#define CFG_MMC_BASE		0xff000000
+
+#define CONFIG_EXT2		1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT		1
+#define CONFIG_SUPPORT_VFAT
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG		1
+#define CONFIG_SETUP_MEMORY_TAGS	1
+#define CONFIG_CMDLINE_TAG		1
+#if 0
+#define CONFIG_SERIAL_TAG		1
+#define CONFIG_REVISION_TAG		1
+#endif
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT	0
+#define VIDEO_TSTC_FCT		serial_tstc
+#define VIDEO_GETC_FCT		serial_getc
+
+#define LCD_VIDEO_ADDR		0x33d00000
+#endif
+
+#endif	/* __CONFIG_H */

Added: trunk/oe/packages/uboot/files/qt2410_nand.h
===================================================================
--- trunk/oe/packages/uboot/files/qt2410_nand.h	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/files/qt2410_nand.h	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,256 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger at sysgo.de>
+ * Gary Jennejohn <gj at denx.de>
+ * David Mueller <d.mueller at elsoft.ch>
+ *
+ * Configuation settings for the SAMSUNG SMDK2410 board.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#if 0
+/* If we want to start u-boot from usb bootloader in NOR flash */
+#define CONFIG_SKIP_RELOCATE_UBOOT	1
+#define	CONFIG_SKIP_LOWLEVEL_INIT	1
+#else
+/* If we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT	1
+#endif
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T		1	/* This is an ARM920T Core	*/
+#define	CONFIG_S3C2410		1	/* in a SAMSUNG S3C2410 SoC     */
+#define CONFIG_SMDK2410		1	/* on a SAMSUNG SMDK2410 Board  */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ	12000000/* the SMDK2410 has 12MHz input clock */
+
+
+#define USE_920T_MMU		1
+#define CONFIG_USE_IRQ		1
+//#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE	128	/* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_DRIVER_CS8900	1	/* we have a CS8900 on-board */
+#define CS8900_BASE		0x19000300
+#define CS8900_BUS16		1 /* the Linux driver does accesses as shorts */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1          1	/* we use SERIAL 1 on SMDK2410 */
+#define CONFIG_HWFLOW		1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define	CONFIG_RTC_S3C24X0	1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE		115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS \
+			(CONFIG_CMD_DFL	 | \
+			CFG_CMD_BSP	 | \
+			CFG_CMD_CACHE	 | \
+			CFG_CMD_DATE	 | \
+			CFG_CMD_DHCP	 | \
+			CFG_CMD_DIAG	 | \
+			CFG_CMD_ELF	 | \
+			CFG_CMD_EXT2	 | \
+			CFG_CMD_FAT	 | \
+			CFG_CMD_HWFLOW	 | \
+			/* CFG_CMD_IDE	 | */ \
+			/* CFG_CMD_IRQ	 | */ \
+			CFG_CMD_JFFS2	 | \
+			CFG_CMD_MMC	 | \
+			CFG_CMD_NAND	 | \
+			CFG_CMD_PING	 | \
+			CFG_CMD_PORTIO	 | \
+			CFG_CMD_REGINFO  | \
+			CFG_CMD_SAVES	 | \
+			CFG_CMD_USB)
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY	3
+#define CONFIG_BOOTARGS    	"root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
+/*#define CONFIG_ETHADDR	08:00:3e:26:0a:5b */
+#define CONFIG_NETMASK          255.255.255.0
+#define CONFIG_IPADDR		10.0.0.110
+#define CONFIG_SERVERIP		10.0.0.1
+/*#define CONFIG_BOOTFILE	"elinos-lart" */
+#define CONFIG_BOOTCOMMAND	"mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION	1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE	115200		/* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX	1		/* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define	CFG_LONGHELP				/* undef to save memory		*/
+#define	CFG_PROMPT		"QT2410 # "	/* Monitor Command Prompt	*/
+#define	CFG_CBSIZE		256		/* Console I/O Buffer Size	*/
+#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+#define	CFG_MAXARGS		16		/* max number of command args	*/
+#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/
+
+#define CFG_MEMTEST_START	0x30000000	/* memtest works on	*/
+#define CFG_MEMTEST_END		0x33F00000	/* 63 MB in DRAM	*/
+
+#undef  CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */
+
+#define	CFG_LOAD_ADDR		0x33000000	/* default load address	*/
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define	CFG_HZ			1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */
+#endif
+
+/* IDE/ATA config */
+
+#if 0
+#define CFG_IDE_MAXBUS		1
+#define CFG_IDE_MAXDEVICE	2
+#define CFG_IDE_PREINIT		0
+
+#define CFG_ATA_BASE_ADDR	
+#endif
+
+#define CONFIG_USB_OHCI		1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS	1	   /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1		0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE	0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE	0x00200000 /* 2 MB for frame buffer */
+
+#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */
+
+#define CFG_FLASH_BASE		PHYS_FLASH_1
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#define CONFIG_AMD_LV400	1	/* uncomment this if you have a LV400 flash */
+#if 0
+#define CONFIG_AMD_LV800	1	/* uncomment this if you have a LV800 flash */
+#endif
+
+#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks */
+#ifdef CONFIG_AMD_LV800
+#define PHYS_FLASH_SIZE		0x00100000 /* 1MB */
+#define CFG_MAX_FLASH_SECT	(19)	/* max number of sectors on one chip */
+#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
+#endif
+#ifdef CONFIG_AMD_LV400
+#define PHYS_FLASH_SIZE		0x00080000 /* 512KB */
+#define CFG_MAX_FLASH_SECT	(11)	/* max number of sectors on one chip */
+#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x070000) /* addr of environment */
+#endif
+
+/* timeout values are in ticks */
+#define CFG_FLASH_ERASE_TOUT	(5*CFG_HZ) /* Timeout for Flash Erase */
+#define CFG_FLASH_WRITE_TOUT	(5*CFG_HZ) /* Timeout for Flash Write */
+
+#define	CFG_ENV_IS_IN_NAND	1
+#define CFG_ENV_SIZE		0x4000		/* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET		0x30000		/* environment after bootloader */
+
+#define NAND_MAX_CHIPS		1
+#define CFG_NAND_BASE		0x4e000000
+#define CFG_MAX_NAND_DEVICE	1
+
+#define CONFIG_MMC		1
+#define CFG_MMC_BASE		0xff000000
+
+#define CONFIG_EXT2		1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT		1
+#define CONFIG_SUPPORT_VFAT
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG		1
+#define CONFIG_SETUP_MEMORY_TAGS	1
+#define CONFIG_CMDLINE_TAG		1
+#if 0
+#define CONFIG_SERIAL_TAG		1
+#define CONFIG_REVISION_TAG		1
+#endif
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT	0
+#define VIDEO_TSTC_FCT		serial_tstc
+#define VIDEO_GETC_FCT		serial_getc
+
+#define LCD_VIDEO_ADDR		0x33d00000
+#endif
+
+#endif	/* __CONFIG_H */

Added: trunk/oe/packages/uboot/files/qt2410_ram.h
===================================================================
--- trunk/oe/packages/uboot/files/qt2410_ram.h	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/files/qt2410_ram.h	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,256 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger at sysgo.de>
+ * Gary Jennejohn <gj at denx.de>
+ * David Mueller <d.mueller at elsoft.ch>
+ *
+ * Configuation settings for the SAMSUNG SMDK2410 board.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#if 1
+/* If we want to start u-boot from usb bootloader in NOR flash */
+#define CONFIG_SKIP_RELOCATE_UBOOT	1
+#define	CONFIG_SKIP_LOWLEVEL_INIT	1
+#else
+/* If we want to start u-boot directly from within NAND flash */
+#define CONFIG_S3C2410_NAND_BOOT	1
+#endif
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_ARM920T		1	/* This is an ARM920T Core	*/
+#define	CONFIG_S3C2410		1	/* in a SAMSUNG S3C2410 SoC     */
+#define CONFIG_SMDK2410		1	/* on a SAMSUNG SMDK2410 Board  */
+
+/* input clock of PLL */
+#define CONFIG_SYS_CLK_FREQ	12000000/* the SMDK2410 has 12MHz input clock */
+
+
+#define USE_920T_MMU		1
+#define CONFIG_USE_IRQ		1
+//#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE	128	/* size in bytes reserved for initial data */
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_DRIVER_CS8900	1	/* we have a CS8900 on-board */
+#define CS8900_BASE		0x19000300
+#define CS8900_BUS16		1 /* the Linux driver does accesses as shorts */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_SERIAL1          1	/* we use SERIAL 1 on SMDK2410 */
+#define CONFIG_HWFLOW		1
+
+/************************************************************
+ * RTC
+ ************************************************************/
+#define	CONFIG_RTC_S3C24X0	1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE		115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+#define CONFIG_COMMANDS \
+			(CONFIG_CMD_DFL	 | \
+			CFG_CMD_BSP	 | \
+			CFG_CMD_CACHE	 | \
+			CFG_CMD_DATE	 | \
+			CFG_CMD_DHCP	 | \
+			CFG_CMD_DIAG	 | \
+			CFG_CMD_ELF	 | \
+			CFG_CMD_EXT2	 | \
+			CFG_CMD_FAT	 | \
+			CFG_CMD_HWFLOW	 | \
+			/* CFG_CMD_IDE	 | */ \
+			/* CFG_CMD_IRQ	 | */ \
+			CFG_CMD_JFFS2	 | \
+			CFG_CMD_MMC	 | \
+			CFG_CMD_NAND	 | \
+			CFG_CMD_PING	 | \
+			CFG_CMD_PORTIO	 | \
+			CFG_CMD_REGINFO  | \
+			CFG_CMD_SAVES	 | \
+			CFG_CMD_USB)
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY	3
+#define CONFIG_BOOTARGS    	"root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
+/*#define CONFIG_ETHADDR	08:00:3e:26:0a:5b */
+#define CONFIG_NETMASK          255.255.255.0
+#define CONFIG_IPADDR		10.0.0.110
+#define CONFIG_SERVERIP		10.0.0.1
+/*#define CONFIG_BOOTFILE	"elinos-lart" */
+#define CONFIG_BOOTCOMMAND	"mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
+
+#define CONFIG_DOS_PARTITION	1
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE	115200		/* speed to run kgdb serial port */
+/* what's this ? it's not used anywhere */
+#define CONFIG_KGDB_SER_INDEX	1		/* which serial port to use */
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define	CFG_LONGHELP				/* undef to save memory		*/
+#define	CFG_PROMPT		"QT2410 # "	/* Monitor Command Prompt	*/
+#define	CFG_CBSIZE		256		/* Console I/O Buffer Size	*/
+#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+#define	CFG_MAXARGS		16		/* max number of command args	*/
+#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/
+
+#define CFG_MEMTEST_START	0x30000000	/* memtest works on	*/
+#define CFG_MEMTEST_END		0x33F00000	/* 63 MB in DRAM	*/
+
+#undef  CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */
+
+#define	CFG_LOAD_ADDR		0x33000000	/* default load address	*/
+
+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
+/* it to wrap 100 times (total 1562500) to get 1 sec. */
+#define	CFG_HZ			1562500
+
+/* valid baudrates */
+#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */
+#endif
+
+/* IDE/ATA config */
+
+#if 0
+#define CFG_IDE_MAXBUS		1
+#define CFG_IDE_MAXDEVICE	2
+#define CFG_IDE_PREINIT		0
+
+#define CFG_ATA_BASE_ADDR	
+#endif
+
+#define CONFIG_USB_OHCI		1
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS	1	   /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1		0x30000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE	0x04000000 /* 64 MB */
+#define PHYS_SDRAM_RES_SIZE	0x00200000 /* 2 MB for frame buffer */
+
+#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */
+
+#define CFG_FLASH_BASE		PHYS_FLASH_1
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+#define CONFIG_AMD_LV400	1	/* uncomment this if you have a LV400 flash */
+#if 0
+#define CONFIG_AMD_LV800	1	/* uncomment this if you have a LV800 flash */
+#endif
+
+#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks */
+#ifdef CONFIG_AMD_LV800
+#define PHYS_FLASH_SIZE		0x00100000 /* 1MB */
+#define CFG_MAX_FLASH_SECT	(19)	/* max number of sectors on one chip */
+#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
+#endif
+#ifdef CONFIG_AMD_LV400
+#define PHYS_FLASH_SIZE		0x00080000 /* 512KB */
+#define CFG_MAX_FLASH_SECT	(11)	/* max number of sectors on one chip */
+#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x070000) /* addr of environment */
+#endif
+
+/* timeout values are in ticks */
+#define CFG_FLASH_ERASE_TOUT	(5*CFG_HZ) /* Timeout for Flash Erase */
+#define CFG_FLASH_WRITE_TOUT	(5*CFG_HZ) /* Timeout for Flash Write */
+
+#define	CFG_ENV_IS_IN_NAND	1
+#define CFG_ENV_SIZE		0x4000		/* 16k Total Size of Environment Sector */
+#define CFG_ENV_OFFSET		0x30000		/* environment after bootloader */
+
+#define NAND_MAX_CHIPS		1
+#define CFG_NAND_BASE		0x4e000000
+#define CFG_MAX_NAND_DEVICE	1
+
+#define CONFIG_MMC		1
+#define CFG_MMC_BASE		0xff000000
+
+#define CONFIG_EXT2		1
+
+/* FAT driver in u-boot is broken currently */
+#define CONFIG_FAT		1
+#define CONFIG_SUPPORT_VFAT
+
+/* ATAG configuration */
+#define CONFIG_INITRD_TAG		1
+#define CONFIG_SETUP_MEMORY_TAGS	1
+#define CONFIG_CMDLINE_TAG		1
+#if 0
+#define CONFIG_SERIAL_TAG		1
+#define CONFIG_REVISION_TAG		1
+#endif
+
+
+#if 0
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_S3C2410
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define VIDEO_KBD_INIT_FCT	0
+#define VIDEO_TSTC_FCT		serial_tstc
+#define VIDEO_GETC_FCT		serial_getc
+
+#define LCD_VIDEO_ADDR		0x33d00000
+#endif
+
+#endif	/* __CONFIG_H */

Added: trunk/oe/packages/uboot/files/u-boot-20060807-qt2410.patch
===================================================================
--- trunk/oe/packages/uboot/files/u-boot-20060807-qt2410.patch	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/files/u-boot-20060807-qt2410.patch	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,8435 @@
+diff --git a/Makefile b/Makefile
+index 128ae59..5d7b5bb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1638,6 +1638,9 @@ omap730p2_cs3boot_config :	unconfig
+ sbc2410x_config: unconfig
+ 	@./mkconfig $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
+ 
++qt2410_config	:	unconfig
++	@./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
++
+ scb9328_config	:	unconfig
+ 	@./mkconfig $(@:_config=) arm arm920t scb9328 NULL imx
+ 
+diff --git a/board/qt2410/Makefile b/board/qt2410/Makefile
+new file mode 100644
+index 0000000..407b256
+--- /dev/null
++++ b/board/qt2410/Makefile
+@@ -0,0 +1,47 @@
++#
++# (C) Copyright 2000, 2001, 2002
++# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License as
++# published by the Free Software Foundation; either version 2 of
++# the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++# MA 02111-1307 USA
++#
++
++include $(TOPDIR)/config.mk
++
++LIB	= lib$(BOARD).a
++
++OBJS	:= qt2410.o flash.o
++SOBJS	:= lowlevel_init.o
++
++$(LIB):	$(OBJS) $(SOBJS)
++	$(AR) crv $@ $(OBJS) $(SOBJS)
++
++clean:
++	rm -f $(SOBJS) $(OBJS)
++
++distclean:	clean
++	rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++		$(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++-include .depend
++
++#########################################################################
+diff --git a/board/qt2410/config.mk b/board/qt2410/config.mk
+new file mode 100644
+index 0000000..1af85da
+--- /dev/null
++++ b/board/qt2410/config.mk
+@@ -0,0 +1,25 @@
++#
++# (C) Copyright 2002
++# Gary Jennejohn, DENX Software Engineering, <gj at denx.de>
++# David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
++#
++# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
++#
++# see http://www.samsung.com/ for more information on SAMSUNG
++#
++
++#
++# SMDK2410 has 1 bank of 64 MB DRAM
++#
++# 3000'0000 to 3400'0000
++#
++# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
++# optionally with a ramdisk at 3080'0000
++#
++# we load ourself to 33F8'0000
++#
++# download area is 3300'0000
++#
++
++
++TEXT_BASE = 0x33F80000
+diff --git a/board/qt2410/flash.c b/board/qt2410/flash.c
+new file mode 100644
+index 0000000..993946b
+--- /dev/null
++++ b/board/qt2410/flash.c
+@@ -0,0 +1,433 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Alex Zuepke <azu at sysgo.de>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <common.h>
++
++ulong myflush (void);
++
++
++#define FLASH_BANK_SIZE	PHYS_FLASH_SIZE
++#define MAIN_SECT_SIZE  0x10000	/* 64 KB */
++
++flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
++
++
++#define CMD_READ_ARRAY		0x000000F0
++#define CMD_UNLOCK1		0x000000AA
++#define CMD_UNLOCK2		0x00000055
++#define CMD_ERASE_SETUP		0x00000080
++#define CMD_ERASE_CONFIRM	0x00000030
++#define CMD_PROGRAM		0x000000A0
++#define CMD_UNLOCK_BYPASS	0x00000020
++
++#define MEM_FLASH_ADDR1		(*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
++#define MEM_FLASH_ADDR2		(*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
++
++#define BIT_ERASE_DONE		0x00000080
++#define BIT_RDY_MASK		0x00000080
++#define BIT_PROGRAM_ERROR	0x00000020
++#define BIT_TIMEOUT		0x80000000	/* our flag */
++
++#define READY 1
++#define ERR   2
++#define TMO   4
++
++/*-----------------------------------------------------------------------
++ */
++
++ulong flash_init (void)
++{
++	int i, j;
++	ulong size = 0;
++
++	for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
++		ulong flashbase = 0;
++
++		flash_info[i].flash_id =
++#if defined(CONFIG_AMD_LV400)
++			(AMD_MANUFACT & FLASH_VENDMASK) |
++			(AMD_ID_LV400B & FLASH_TYPEMASK);
++#elif defined(CONFIG_AMD_LV800)
++			(AMD_MANUFACT & FLASH_VENDMASK) |
++			(AMD_ID_LV800B & FLASH_TYPEMASK);
++#else
++#error "Unknown flash configured"
++#endif
++			flash_info[i].size = FLASH_BANK_SIZE;
++		flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
++		memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
++		if (i == 0)
++			flashbase = PHYS_FLASH_1;
++		else
++			panic ("configured too many flash banks!\n");
++		for (j = 0; j < flash_info[i].sector_count; j++) {
++			if (j <= 3) {
++				/* 1st one is 16 KB */
++				if (j == 0) {
++					flash_info[i].start[j] =
++						flashbase + 0;
++				}
++
++				/* 2nd and 3rd are both 8 KB */
++				if ((j == 1) || (j == 2)) {
++					flash_info[i].start[j] =
++						flashbase + 0x4000 + (j -
++								      1) *
++						0x2000;
++				}
++
++				/* 4th 32 KB */
++				if (j == 3) {
++					flash_info[i].start[j] =
++						flashbase + 0x8000;
++				}
++			} else {
++				flash_info[i].start[j] =
++					flashbase + (j - 3) * MAIN_SECT_SIZE;
++			}
++		}
++		size += flash_info[i].size;
++	}
++
++	flash_protect (FLAG_PROTECT_SET,
++		       CFG_FLASH_BASE,
++		       CFG_FLASH_BASE + monitor_flash_len - 1,
++		       &flash_info[0]);
++
++	flash_protect (FLAG_PROTECT_SET,
++		       CFG_ENV_ADDR,
++		       CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
++
++	return size;
++}
++
++/*-----------------------------------------------------------------------
++ */
++void flash_print_info (flash_info_t * info)
++{
++	int i;
++
++	switch (info->flash_id & FLASH_VENDMASK) {
++	case (AMD_MANUFACT & FLASH_VENDMASK):
++		printf ("AMD: ");
++		break;
++	default:
++		printf ("Unknown Vendor ");
++		break;
++	}
++
++	switch (info->flash_id & FLASH_TYPEMASK) {
++	case (AMD_ID_LV400B & FLASH_TYPEMASK):
++		printf ("1x Amd29LV400BB (4Mbit)\n");
++		break;
++	case (AMD_ID_LV800B & FLASH_TYPEMASK):
++		printf ("1x Amd29LV800BB (8Mbit)\n");
++		break;
++	default:
++		printf ("Unknown Chip Type\n");
++		goto Done;
++		break;
++	}
++
++	printf ("  Size: %ld MB in %d Sectors\n",
++		info->size >> 20, info->sector_count);
++
++	printf ("  Sector Start Addresses:");
++	for (i = 0; i < info->sector_count; i++) {
++		if ((i % 5) == 0) {
++			printf ("\n   ");
++		}
++		printf (" %08lX%s", info->start[i],
++			info->protect[i] ? " (RO)" : "     ");
++	}
++	printf ("\n");
++
++      Done:;
++}
++
++/*-----------------------------------------------------------------------
++ */
++
++int flash_erase (flash_info_t * info, int s_first, int s_last)
++{
++	ushort result;
++	int iflag, cflag, prot, sect;
++	int rc = ERR_OK;
++	int chip;
++
++	/* first look for protection bits */
++
++	if (info->flash_id == FLASH_UNKNOWN)
++		return ERR_UNKNOWN_FLASH_TYPE;
++
++	if ((s_first < 0) || (s_first > s_last)) {
++		return ERR_INVAL;
++	}
++
++	if ((info->flash_id & FLASH_VENDMASK) !=
++	    (AMD_MANUFACT & FLASH_VENDMASK)) {
++		return ERR_UNKNOWN_FLASH_VENDOR;
++	}
++
++	prot = 0;
++	for (sect = s_first; sect <= s_last; ++sect) {
++		if (info->protect[sect]) {
++			prot++;
++		}
++	}
++	if (prot)
++		return ERR_PROTECTED;
++
++	/*
++	 * Disable interrupts which might cause a timeout
++	 * here. Remember that our exception vectors are
++	 * at address 0 in the flash, and we don't want a
++	 * (ticker) exception to happen while the flash
++	 * chip is in programming mode.
++	 */
++	cflag = icache_status ();
++	icache_disable ();
++	iflag = disable_interrupts ();
++
++	/* Start erase on unprotected sectors */
++	for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
++		printf ("Erasing sector %2d ... ", sect);
++
++		/* arm simple, non interrupt dependent timer */
++		reset_timer_masked ();
++
++		if (info->protect[sect] == 0) {	/* not protected */
++			vu_short *addr = (vu_short *) (info->start[sect]);
++
++			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++			MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
++
++			MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++			MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++			*addr = CMD_ERASE_CONFIRM;
++
++			/* wait until flash is ready */
++			chip = 0;
++
++			do {
++				result = *addr;
++
++				/* check timeout */
++				if (get_timer_masked () >
++				    CFG_FLASH_ERASE_TOUT) {
++					MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++					chip = TMO;
++					break;
++				}
++
++				if (!chip
++				    && (result & 0xFFFF) & BIT_ERASE_DONE)
++					chip = READY;
++
++				if (!chip
++				    && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
++					chip = ERR;
++
++			} while (!chip);
++
++			MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++
++			if (chip == ERR) {
++				rc = ERR_PROG_ERROR;
++				goto outahere;
++			}
++			if (chip == TMO) {
++				rc = ERR_TIMOUT;
++				goto outahere;
++			}
++
++			printf ("ok.\n");
++		} else {	/* it was protected */
++
++			printf ("protected!\n");
++		}
++	}
++
++	if (ctrlc ())
++		printf ("User Interrupt!\n");
++
++      outahere:
++	/* allow flash to settle - wait 10 ms */
++	udelay_masked (10000);
++
++	if (iflag)
++		enable_interrupts ();
++
++	if (cflag)
++		icache_enable ();
++
++	return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash
++ */
++
++volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
++{
++	vu_short *addr = (vu_short *) dest;
++	ushort result;
++	int rc = ERR_OK;
++	int cflag, iflag;
++	int chip;
++
++	/*
++	 * Check if Flash is (sufficiently) erased
++	 */
++	result = *addr;
++	if ((result & data) != data)
++		return ERR_NOT_ERASED;
++
++
++	/*
++	 * Disable interrupts which might cause a timeout
++	 * here. Remember that our exception vectors are
++	 * at address 0 in the flash, and we don't want a
++	 * (ticker) exception to happen while the flash
++	 * chip is in programming mode.
++	 */
++	cflag = icache_status ();
++	icache_disable ();
++	iflag = disable_interrupts ();
++
++	MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++	MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++	MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
++	*addr = CMD_PROGRAM;
++	*addr = data;
++
++	/* arm simple, non interrupt dependent timer */
++	reset_timer_masked ();
++
++	/* wait until flash is ready */
++	chip = 0;
++	do {
++		result = *addr;
++
++		/* check timeout */
++		if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
++			chip = ERR | TMO;
++			break;
++		}
++		if (!chip && ((result & 0x80) == (data & 0x80)))
++			chip = READY;
++
++		if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
++			result = *addr;
++
++			if ((result & 0x80) == (data & 0x80))
++				chip = READY;
++			else
++				chip = ERR;
++		}
++
++	} while (!chip);
++
++	*addr = CMD_READ_ARRAY;
++
++	if (chip == ERR || *addr != data)
++		rc = ERR_PROG_ERROR;
++
++	if (iflag)
++		enable_interrupts ();
++
++	if (cflag)
++		icache_enable ();
++
++	return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash.
++ */
++
++int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
++{
++	ulong cp, wp;
++	int l;
++	int i, rc;
++	ushort data;
++
++	wp = (addr & ~1);	/* get lower word aligned address */
++
++	/*
++	 * handle unaligned start bytes
++	 */
++	if ((l = addr - wp) != 0) {
++		data = 0;
++		for (i = 0, cp = wp; i < l; ++i, ++cp) {
++			data = (data >> 8) | (*(uchar *) cp << 8);
++		}
++		for (; i < 2 && cnt > 0; ++i) {
++			data = (data >> 8) | (*src++ << 8);
++			--cnt;
++			++cp;
++		}
++		for (; cnt == 0 && i < 2; ++i, ++cp) {
++			data = (data >> 8) | (*(uchar *) cp << 8);
++		}
++
++		if ((rc = write_hword (info, wp, data)) != 0) {
++			return (rc);
++		}
++		wp += 2;
++	}
++
++	/*
++	 * handle word aligned part
++	 */
++	while (cnt >= 2) {
++		data = *((vu_short *) src);
++		if ((rc = write_hword (info, wp, data)) != 0) {
++			return (rc);
++		}
++		src += 2;
++		wp += 2;
++		cnt -= 2;
++	}
++
++	if (cnt == 0) {
++		return ERR_OK;
++	}
++
++	/*
++	 * handle unaligned tail bytes
++	 */
++	data = 0;
++	for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
++		data = (data >> 8) | (*src++ << 8);
++		--cnt;
++	}
++	for (; i < 2; ++i, ++cp) {
++		data = (data >> 8) | (*(uchar *) cp << 8);
++	}
++
++	return write_hword (info, wp, data);
++}
+diff --git a/board/qt2410/lowlevel_init.S b/board/qt2410/lowlevel_init.S
+new file mode 100644
+index 0000000..310f2a0
+--- /dev/null
++++ b/board/qt2410/lowlevel_init.S
+@@ -0,0 +1,167 @@
++/*
++ * Memory Setup stuff - taken from blob memsetup.S
++ *
++ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw at its.tudelft.nl) and
++ *                     Jan-Derk Bakker (J.D.Bakker at its.tudelft.nl)
++ *
++ * Modified for the Samsung SMDK2410 by
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++
++#include <config.h>
++#include <version.h>
++
++
++/* some parameters for the board */
++
++/*
++ *
++ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
++ *
++ * Copyright (C) 2002 Samsung Electronics SW.LEE  <hitchcar at sec.samsung.com>
++ *
++ */
++
++#define BWSCON	0x48000000
++
++/* BWSCON */
++#define DW8		 	(0x0)
++#define DW16		 	(0x1)
++#define DW32		 	(0x2)
++#define WAIT		 	(0x1<<2)
++#define UBLB		 	(0x1<<3)
++
++#define B1_BWSCON	  	(DW32)
++#define B2_BWSCON	  	(DW16)
++#define B3_BWSCON	  	(DW16 + WAIT + UBLB)
++#define B4_BWSCON	  	(DW16)
++#define B5_BWSCON	  	(DW16)
++#define B6_BWSCON	  	(DW32)
++#define B7_BWSCON	  	(DW32)
++
++/* BANK0CON */
++#define B0_Tacs		 	0x0	/*  0clk */
++#define B0_Tcos		 	0x0	/*  0clk */
++#define B0_Tacc		 	0x7	/* 14clk */
++#define B0_Tcoh		 	0x0	/*  0clk */
++#define B0_Tah		 	0x0	/*  0clk */
++#define B0_Tacp		 	0x0
++#define B0_PMC		 	0x0	/* normal */
++
++/* BANK1CON */
++#define B1_Tacs		 	0x0	/*  0clk */
++#define B1_Tcos		 	0x0	/*  0clk */
++#define B1_Tacc		 	0x7	/* 14clk */
++#define B1_Tcoh		 	0x0	/*  0clk */
++#define B1_Tah		 	0x0	/*  0clk */
++#define B1_Tacp		 	0x0
++#define B1_PMC		 	0x0
++
++#define B2_Tacs		 	0x0
++#define B2_Tcos		 	0x0
++#define B2_Tacc		 	0x7
++#define B2_Tcoh		 	0x0
++#define B2_Tah		 	0x0
++#define B2_Tacp		 	0x0
++#define B2_PMC		 	0x0
++
++#define B3_Tacs		 	0x0	/*  0clk */
++#define B3_Tcos		 	0x3	/*  4clk */
++#define B3_Tacc		 	0x7	/* 14clk */
++#define B3_Tcoh		 	0x1	/*  1clk */
++#define B3_Tah		 	0x0	/*  0clk */
++#define B3_Tacp		 	0x3     /*  6clk */
++#define B3_PMC		 	0x0	/* normal */
++
++#define B4_Tacs		 	0x0	/*  0clk */
++#define B4_Tcos		 	0x0	/*  0clk */
++#define B4_Tacc		 	0x7	/* 14clk */
++#define B4_Tcoh		 	0x0	/*  0clk */
++#define B4_Tah		 	0x0	/*  0clk */
++#define B4_Tacp		 	0x0
++#define B4_PMC		 	0x0	/* normal */
++
++#define B5_Tacs		 	0x0	/*  0clk */
++#define B5_Tcos		 	0x0	/*  0clk */
++#define B5_Tacc		 	0x7	/* 14clk */
++#define B5_Tcoh		 	0x0	/*  0clk */
++#define B5_Tah		 	0x0	/*  0clk */
++#define B5_Tacp		 	0x0
++#define B5_PMC		 	0x0	/* normal */
++
++#define B6_MT		 	0x3	/* SDRAM */
++#define B6_Trcd	 	 	0x1
++#define B6_SCAN		 	0x1	/* 9bit */
++
++#define B7_MT		 	0x3	/* SDRAM */
++#define B7_Trcd		 	0x1	/* 3clk */
++#define B7_SCAN		 	0x1	/* 9bit */
++
++/* REFRESH parameter */
++#define REFEN		 	0x1	/* Refresh enable */
++#define TREFMD		 	0x0	/* CBR(CAS before RAS)/Auto refresh */
++#define Trp		 	0x0	/* 2clk */
++#define Trc		 	0x3	/* 7clk */
++#define Tchr		 	0x2	/* 3clk */
++#define REFCNT		 	1113	/* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
++/**************************************/
++
++_TEXT_BASE:
++	.word	TEXT_BASE
++
++.globl lowlevel_init
++lowlevel_init:
++	/* memory control configuration */
++	/* make r0 relative the current location so that it */
++	/* reads SMRDATA out of FLASH rather than memory ! */
++	ldr     r0, =SMRDATA
++	ldr	r1, _TEXT_BASE
++	sub	r0, r0, r1
++	ldr	r1, =BWSCON	/* Bus Width Status Controller */
++	add     r2, r0, #13*4
++0:
++	ldr     r3, [r0], #4
++	str     r3, [r1], #4
++	cmp     r2, r0
++	bne     0b
++
++	/* everything is fine now */
++	mov	pc, lr
++
++	.ltorg
++/* the literal pools origin */
++
++SMRDATA:
++    .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
++    .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
++    .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
++    .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
++    .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
++    .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
++    .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
++    .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
++    .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
++    .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
++    .word 0x32
++    .word 0x30
++    .word 0x30
+diff --git a/board/qt2410/qt2410.c b/board/qt2410/qt2410.c
+new file mode 100644
+index 0000000..133b748
+--- /dev/null
++++ b/board/qt2410/qt2410.c
+@@ -0,0 +1,130 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger at sysgo.de>
++ *
++ * (C) Copyright 2002
++ * David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <common.h>
++#include <s3c2410.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#define FCLK_SPEED 1
++
++#if FCLK_SPEED==0		/* Fout = 203MHz, Fin = 12MHz for Audio */
++#define M_MDIV	0xC3
++#define M_PDIV	0x4
++#define M_SDIV	0x1
++#elif FCLK_SPEED==1		/* Fout = 202.8MHz */
++#if 0
++#define M_MDIV	0xA1
++#define M_PDIV	0x3
++#define M_SDIV	0x1
++#else
++#define M_MDIV	0x5c
++#define M_PDIV	0x4
++#define M_SDIV	0x0
++#endif
++#endif
++
++#define USB_CLOCK 1
++
++#if USB_CLOCK==0
++#define U_M_MDIV	0xA1
++#define U_M_PDIV	0x3
++#define U_M_SDIV	0x1
++#elif USB_CLOCK==1
++#define U_M_MDIV	0x48
++#define U_M_PDIV	0x3
++#define U_M_SDIV	0x2
++#endif
++
++static inline void delay (unsigned long loops)
++{
++	__asm__ volatile ("1:\n"
++	  "subs %0, %1, #1\n"
++	  "bne 1b":"=r" (loops):"0" (loops));
++}
++
++/*
++ * Miscellaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++	S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++	S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
++
++	/* to reduce PLL lock time, adjust the LOCKTIME register */
++	clk_power->LOCKTIME = 0xFFFFFF;
++
++	/* configure MPLL */
++	clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
++
++	/* some delay between MPLL and UPLL */
++	delay (4000);
++
++	/* configure UPLL */
++	clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
++
++	/* some delay between MPLL and UPLL */
++	delay (8000);
++
++	/* set up the I/O ports */
++	gpio->GPACON = 0x007FFFFF;
++	gpio->GPBCON = 0x00044555;
++	gpio->GPBUP = 0x000007FF;
++	gpio->GPCCON = 0xAAAAAAAA;
++	gpio->GPCUP = 0x0000FFFF;
++	gpio->GPDCON = 0xAAAAAAAA;
++	gpio->GPDUP = 0x0000FFFF;
++	gpio->GPECON = 0xAAAAAAAA;
++	gpio->GPEUP = 0x0000FFFF;
++	gpio->GPFCON = 0x000055AA;
++	gpio->GPFUP = 0x000000FF;
++	gpio->GPGCON = 0xFF95FFBA;
++	//gpio->GPGUP = 0x0000FFFF;
++	gpio->GPGUP = 0x0000AFEF;
++	gpio->GPHCON = 0x0028FAAA;
++	gpio->GPHUP = 0x000007FF;
++
++	/* arch number of SMDK2410-Board */
++	gd->bd->bi_arch_number = MACH_TYPE_QT2410;
++
++	/* adress of boot parameters */
++	gd->bd->bi_boot_params = 0x30000100;
++
++	icache_enable();
++	dcache_enable();
++
++	return 0;
++}
++
++int dram_init (void)
++{
++	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++	return 0;
++}
+diff --git a/board/qt2410/u-boot.lds b/board/qt2410/u-boot.lds
+new file mode 100644
+index 0000000..f4fbf96
+--- /dev/null
++++ b/board/qt2410/u-boot.lds
+@@ -0,0 +1,57 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj at denx.de>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++	. = 0x00000000;
++
++	. = ALIGN(4);
++	.text      :
++	{
++	  cpu/arm920t/start.o	(.text)
++	  *(.text)
++	}
++
++	. = ALIGN(4);
++	.rodata : { *(.rodata) }
++
++	. = ALIGN(4);
++	.data : { *(.data) }
++
++	. = ALIGN(4);
++	.got : { *(.got) }
++
++	. = .;
++	__u_boot_cmd_start = .;
++	.u_boot_cmd : { *(.u_boot_cmd) }
++	__u_boot_cmd_end = .;
++
++	. = ALIGN(4);
++	__bss_start = .;
++	.bss : { *(.bss) }
++	_end = .;
++}
+diff --git a/cpu/arm920t/s3c24x0/Makefile b/cpu/arm920t/s3c24x0/Makefile
+index af9e4ef..10f33f2 100644
+--- a/cpu/arm920t/s3c24x0/Makefile
++++ b/cpu/arm920t/s3c24x0/Makefile
+@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
+ LIB	= lib$(SOC).a
+ 
+ OBJS	= i2c.o interrupts.o serial.o speed.o \
+-	  usb_ohci.o
++	  usb_ohci.o mmc.o nand_read.o nand.o
+ 
+ all:	.depend $(LIB)
+ 
+diff --git a/cpu/arm920t/s3c24x0/mmc.c b/cpu/arm920t/s3c24x0/mmc.c
+new file mode 100644
+index 0000000..b7057e2
+--- /dev/null
++++ b/cpu/arm920t/s3c24x0/mmc.c
+@@ -0,0 +1,568 @@
++/*
++ * u-boot S3C2410 MMC/SD card driver
++ * (C) Copyright 2006 by Harald Welte <laforge at gnumonks.org>
++ *
++ * based on u-boot pxa MMC driver and linux/drivers/mmc/s3c2410mci.c
++ * (C) 2005-2005 Thomas Kleffel
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <config.h>
++#include <common.h>
++#include <mmc.h>
++#include <asm/errno.h>
++#include <asm/io.h>
++#include <s3c2410.h>
++#include <part.h>
++
++#ifdef CONFIG_MMC
++
++#define CONFIG_MMC_WIDE
++
++//#define MMC_DEBUG
++
++#ifdef MMC_DEBUG
++#ifdef debug
++#undef debug
++#endif
++#define debug printf
++#endif
++
++static S3C2410_SDI *sdi;
++
++extern int
++fat_register_device(block_dev_desc_t *dev_desc, int part_no);
++
++static block_dev_desc_t mmc_dev;
++
++block_dev_desc_t * mmc_get_dev(int dev)
++{
++	return ((block_dev_desc_t *)&mmc_dev);
++}
++
++/*
++ * FIXME needs to read cid and csd info to determine block size
++ * and other parameters
++ */
++static uchar mmc_buf[MMC_BLOCK_SIZE];
++static mmc_csd_t mmc_csd;
++static int mmc_ready = 0;
++static int wide = 0;
++
++
++#define CMD_F_RESP	0x01
++#define CMD_F_RESP_LONG	0x02
++
++static u_int32_t *
++/****************************************************/
++mmc_cmd(ushort cmd, ulong arg, ushort flags)
++/****************************************************/
++{
++	static u_int32_t resp[5];
++	ulong status;
++	int i;
++
++	u_int32_t ccon, csta;
++	u_int32_t csta_rdy_bit = S3C2410_SDICMDSTAT_CMDSENT;
++
++	memset(resp, 0, sizeof(resp));
++
++	debug("mmc_cmd CMD%d arg=0x%08x flags=%x\n", cmd, arg, flags);
++
++	sdi->SDICSTA = 0xffffffff;
++	sdi->SDIDSTA = 0xffffffff;
++	sdi->SDIFSTA = 0xffffffff;
++
++	sdi->SDICARG = arg;
++
++	ccon = cmd & S3C2410_SDICMDCON_INDEX;
++	ccon |= S3C2410_SDICMDCON_SENDERHOST|S3C2410_SDICMDCON_CMDSTART;
++	
++	if (flags & CMD_F_RESP) {
++		ccon |= S3C2410_SDICMDCON_WAITRSP;
++		csta_rdy_bit = S3C2410_SDICMDSTAT_RSPFIN; /* 1 << 9 */
++	}
++
++	if (flags & CMD_F_RESP_LONG)
++		ccon |= S3C2410_SDICMDCON_LONGRSP;
++
++	sdi->SDICCON = ccon;
++
++	while (1) {
++		csta = sdi->SDICSTA;
++		if (csta & csta_rdy_bit)
++			break;
++		if (csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
++			printf("===============> MMC CMD Timeout\n");
++			sdi->SDICSTA |= S3C2410_SDICMDSTAT_CMDTIMEOUT;
++			break;
++		}
++	}
++
++	debug("final MMC CMD status 0x%x\n", csta);
++
++	sdi->SDICSTA |= csta_rdy_bit;
++
++	if (flags & CMD_F_RESP) {
++		resp[0] = sdi->SDIRSP0;
++		resp[1] = sdi->SDIRSP1;
++		resp[2] = sdi->SDIRSP2;
++		resp[3] = sdi->SDIRSP3;
++	} 
++
++#if 0
++	for (i=0; i<4; i ++) {
++		debug("MMC resp[%d] = 0x%08x\n", i, resp[i]);
++	}
++#endif
++
++	return resp;
++}
++
++#define FIFO_FILL(host) ((host->SDIFSTA & S3C2410_SDIFSTA_COUNTMASK) >> 2)
++
++static int
++/****************************************************/
++mmc_block_read(uchar *dst, ulong src, ulong len)
++/****************************************************/
++{
++	u_int32_t dcon, fifo;
++	u_int32_t *dst_u32 = (u_int32_t *)dst;
++	u_int32_t *resp;
++
++	if (len == 0) {
++		return 0;
++	}
++
++	debug("mmc_block_rd dst %lx src %lx len %d\n", (ulong)dst, src, len);
++
++	/* set block len */
++	resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, len, CMD_F_RESP);
++	sdi->SDIBSIZE = len;
++
++	//sdi->SDIPRE = 0xff;
++
++	/* setup data */
++	dcon = (len >> 9) & S3C2410_SDIDCON_BLKNUM_MASK;
++	dcon |= S3C2410_SDIDCON_BLOCKMODE;
++	dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
++	if (wide)
++		dcon |= S3C2410_SDIDCON_WIDEBUS;
++	sdi->SDIDCON = dcon;
++
++	/* send read command */
++	resp = mmc_cmd(MMC_CMD_READ_BLOCK, src, CMD_F_RESP);
++
++	while (len > 0) {
++		u_int32_t sdidsta = sdi->SDIDSTA;
++		fifo = FIFO_FILL(sdi);
++		if (sdidsta & (S3C2410_SDIDSTA_FIFOFAIL|
++				S3C2410_SDIDSTA_CRCFAIL|
++				S3C2410_SDIDSTA_RXCRCFAIL|
++				S3C2410_SDIDSTA_DATATIMEOUT)) {
++			printf("mmc_block_read: err SDIDSTA=0x%08x\n", sdidsta);
++			return -EIO;
++		}
++
++		while (fifo--) {
++			//debug("dst_u32 = 0x%08x\n", dst_u32);
++			*(dst_u32++) = sdi->SDIDAT;
++			if (len >= 4)
++				len -= 4;
++			else {
++				len = 0;
++				break;
++			}
++		}
++	}
++
++#if 1
++	debug("waiting for SDIDSTA  (currently 0x%08x\n", sdi->SDIDSTA);
++	while (!(sdi->SDIDSTA & (1 << 4))) {}
++	debug("done waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
++#endif
++
++	sdi->SDIDCON = 0;
++
++#if 0
++	if (!(sdi->SDIDSTA & S3C2410_SDIDSTA_XFERFINISH))
++		printf("mmc_block_read; transfer not finished!\n");
++#endif
++
++	return 0;
++}
++
++static int
++/****************************************************/
++mmc_block_write(ulong dst, uchar *src, int len)
++/****************************************************/
++{
++#if 0
++	uchar *resp;
++	ushort argh, argl;
++	ulong status;
++
++	if (len == 0) {
++		return 0;
++	}
++
++	debug("mmc_block_wr dst %lx src %lx len %d\n", dst, (ulong)src, len);
++
++	argh = len >> 16;
++	argl = len & 0xffff;
++
++	/* set block len */
++	resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, argh, argl, CMD_F_RESP);
++
++	/* send write command */
++	argh = dst >> 16;
++	argl = dst & 0xffff;
++	MMC_STRPCL = MMC_STRPCL_STOP_CLK;
++	MMC_NOB = 1;
++	MMC_BLKLEN = len;
++	resp = mmc_cmd(MMC_CMD_WRITE_BLOCK, dst, CMD_F_RESP,
++			MMC_CMDAT_R1|MMC_CMDAT_WRITE|MMC_CMDAT_BLOCK|MMC_CMDAT_DATA_EN);
++
++	MMC_I_MASK = ~MMC_I_MASK_TXFIFO_WR_REQ;
++	while (len) {
++		if (MMC_I_REG & MMC_I_REG_TXFIFO_WR_REQ) {
++			int i, bytes = min(32,len);
++
++			for (i=0; i<bytes; i++) {
++				MMC_TXFIFO = *src++;
++			}
++			if (bytes < 32) {
++				MMC_PRTBUF = MMC_PRTBUF_BUF_PART_FULL;
++			}
++			len -= bytes;
++		}
++		status = MMC_STAT;
++		if (status & MMC_STAT_ERRORS) {
++			printf("MMC_STAT error %lx\n", status);
++			return -1;
++		}
++	}
++	MMC_I_MASK = ~MMC_I_MASK_DATA_TRAN_DONE;
++	while (!(MMC_I_REG & MMC_I_REG_DATA_TRAN_DONE));
++	MMC_I_MASK = ~MMC_I_MASK_PRG_DONE;
++	while (!(MMC_I_REG & MMC_I_REG_PRG_DONE));
++	status = MMC_STAT;
++	if (status & MMC_STAT_ERRORS) {
++		printf("MMC_STAT error %lx\n", status);
++		return -1;
++	}
++#endif
++	return 0;
++}
++
++
++int
++/****************************************************/
++mmc_read(ulong src, uchar *dst, int size)
++/****************************************************/
++{
++	ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++	ulong mmc_block_size, mmc_block_address;
++
++	if (size == 0) {
++		return 0;
++	}
++
++	if (!mmc_ready) {
++		printf("Please initialize the MMC first\n");
++		return -1;
++	}
++
++	mmc_block_size = MMC_BLOCK_SIZE;
++	mmc_block_address = ~(mmc_block_size - 1);
++
++	src -= CFG_MMC_BASE;
++	end = src + size;
++	part_start = ~mmc_block_address & src;
++	part_end = ~mmc_block_address & end;
++	aligned_start = mmc_block_address & src;
++	aligned_end = mmc_block_address & end;
++
++	/* all block aligned accesses */
++	debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++	src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++	if (part_start) {
++		part_len = mmc_block_size - part_start;
++		debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++		src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++		if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++			return -1;
++		}
++		memcpy(dst, mmc_buf+part_start, part_len);
++		dst += part_len;
++		src += part_len;
++	}
++	debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++	src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++	for (; src < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++		debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++		src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++		if ((mmc_block_read((uchar *)(dst), src, mmc_block_size)) < 0) {
++			return -1;
++		}
++	}
++	debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++	src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++	if (part_end && src < end) {
++		debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++		src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++		if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++			return -1;
++		}
++		memcpy(dst, mmc_buf, part_end);
++	}
++	return 0;
++}
++
++int
++/****************************************************/
++mmc_write(uchar *src, ulong dst, int size)
++/****************************************************/
++{
++	ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++	ulong mmc_block_size, mmc_block_address;
++
++	if (size == 0) {
++		return 0;
++	}
++
++	if (!mmc_ready) {
++		printf("Please initialize the MMC first\n");
++		return -1;
++	}
++
++	mmc_block_size = MMC_BLOCK_SIZE;
++	mmc_block_address = ~(mmc_block_size - 1);
++
++	dst -= CFG_MMC_BASE;
++	end = dst + size;
++	part_start = ~mmc_block_address & dst;
++	part_end = ~mmc_block_address & end;
++	aligned_start = mmc_block_address & dst;
++	aligned_end = mmc_block_address & end;
++
++	/* all block aligned accesses */
++	debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++	src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++	if (part_start) {
++		part_len = mmc_block_size - part_start;
++		debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++		(ulong)src, dst, end, part_start, part_end, aligned_start, aligned_end);
++		if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++			return -1;
++		}
++		memcpy(mmc_buf+part_start, src, part_len);
++		if ((mmc_block_write(aligned_start, mmc_buf, mmc_block_size)) < 0) {
++			return -1;
++		}
++		dst += part_len;
++		src += part_len;
++	}
++	debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++	src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++	for (; dst < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++		debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++		src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++		if ((mmc_block_write(dst, (uchar *)src, mmc_block_size)) < 0) {
++			return -1;
++		}
++	}
++	debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++	src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++	if (part_end && dst < end) {
++		debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++		src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++		if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++			return -1;
++		}
++		memcpy(mmc_buf, src, part_end);
++		if ((mmc_block_write(aligned_end, mmc_buf, mmc_block_size)) < 0) {
++			return -1;
++		}
++	}
++	return 0;
++}
++
++ulong
++/****************************************************/
++mmc_bread(int dev_num, ulong blknr, ulong blkcnt, ulong *dst)
++/****************************************************/
++{
++	int mmc_block_size = MMC_BLOCK_SIZE;
++	ulong src = blknr * mmc_block_size + CFG_MMC_BASE;
++
++	mmc_read(src, (uchar *)dst, blkcnt*mmc_block_size);
++	return blkcnt;
++}
++
++static u_int16_t rca = MMC_DEFAULT_RCA;
++
++static u_int32_t mmc_size(const struct mmc_csd *csd)
++{
++	u_int32_t block_len, mult, blocknr;
++
++	block_len = csd->read_bl_len << 12;
++	mult = csd->c_size_mult1 << 8;
++	blocknr = (csd->c_size+1) * mult;
++
++	return blocknr * block_len;
++}
++
++int
++/****************************************************/
++mmc_init(int verbose)
++/****************************************************/
++{
++ 	int retries, rc = -ENODEV;
++	int is_sd = 0;
++	u_int32_t *resp;
++	S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++	
++	sdi = S3C2410_GetBase_SDI();
++
++	debug("mmc_init(PCLK=%u)\n", get_PCLK());
++
++	clk_power->CLKCON |= (1 << 9);
++
++	/* S3C2410 has some bug that prevents reliable operation at higher speed */
++	//sdi->SDIPRE = 0x3e;  /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
++	sdi->SDIPRE = 0x02;  /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
++	sdi->SDIBSIZE = 512;
++	sdi->SDIDTIMER = 0xffff;
++	sdi->SDIIMSK = 0x0;
++	sdi->SDICON = S3C2410_SDICON_FIFORESET|S3C2440_SDICON_MMCCLOCK;
++	udelay(125000); /* FIXME: 74 SDCLK cycles */
++
++	mmc_csd.c_size = 0;
++
++	/* reset */
++	retries = 10;
++	resp = mmc_cmd(MMC_CMD_RESET, 0, 0);
++
++	printf("trying to detect SD Card...\n");
++	while (retries--) {
++		int i;
++		udelay(100000);
++		resp = mmc_cmd(55, 0x00000000, CMD_F_RESP);
++		resp = mmc_cmd(41, 0x00300000, CMD_F_RESP);
++
++		if (resp[0] & (1 << 31)) {
++			is_sd = 1;
++			break;
++		}
++	}
++
++	if (retries == 0 && !is_sd) {
++		retries = 10;
++		printf("failed to detect SD Card, trying MMC\n");
++		resp = mmc_cmd(MMC_CMD_SEND_OP_COND, 0x00ffc000, CMD_F_RESP);
++		while (retries-- && resp && !(resp[4] & 0x80)) {
++			debug("resp %x %x\n", resp[0], resp[1]);
++			udelay(50);
++			resp = mmc_cmd(1, 0x00ffff00, CMD_F_RESP);
++		}
++	}
++
++	/* try to get card id */
++	resp = mmc_cmd(MMC_CMD_ALL_SEND_CID, 0, CMD_F_RESP|CMD_F_RESP_LONG);
++	if (resp) {
++		/* TODO configure mmc driver depending on card attributes */
++		mmc_cid_t *cid = (mmc_cid_t *)resp;
++		if (verbose) {
++			printf("MMC found. Card desciption is:\n");
++			printf("Manufacturer ID = %02x%02x%02x\n",
++							cid->id[0], cid->id[1], cid->id[2]);
++			printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
++			cid->hwrev = cid->fwrev = 0;	/* null terminate string */
++			printf("Product Name = %s\n",cid->name);
++			printf("Serial Number = %02x%02x%02x\n",
++							cid->sn[0], cid->sn[1], cid->sn[2]);
++			printf("Month = %d\n",cid->month);
++			printf("Year = %d\n",1997 + cid->year);
++		}
++		/* fill in device description */
++		mmc_dev.if_type = IF_TYPE_MMC;
++		mmc_dev.part_type = PART_TYPE_DOS;
++		mmc_dev.dev = 0;
++		mmc_dev.lun = 0;
++		mmc_dev.type = 0;
++		/* FIXME fill in the correct size (is set to 32MByte) */
++		mmc_dev.blksz = 512;
++		mmc_dev.lba = 0x10000;
++		sprintf(mmc_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x",
++				cid->id[0], cid->id[1], cid->id[2],
++				cid->sn[0], cid->sn[1], cid->sn[2]);
++		sprintf(mmc_dev.product,"%s",cid->name);
++		sprintf(mmc_dev.revision,"%x %x",cid->hwrev, cid->fwrev);
++		mmc_dev.removable = 0;
++		mmc_dev.block_read = mmc_bread;
++
++		/* MMC exists, get CSD too */
++		resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, CMD_F_RESP);
++		if (is_sd)
++			rca = resp[0] >> 16;
++			
++		resp = mmc_cmd(MMC_CMD_SEND_CSD, rca<<16, CMD_F_RESP|CMD_F_RESP_LONG);
++		if (resp) {
++			mmc_csd_t *csd = (mmc_csd_t *)resp;
++			memcpy(&mmc_csd, csd, sizeof(csd));
++			rc = 0;
++			mmc_ready = 1;
++			/* FIXME add verbose printout for csd */
++			printf("READ_BL_LEN=%u, C_SIZE_MULT=%u, C_SIZE=%u\n", 
++				csd->read_bl_len, csd->c_size_mult1, csd->c_size);
++			printf("size = %u\n", mmc_size(csd));
++		}
++	}
++
++	resp = mmc_cmd(MMC_CMD_SELECT_CARD, rca<<16, CMD_F_RESP);
++
++#ifdef CONFIG_MMC_WIDE
++	if (is_sd) {
++		resp = mmc_cmd(55, rca<<16, CMD_F_RESP);
++		resp = mmc_cmd(6, 0x02, CMD_F_RESP);
++		wide = 1;
++	}
++#endif
++
++	fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
++
++	return rc;
++}
++
++int
++mmc_ident(block_dev_desc_t *dev)
++{
++	return 0;
++}
++
++int
++mmc2info(ulong addr)
++{
++	/* FIXME hard codes to 32 MB device */
++	if (addr >= CFG_MMC_BASE && addr < CFG_MMC_BASE + 0x02000000) {
++		return 1;
++	}
++	return 0;
++}
++
++#endif	/* CONFIG_MMC */
+diff --git a/cpu/arm920t/s3c24x0/nand.c b/cpu/arm920t/s3c24x0/nand.c
+new file mode 100644
+index 0000000..f720229
+--- /dev/null
++++ b/cpu/arm920t/s3c24x0/nand.c
+@@ -0,0 +1,212 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte at hmw-consulting.de>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <common.h>
++
++#if 0
++#define DEBUGN	printf
++#else
++#define DEBUGN(x, args ...) {}
++#endif
++
++#if (CONFIG_COMMANDS & CFG_CMD_NAND)
++#if !defined(CFG_NAND_LEGACY)
++
++#include <nand.h>
++#include <s3c2410.h>
++
++#define __REGb(x)	(*(volatile unsigned char *)(x))
++#define __REGi(x)	(*(volatile unsigned int *)(x))
++
++#define	NF_BASE		0x4e000000
++#define	NFCONF		__REGi(NF_BASE + 0x0)
++#define	NFCMD		__REGb(NF_BASE + 0x4)
++#define	NFADDR		__REGb(NF_BASE + 0x8)
++#define	NFDATA		__REGb(NF_BASE + 0xc)
++#define	NFSTAT		__REGb(NF_BASE + 0x10)
++
++#define S3C2410_NFCONF_EN          (1<<15)
++#define S3C2410_NFCONF_512BYTE     (1<<14)
++#define S3C2410_NFCONF_4STEP       (1<<13)
++#define S3C2410_NFCONF_INITECC     (1<<12)
++#define S3C2410_NFCONF_nFCE        (1<<11)
++#define S3C2410_NFCONF_TACLS(x)    ((x)<<8)
++#define S3C2410_NFCONF_TWRPH0(x)   ((x)<<4)
++#define S3C2410_NFCONF_TWRPH1(x)   ((x)<<0)
++
++static u16 s3c2410_read_word(struct mtd_info *mtd)
++{
++	unsigned char byte = 0;
++
++	printf("s3c2410_read_word: WARNING, this function is not implemented yet\n");
++	return byte;	
++}
++
++static void s3c2410_write_word(struct mtd_info *mtd, u16 word)
++{
++	printf("s3c2410_write_word: WARNING, this function is not implemented yet\n");
++}
++
++static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd)
++{
++	struct nand_chip *chip = mtd->priv;
++
++	DEBUGN("hwcontrol(): 0x%02x: ", cmd);
++
++	switch (cmd) {
++	case NAND_CTL_SETNCE:
++		NFCONF &= ~S3C2410_NFCONF_nFCE;
++		DEBUGN("NFCONF=0x%08x\n", NFCONF);
++		break;
++	case NAND_CTL_CLRNCE:
++		NFCONF |= S3C2410_NFCONF_nFCE;
++		DEBUGN("NFCONF=0x%08x\n", NFCONF);
++		break;
++	case NAND_CTL_SETALE:
++		chip->IO_ADDR_W = NF_BASE + 0x8;
++		DEBUGN("SETALE\n");
++		break;
++	case NAND_CTL_SETCLE:
++		chip->IO_ADDR_W = NF_BASE + 0x4;
++		DEBUGN("SETCLE\n");
++		break;
++	default:
++		chip->IO_ADDR_W = NF_BASE + 0xc;
++		break;
++	}
++	return;
++}
++
++static int s3c2410_dev_ready(struct mtd_info *mtd)
++{
++	DEBUGN("dev_ready\n");
++	return (NFSTAT & 0x01);
++}
++
++static void s3c2410_cmdfunc(struct mtd_info *mtd, unsigned cmd,
++			    int column, int page_addr)
++{
++	DEBUGN("cmdfunc(): 0x%02x, col=%d, page=%d\n", cmd, column, page_addr);
++
++	switch (cmd) {
++	case NAND_CMD_READ0:
++	case NAND_CMD_READ1:
++	case NAND_CMD_READOOB:
++		NFCMD = cmd;
++		NFADDR = column & 0xff;
++		NFADDR = page_addr & 0xff;
++		NFADDR = (page_addr >> 8) & 0xff;
++		NFADDR = (page_addr >> 16) & 0xff;
++		break;
++	case NAND_CMD_READID:
++		NFCMD = cmd;
++		NFADDR = 0;
++		break;
++	case NAND_CMD_PAGEPROG:
++		NFCMD = cmd;
++		printf("PAGEPROG not implemented\n");
++		break;
++	case NAND_CMD_ERASE1:
++		NFCMD = cmd;
++		NFADDR = page_addr & 0xff;
++		NFADDR = (page_addr >> 8) & 0xff;
++		NFADDR = (page_addr >> 16) & 0xff;
++		break;
++	case NAND_CMD_ERASE2:
++		NFCMD = cmd;
++		break;
++	case NAND_CMD_SEQIN:
++		printf("SEQIN not implemented\n");
++		break;
++	case NAND_CMD_STATUS:
++		NFCMD = cmd;
++		break;
++	case NAND_CMD_RESET:
++		NFCMD = cmd;
++		break;
++	default:
++		break;
++	}
++
++	while (!s3c2410_dev_ready(mtd));
++}
++
++void board_nand_init(struct nand_chip *nand)
++{
++	u_int32_t cfg;
++	u_int8_t tacls, twrph0, twrph1;
++	S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
++
++	DEBUGN("board_nand_init()\n");
++
++	clk_power->CLKCON |= (1 << 4);
++
++	/* initialize hardware */
++	twrph0 = 3; twrph1 = 0; tacls = 0;
++
++	/* default timings: maximum */
++	//twrph0 = 8; twrph1 = 8; tacls = 8;
++
++	cfg = S3C2410_NFCONF_EN;
++	cfg |= S3C2410_NFCONF_TACLS(tacls - 1);
++	cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1);
++	cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1);
++
++	//NFCONF = cfg;
++	NFCONF = 0xf842;
++
++	/* initialize nand_chip data structure */
++	nand->IO_ADDR_R = nand->IO_ADDR_W = 0x4e00000c;
++
++	/* read_buf and write_buf are default */
++	/* read_byte and write_byte are default */
++
++	/* need to override word read/write since default routines try 16bit wide
++	 * register access of an (in our case) 8bit register */
++	nand->read_word = s3c2410_read_word;
++	nand->write_word = s3c2410_write_word;
++
++	/* hwcontrol always must be implemented */
++	nand->hwcontrol = s3c2410_hwcontrol;
++
++	nand->dev_ready = s3c2410_dev_ready;
++
++	nand->eccmode = NAND_ECC_SOFT;
++	nand->options = 0;
++	//nand->waitfunc = dfc_wait;
++
++	//nand->cmdfunc = s3c2410_cmdfunc;
++	//nand->autooob = &delta_oob;
++	//nand->badblock_pattern = &delta_bbt_descr;
++	
++#if 0
++	/* reset */
++	nand->hwcontrol(NULL, NAND_CTL_SETNCE);
++	nand->cmdfunc(NULL, NAND_CMD_RESET, -1, -1);
++	while (nand->dev_ready(NULL) == 0) {}
++	nand->hwcontrol(NULL, NAND_CTL_CLRNCE);
++#endif
++
++	DEBUGN("end of nand_init\n");
++}
++
++#else
++ #error "U-Boot legacy NAND support not available for S3C2410"
++#endif
++#endif
+diff --git a/cpu/arm920t/s3c24x0/nand_read.c b/cpu/arm920t/s3c24x0/nand_read.c
+new file mode 100644
+index 0000000..9d97932
+--- /dev/null
++++ b/cpu/arm920t/s3c24x0/nand_read.c
+@@ -0,0 +1,75 @@
++/* 
++ * nand_read.c: Simple NAND read functions for booting from NAND
++ *
++ * Taken from GPLv2 licensed vivi bootloader,
++ * Copyright (C) 2002 MIZI Research, Inc.
++ *
++ * Author: Hwang, Chideok <hwang at mizi.com>
++ * Date  : $Date: 2004/02/04 10:37:37 $
++ *
++ * u-boot integration (C) 2006 by Harald Welte <hwelte at hmw-consulting.de>
++ */
++
++#include <common.h>
++
++#ifdef CONFIG_S3C2410_NAND_BOOT
++
++#define __REGb(x)	(*(volatile unsigned char *)(x))
++#define __REGi(x)	(*(volatile unsigned int *)(x))
++#define NF_BASE		0x4e000000
++#define NFCONF		__REGi(NF_BASE + 0x0)
++#define NFCMD		__REGb(NF_BASE + 0x4)
++#define NFADDR		__REGb(NF_BASE + 0x8)
++#define NFDATA		__REGb(NF_BASE + 0xc)
++#define NFSTAT		__REGb(NF_BASE + 0x10)
++
++#define BUSY 1
++inline void wait_idle(void) {
++    int i;
++
++    while(!(NFSTAT & BUSY))
++      for(i=0; i<10; i++);
++}
++
++#define NAND_SECTOR_SIZE	512
++#define NAND_BLOCK_MASK		(NAND_SECTOR_SIZE - 1)
++
++/* low level nand read function */
++int
++nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
++{
++    int i, j;
++
++    if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
++        return -1;	/* invalid alignment */
++    }
++
++    /* chip Enable */
++    NFCONF &= ~0x800;
++    for(i=0; i<10; i++);
++
++    for(i=start_addr; i < (start_addr + size);) {
++      /* READ0 */
++      NFCMD = 0;
++
++      /* Write Address */
++      NFADDR = i & 0xff;
++      NFADDR = (i >> 9) & 0xff;
++      NFADDR = (i >> 17) & 0xff;
++      NFADDR = (i >> 25) & 0xff;
++
++      wait_idle();
++
++      for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {
++	*buf = (NFDATA & 0xff);
++	buf++;
++      }
++    }
++
++    /* chip Disable */
++    NFCONF |= 0x800;	/* chip disable */
++
++    return 0;
++}
++
++#endif /* CONFIG_S3C2410_NAND_BOOT */
+diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S
+index 346f0d0..232e2c2 100644
+--- a/cpu/arm920t/start.S
++++ b/cpu/arm920t/start.S
+@@ -5,6 +5,10 @@
+  *  Copyright (c) 2002	Alex Züpke <azu at sysgo.de>
+  *  Copyright (c) 2002	Gary Jennejohn <gj at denx.de>
+  *
++ * S3C2410 NAND portions
++ *  Copyright (c) 2001  MIZI Research, Inc.
++ *  Copyright (c) 2006  Harald Welte <hwelte at hmw-consulting.de>
++ *
+  * See file CREDITS for list of people who contributed to this
+  * project.
+  *
+@@ -27,6 +31,7 @@
+ 
+ #include <config.h>
+ #include <version.h>
++#include <s3c2410.h>
+ 
+ 
+ /*
+@@ -161,6 +166,7 @@ #ifndef CONFIG_SKIP_LOWLEVEL_INIT
+ #endif
+ 
+ #ifndef CONFIG_SKIP_RELOCATE_UBOOT
++#ifndef CONFIG_S3C2410_NAND_BOOT
+ relocate:				/* relocate U-Boot to RAM	    */
+ 	adr	r0, _start		/* r0 <- current position of code   */
+ 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
+@@ -177,6 +183,93 @@ copy_loop:
+ 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
+ 	cmp	r0, r2			/* until source end addreee [r2]    */
+ 	ble	copy_loop
++#else /* NAND_BOOT */
++relocate:
++copy_myself:
++	/* mov	r10, lr */
++
++	@ reset NAND
++	mov	r1, #S3C2410_NAND_BASE
++	ldr	r2, =0xf842		@ initial value enable tacls=3,rph0=6,rph1=0
++	str	r2, [r1, #oNFCONF]
++	ldr	r2, [r1, #oNFCONF]
++	bic	r2, r2, #0x800		@ enable chip
++	str	r2, [r1, #oNFCONF]
++	mov	r2, #0xff		@ RESET command
++	strb	r2, [r1, #oNFCMD]
++	mov	r3, #0			@ wait 
++1:	add	r3, r3, #0x1
++	cmp	r3, #0xa
++	blt	1b
++2:	ldr	r2, [r1, #oNFSTAT]	@ wait ready
++	tst	r2, #0x1
++	beq	2b
++	ldr	r2, [r1, #oNFCONF]
++	orr	r2, r2, #0x800		@ disable chip
++	str	r2, [r1, #oNFCONF]
++
++#if 0
++	@ get ready to call C functions (for nand_read())
++	ldr	sp, DW_STACK_START	@ setup stack pointer
++	mov	fp, #0			@ no previous frame, so fp=0
++#else
++	ldr	r0, _TEXT_BASE		/* upper 128 KiB: relocated uboot   */
++	sub	r0, r0, #CFG_MALLOC_LEN	/* malloc area                      */
++	sub	r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo                        */
++#ifdef CONFIG_USE_IRQ
++	sub	r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
++#endif
++	sub	sp, r0, #12		/* leave 3 words for abort-stack    */
++#endif
++
++	@ copy u-boot to RAM
++	ldr	r0, _TEXT_BASE
++	mov     r1, #0x0
++	mov	r2, #0x30000
++	bl	nand_read_ll
++
++	tst	r0, #0x0
++	beq	ok_nand_read
++#ifdef CONFIG_DEBUG_LL
++bad_nand_read: 
++	ldr	r0, STR_FAIL
++	ldr	r1, SerBase
++	bl	PrintWord
++1:	b	1b		@ infinite loop 
++#endif
++	
++ok_nand_read:
++#ifdef CONFIG_DEBUG_LL
++	ldr	r0, STR_OK
++	ldr	r1, SerBase
++	bl	PrintWord
++#endif
++
++	@ verify
++	mov	r0, #0
++	@ldr	r1, =0x33f00000
++	ldr	r1, _TEXT_BASE
++	mov	r2, #0x400	@ 4 bytes * 1024 = 4K-bytes
++go_next:
++	ldr	r3, [r0], #4
++	ldr	r4, [r1], #4
++	teq	r3, r4
++	bne	notmatch
++	subs	r2, r2, #4
++	beq	done_nand_read	
++	bne	go_next
++notmatch:
++#ifdef CONFIG_DEBUG_LL
++	sub	r0, r0, #4
++	ldr	r1, SerBase
++	bl	PrintHexWord
++	ldr	r0, STR_FAIL
++	ldr	r1, SerBase
++	bl	PrintWord
++#endif
++1:	b	1b
++done_nand_read:
++#endif /* NAND_BOOT */
+ #endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
+ 
+ 	/* Set up the stack						    */
+diff --git a/drivers/Makefile b/drivers/Makefile
+index 9be95c7..eef266a 100644
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -50,7 +50,7 @@ OBJS	= 3c589.o 5701rls.o ali512x.o \
+ 	  videomodes.o w83c553f.o \
+ 	  ks8695eth.o \
+ 	  pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o	\
+-	  rpx_pcmcia.o
++	  rpx_pcmcia.o s3c2410_fb.o
+ 
+ all:	$(LIB)
+ 
+diff --git a/drivers/cs8900.c b/drivers/cs8900.c
+index 082434c..1cce622 100644
+--- a/drivers/cs8900.c
++++ b/drivers/cs8900.c
+@@ -120,6 +120,7 @@ void cs8900_get_enetaddr (uchar * addr)
+ 	unsigned char env_enetaddr[6];
+ 	char *tmp = getenv ("ethaddr");
+ 	char *end;
++	unsigned short chip_id;
+ 
+ 	for (i=0; i<6; i++) {
+ 		env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
+@@ -128,7 +129,9 @@ void cs8900_get_enetaddr (uchar * addr)
+ 	}
+ 
+ 	/* verify chip id */
+-	if (get_reg_init_bus (PP_ChipID) != 0x630e)
++	chip_id = get_reg_init_bus (PP_ChipID);
++	printf("\ncs8900a chipid 0x%04x\n", chip_id);
++	if (chip_id != 0x630e)
+ 		return;
+ 	eth_reset ();
+ 	if ((get_reg (PP_SelfST) & (PP_SelfSTAT_EEPROM | PP_SelfSTAT_EEPROM_OK)) ==
+diff --git a/drivers/s3c2410_fb.c b/drivers/s3c2410_fb.c
+new file mode 100644
+index 0000000..fc389a9
+--- /dev/null
++++ b/drivers/s3c2410_fb.c
+@@ -0,0 +1,182 @@
++/*
++ * (C) Copyright 2006 Harald Welte <hwelte at hmw-consulting.de>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <common.h>
++
++#if defined(CONFIG_VIDEO_S3C2410)
++
++#include <video_fb.h>
++#include "videomodes.h"
++#include <s3c2410.h>
++/*
++ * Export Graphic Device
++ */
++GraphicDevice smi;
++
++#define VIDEO_MEM_SIZE	0x200000
++
++/*******************************************************************************
++ *
++ * Init video chip with common Linux graphic modes (lilo)
++ */
++void *video_hw_init (void)
++{
++	S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
++	GraphicDevice *pGD = (GraphicDevice *)&smi;
++	int videomode;
++	unsigned long t1, hsynch, vsynch;
++	char *penv;
++	int tmp, i, bits_per_pixel;
++	struct ctfb_res_modes *res_mode;
++	struct ctfb_res_modes var_mode;
++	unsigned char videoout;
++	unsigned int *vm;
++
++	/* Search for video chip */
++	printf("Video: ");
++
++	tmp = 0;
++
++	videomode = CFG_DEFAULT_VIDEO_MODE;
++	/* get video mode via environment */
++	if ((penv = getenv ("videomode")) != NULL) {
++		/* deceide if it is a string */
++		if (penv[0] <= '9') {
++			videomode = (int) simple_strtoul (penv, NULL, 16);
++			tmp = 1;
++		}
++	} else {
++		tmp = 1;
++	}
++	if (tmp) {
++		/* parameter are vesa modes */
++		/* search params */
++		for (i = 0; i < VESA_MODES_COUNT; i++) {
++			if (vesa_modes[i].vesanr == videomode)
++				break;
++		}
++		if (i == VESA_MODES_COUNT) {
++			printf ("no VESA Mode found, switching to mode 0x%x ", CFG_DEFAULT_VIDEO_MODE);
++			i = 0;
++		}
++		res_mode =
++			(struct ctfb_res_modes *) &res_mode_init[vesa_modes[i].
++								 resindex];
++		bits_per_pixel = vesa_modes[i].bits_per_pixel;
++	} else {
++
++		res_mode = (struct ctfb_res_modes *) &var_mode;
++		bits_per_pixel = video_get_params (res_mode, penv);
++	}
++
++	/* calculate hsynch and vsynch freq (info only) */
++	t1 = (res_mode->left_margin + res_mode->xres +
++	      res_mode->right_margin + res_mode->hsync_len) / 8;
++	t1 *= 8;
++	t1 *= res_mode->pixclock;
++	t1 /= 1000;
++	hsynch = 1000000000L / t1;
++	t1 *=
++		(res_mode->upper_margin + res_mode->yres +
++		 res_mode->lower_margin + res_mode->vsync_len);
++	t1 /= 1000;
++	vsynch = 1000000000L / t1;
++
++	/* fill in Graphic device struct */
++	sprintf (pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", res_mode->xres,
++		 res_mode->yres, bits_per_pixel, (hsynch / 1000),
++		 (vsynch / 1000));
++	printf ("%s\n", pGD->modeIdent);
++	pGD->winSizeX = res_mode->xres;
++	pGD->winSizeY = res_mode->yres;
++	pGD->plnSizeX = res_mode->xres;
++	pGD->plnSizeY = res_mode->yres;
++	switch (bits_per_pixel) {
++	case 8:
++		pGD->gdfBytesPP = 1;
++		pGD->gdfIndex = GDF__8BIT_INDEX;
++		break;
++	case 15:
++		pGD->gdfBytesPP = 2;
++		pGD->gdfIndex = GDF_15BIT_555RGB;
++		break;
++	case 16:
++		pGD->gdfBytesPP = 2;
++		pGD->gdfIndex = GDF_16BIT_565RGB;
++		break;
++	case 24:
++		pGD->gdfBytesPP = 3;
++		pGD->gdfIndex = GDF_24BIT_888RGB;
++		break;
++	}
++
++#if 0
++	pGD->isaBase = CFG_ISA_IO;
++	pGD->pciBase = pci_mem_base;
++	pGD->dprBase = (pci_mem_base + 0x400000 + 0x8000);
++	pGD->vprBase = (pci_mem_base + 0x400000 + 0xc000);
++	pGD->cprBase = (pci_mem_base + 0x400000 + 0xe000);
++#endif
++	pGD->frameAdrs = LCD_VIDEO_ADDR;
++	pGD->memSize = VIDEO_MEM_SIZE;
++
++	lcd->LCDSADDR1 = LCD_VIDEO_ADDR >> 1;
++	lcd->LCDSADDR2 = (LCD_VIDEO_ADDR + 0x4b000) >> 1;
++	lcd->LCDSADDR3 = 0x000000f0;
++
++	lcd->LCDCON1 = 0x00000479;
++	lcd->LCDCON2 = 0x014fc183;
++	lcd->LCDCON3 = 0x0060ef07;
++	lcd->LCDCON4 = 0x00000003;
++	lcd->LCDCON5 = 0x00000b09;
++	lcd->LPCSEL  = 0x00000cf0;
++
++	pGD->winSizeX = pGD->plnSizeX = 240;
++	pGD->winSizeY = pGD->plnSizeY = 320;
++	pGD->gdfBytesPP = 2;
++	pGD->gdfIndex = GDF_16BIT_565RGB;
++
++	/* Enable  Display  */
++	videoout = 2;	    /* Default output is CRT */
++	if ((penv = getenv ("videoout")) != NULL) {
++		/* deceide if it is a string */
++		videoout = (int) simple_strtoul (penv, NULL, 16);
++	}
++
++	printf("clearing video memory\n");
++	/* Clear video memory */
++	i = pGD->memSize/4;
++	vm = (unsigned int *)pGD->frameAdrs;
++	while(i--)
++		*vm++ = 0;
++
++	printf("returning from video_hw_init\n");
++	return ((void*)&smi);
++}
++
++void
++video_set_lut (unsigned int index,	/* color number */
++	       unsigned char r,	/* red */
++	       unsigned char g,	/* green */
++	       unsigned char b	/* blue */
++    )
++{
++}
++
++#endif /* CONFIG_VIDEO_S3C2410 */
+diff --git a/drivers/usbdcore_s3c2410.c b/drivers/usbdcore_s3c2410.c
+new file mode 100644
+index 0000000..143fdf2
+--- /dev/null
++++ b/drivers/usbdcore_s3c2410.c
+@@ -0,0 +1,1609 @@
++/*
++ * (C) Copyright 2003
++ * Gerry Hamel, geh at ti.com, Texas Instruments
++ *
++ * Based on
++ * linux/drivers/usb/device/bi/omap.c
++ * TI OMAP1510 USB bus interface driver
++ *
++ * Author: MontaVista Software, Inc.
++ *	   source at mvista.com
++ *	   (C) Copyright 2002
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307	 USA
++ *
++ */
++
++#include <common.h>
++
++#if defined(CONFIG_S3C2410) && defined(CONFIG_USB_DEVICE)
++
++#include <asm/io.h>
++
++#include "usbdcore.h"
++#include "usbdcore_s3c2410.h"
++#include "usbdcore_ep0.h"
++
++
++#define UDC_INIT_MDELAY		     80 /* Device settle delay */
++#define UDC_MAX_ENDPOINTS	     31 /* Number of endpoints on this UDC */
++
++/* Some kind of debugging output... */
++#if 1
++#define UDCDBG(str)
++#define UDCDBGA(fmt,args...)
++#else  /* The bugs still exists... */
++#define UDCDBG(str) serial_printf("[%s] %s:%d: " str "\n", __FILE__,__FUNCTION__,__LINE__)
++#define UDCDBGA(fmt,args...) serial_printf("[%s] %s:%d: " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##args)
++#endif
++
++#if 1
++#define UDCREG(name)
++#define UDCREGL(name)
++#else  /* The bugs still exists... */
++#define UDCREG(name)	 serial_printf("%s():%d: %s[%08x]=%.4x\n",__FUNCTION__,__LINE__, (#name), name, inw(name))	/* For 16-bit regs */
++#define UDCREGL(name)	 serial_printf("%s():%d: %s[%08x]=%.8x\n",__FUNCTION__,__LINE__, (#name), name, inl(name))	/* For 32-bit regs */
++#endif
++
++
++static struct urb *ep0_urb = NULL;
++
++static struct usb_device_instance *udc_device;	/* Used in interrupt handler */
++static u16 udc_devstat = 0;	/* UDC status (DEVSTAT) */
++static u32 udc_interrupts = 0;
++
++static void udc_stall_ep (unsigned int ep_addr);
++
++
++static struct usb_endpoint_instance *s3c2410_find_ep (int ep)
++{
++	int i;
++
++	for (i = 0; i < udc_device->bus->max_endpoints; i++) {
++		if (udc_device->bus->endpoint_array[i].endpoint_address == ep)
++			return &udc_device->bus->endpoint_array[i];
++	}
++	return NULL;
++}
++
++/* ************************************************************************** */
++/* IO
++ */
++
++/*
++ * omap1510_prepare_endpoint_for_rx
++ *
++ * This function implements TRM Figure 14-11.
++ *
++ * The endpoint to prepare for transfer is specified as a physical endpoint
++ * number.  For OUT (rx) endpoints 1 through 15, the corresponding endpoint
++ * configuration register is checked to see if the endpoint is ISO or not.
++ * If the OUT endpoint is valid and is non-ISO then its FIFO is enabled.
++ * No action is taken for endpoint 0 or for IN (tx) endpoints 16 through 30.
++ */
++static void omap1510_prepare_endpoint_for_rx (int ep_addr)
++{
++	int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++	UDCDBGA ("omap1510_prepare_endpoint %x", ep_addr);
++	if (((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)) {
++		if ((inw (UDC_EP_RX (ep_num)) &
++		     (UDC_EPn_RX_Valid | UDC_EPn_RX_Iso)) ==
++		    UDC_EPn_RX_Valid) {
++			/* rx endpoint is valid, non-ISO, so enable its FIFO */
++			outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
++			outw (UDC_Set_FIFO_En, UDC_CTRL);
++			outw (0, UDC_EP_NUM);
++		}
++	}
++}
++
++/* omap1510_configure_endpoints
++ *
++ * This function implements TRM Figure 14-10.
++ */
++static void omap1510_configure_endpoints (struct usb_device_instance *device)
++{
++	int ep;
++	struct usb_bus_instance *bus;
++	struct usb_endpoint_instance *endpoint;
++	unsigned short ep_ptr;
++	unsigned short ep_size;
++	unsigned short ep_isoc;
++	unsigned short ep_doublebuffer;
++	int ep_addr;
++	int packet_size;
++	int buffer_size;
++	int attributes;
++
++	bus = device->bus;
++
++	/* There is a dedicated 2048 byte buffer for USB packets that may be
++	 * arbitrarily partitioned among the endpoints on 8-byte boundaries.
++	 * The first 8 bytes are reserved for receiving setup packets on
++	 * endpoint 0.
++	 */
++	ep_ptr = 8;		/* reserve the first 8 bytes for the setup fifo */
++
++	for (ep = 0; ep < bus->max_endpoints; ep++) {
++		endpoint = bus->endpoint_array + ep;
++		ep_addr = endpoint->endpoint_address;
++		if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++			/* IN endpoint */
++			packet_size = endpoint->tx_packetSize;
++			attributes = endpoint->tx_attributes;
++		} else {
++			/* OUT endpoint */
++			packet_size = endpoint->rcv_packetSize;
++			attributes = endpoint->rcv_attributes;
++		}
++
++		switch (packet_size) {
++		case 0:
++			ep_size = 0;
++			break;
++		case 8:
++			ep_size = 0;
++			break;
++		case 16:
++			ep_size = 1;
++			break;
++		case 32:
++			ep_size = 2;
++			break;
++		case 64:
++			ep_size = 3;
++			break;
++		case 128:
++			ep_size = 4;
++			break;
++		case 256:
++			ep_size = 5;
++			break;
++		case 512:
++			ep_size = 6;
++			break;
++		default:
++			UDCDBGA ("ep 0x%02x has bad packet size %d",
++				 ep_addr, packet_size);
++			packet_size = 0;
++			ep_size = 0;
++			break;
++		}
++
++		switch (attributes & USB_ENDPOINT_XFERTYPE_MASK) {
++		case USB_ENDPOINT_XFER_CONTROL:
++		case USB_ENDPOINT_XFER_BULK:
++		case USB_ENDPOINT_XFER_INT:
++		default:
++			/* A non-isochronous endpoint may optionally be
++			 * double-buffered. For now we disable
++			 * double-buffering.
++			 */
++			ep_doublebuffer = 0;
++			ep_isoc = 0;
++			if (packet_size > 64)
++				packet_size = 0;
++			if (!ep || !ep_doublebuffer)
++				buffer_size = packet_size;
++			else
++				buffer_size = packet_size * 2;
++			break;
++		case USB_ENDPOINT_XFER_ISOC:
++			/* Isochronous endpoints are always double-
++			 * buffered, but the double-buffering bit
++			 * in the endpoint configuration register
++			 * becomes the msb of the endpoint size so we
++			 * set the double-buffering flag to zero.
++			 */
++			ep_doublebuffer = 0;
++			ep_isoc = 1;
++			buffer_size = packet_size * 2;
++			break;
++		}
++
++		/* check to see if our packet buffer RAM is exhausted */
++		if ((ep_ptr + buffer_size) > 2048) {
++			UDCDBGA ("out of packet RAM for ep 0x%02x buf size %d", ep_addr, buffer_size);
++			buffer_size = packet_size = 0;
++		}
++
++		/* force a default configuration for endpoint 0 since it is
++		 * always enabled
++		 */
++		if (!ep && ((packet_size < 8) || (packet_size > 64))) {
++			buffer_size = packet_size = 64;
++			ep_size = 3;
++		}
++
++		if (!ep) {
++			/* configure endpoint 0 */
++			outw ((ep_size << 12) | (ep_ptr >> 3), UDC_EP0);
++			/*UDCDBGA("ep 0 buffer offset 0x%03x packet size 0x%03x", */
++			/*	ep_ptr, packet_size); */
++		} else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++			/* IN endpoint */
++			if (packet_size) {
++				outw ((1 << 15) | (ep_doublebuffer << 14) |
++				      (ep_size << 12) | (ep_isoc << 11) |
++				      (ep_ptr >> 3),
++				      UDC_EP_TX (ep_addr &
++						 USB_ENDPOINT_NUMBER_MASK));
++				UDCDBGA ("IN ep %d buffer offset 0x%03x"
++					 " packet size 0x%03x",
++					 ep_addr & USB_ENDPOINT_NUMBER_MASK,
++					 ep_ptr, packet_size);
++			} else {
++				outw (0,
++				      UDC_EP_TX (ep_addr &
++						 USB_ENDPOINT_NUMBER_MASK));
++			}
++		} else {
++			/* OUT endpoint */
++			if (packet_size) {
++				outw ((1 << 15) | (ep_doublebuffer << 14) |
++				      (ep_size << 12) | (ep_isoc << 11) |
++				      (ep_ptr >> 3),
++				      UDC_EP_RX (ep_addr &
++						 USB_ENDPOINT_NUMBER_MASK));
++				UDCDBGA ("OUT ep %d buffer offset 0x%03x"
++					 " packet size 0x%03x",
++					 ep_addr & USB_ENDPOINT_NUMBER_MASK,
++					 ep_ptr, packet_size);
++			} else {
++				outw (0,
++				      UDC_EP_RX (ep_addr &
++						 USB_ENDPOINT_NUMBER_MASK));
++			}
++		}
++		ep_ptr += buffer_size;
++	}
++}
++
++static void s3c2410_deconfigure_device (void)
++{
++	int epnum;
++
++	UDCDBG ("clear Cfg_Lock");
++	outw (inw (UDC_SYSCON1) & ~UDC_Cfg_Lock, UDC_SYSCON1);
++	UDCREG (UDC_SYSCON1);
++
++	/* deconfigure all endpoints */
++	for (epnum = 1; epnum <= 15; epnum++) {
++		outw (0, UDC_EP_RX (epnum));
++		outw (0, UDC_EP_TX (epnum));
++	}
++}
++
++static void s3c2410_configure_device (struct usb_device_instance *device)
++{
++	u_int32_t tmp;
++
++	s3c2410_configure_endpoints(device);
++
++	/* disable EP0-4 SUBD interrupts ? */
++	outw(0x00, S3C2410_UDC_USB_INT_EN_REG);
++
++	/* UPLL already configured by board-level init code */
++
++	/* configure USB pads to device mode */
++	tmp = inw(S3C2410_MISCCR);
++	tmp &= ~(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND1);
++	outw(tmp, S3C2410_MISCCR);
++
++	tmp = inb(S3C2410_CLKSLOW);
++	tmp &= ~S3C2410_CLKSLOW_USB_CLK_DISABLE;
++	outw(tmp, S3C2410_CLKSLOW);
++
++	/* clear interrupt registers */
++	inb(S3C2410_UDC_EP_INT_REG);
++	inb(S3C2410_UDC_USB_INT_REG);
++
++	/* enable USB interrupts for RESET and SUSPEND/RESUME */
++	outb(S3C2410_UDC_USBINT_RESET|S3C2410_UDC_USBINT_SUSPEND,
++	     S3C2410_UDC_USB_INT_EN_REG);
++
++}
++
++/* omap1510_write_noniso_tx_fifo
++ *
++ * This function implements TRM Figure 14-30.
++ *
++ * If the endpoint has an active tx_urb, then the next packet of data from the
++ * URB is written to the tx FIFO.  The total amount of data in the urb is given
++ * by urb->actual_length.  The maximum amount of data that can be sent in any
++ * one packet is given by endpoint->tx_packetSize.  The number of data bytes
++ * from this URB that have already been transmitted is given by endpoint->sent.
++ * endpoint->last is updated by this routine with the number of data bytes
++ * transmitted in this packet.
++ *
++ * In accordance with Figure 14-30, the EP_NUM register must already have been
++ * written with the value to select the appropriate tx FIFO before this routine
++ * is called.
++ */
++static void omap1510_write_noniso_tx_fifo (struct usb_endpoint_instance
++					   *endpoint)
++{
++	struct urb *urb = endpoint->tx_urb;
++
++	if (urb) {
++		unsigned int last, i;
++
++		UDCDBGA ("urb->buffer %p, buffer_length %d, actual_length %d",
++			 urb->buffer, urb->buffer_length, urb->actual_length);
++		if ((last =
++		     MIN (urb->actual_length - endpoint->sent,
++			  endpoint->tx_packetSize))) {
++			u8 *cp = urb->buffer + endpoint->sent;
++
++			UDCDBGA ("endpoint->sent %d, tx_packetSize %d, last %d", endpoint->sent, endpoint->tx_packetSize, last);
++
++			if (((u32) cp & 1) == 0) {	/* word aligned? */
++				outsw (UDC_DATA, cp, last >> 1);
++			} else {	/* byte aligned. */
++				for (i = 0; i < (last >> 1); i++) {
++					u16 w = ((u16) cp[2 * i + 1] << 8) |
++						(u16) cp[2 * i];
++					outw (w, UDC_DATA);
++				}
++			}
++			if (last & 1) {
++				outb (*(cp + last - 1), UDC_DATA);
++			}
++		}
++		endpoint->last = last;
++	}
++}
++
++/* omap1510_read_noniso_rx_fifo
++ *
++ * This function implements TRM Figure 14-28.
++ *
++ * If the endpoint has an active rcv_urb, then the next packet of data is read
++ * from the rcv FIFO and written to rcv_urb->buffer at offset
++ * rcv_urb->actual_length to append the packet data to the data from any
++ * previous packets for this transfer.	We assume that there is sufficient room
++ * left in the buffer to hold an entire packet of data.
++ *
++ * The return value is the number of bytes read from the FIFO for this packet.
++ *
++ * In accordance with Figure 14-28, the EP_NUM register must already have been
++ * written with the value to select the appropriate rcv FIFO before this routine
++ * is called.
++ */
++static int omap1510_read_noniso_rx_fifo (struct usb_endpoint_instance
++					 *endpoint)
++{
++	struct urb *urb = endpoint->rcv_urb;
++	int len = 0;
++
++	if (urb) {
++		len = inw (UDC_RXFSTAT);
++
++		if (len) {
++			unsigned char *cp = urb->buffer + urb->actual_length;
++
++			insw (UDC_DATA, cp, len >> 1);
++			if (len & 1)
++				*(cp + len - 1) = inb (UDC_DATA);
++		}
++	}
++	return len;
++}
++
++/* omap1510_prepare_for_control_write_status
++ *
++ * This function implements TRM Figure 14-17.
++ *
++ * We have to deal here with non-autodecoded control writes that haven't already
++ * been dealt with by ep0_recv_setup.  The non-autodecoded standard control
++ * write requests are:	set/clear endpoint feature, set configuration, set
++ * interface, and set descriptor.  ep0_recv_setup handles set/clear requests for
++ * ENDPOINT_HALT by halting the endpoint for a set request and resetting the
++ * endpoint for a clear request.  ep0_recv_setup returns an error for
++ * SET_DESCRIPTOR requests which causes them to be terminated with a stall by
++ * the setup handler.  A SET_INTERFACE request is handled by ep0_recv_setup by
++ * generating a DEVICE_SET_INTERFACE event.  This leaves only the
++ * SET_CONFIGURATION event for us to deal with here.
++ *
++ */
++static void omap1510_prepare_for_control_write_status (struct urb *urb)
++{
++	struct usb_device_request *request = &urb->device_request;;
++
++	/* check for a SET_CONFIGURATION request */
++	if (request->bRequest == USB_REQ_SET_CONFIGURATION) {
++		int configuration = le16_to_cpu (request->wValue) & 0xff;
++		unsigned short devstat = inw (UDC_DEVSTAT);
++
++		if ((devstat & (UDC_ADD | UDC_CFG)) == UDC_ADD) {
++			/* device is currently in ADDRESSED state */
++			if (configuration) {
++				/* Assume the specified non-zero configuration
++				 * value is valid and switch to the CONFIGURED
++				 * state.
++				 */
++				outw (UDC_Dev_Cfg, UDC_SYSCON2);
++			}
++		} else if ((devstat & UDC_CFG) == UDC_CFG) {
++			/* device is currently in CONFIGURED state */
++			if (!configuration) {
++				/* Switch to ADDRESSED state. */
++				outw (UDC_Clr_Cfg, UDC_SYSCON2);
++			}
++		}
++	}
++
++	/* select EP0 tx FIFO */
++	outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++	/* clear endpoint (no data bytes in status stage) */
++	outw (UDC_Clr_EP, UDC_CTRL);
++	/* enable the EP0 tx FIFO */
++	outw (UDC_Set_FIFO_En, UDC_CTRL);
++	/* deselect the endpoint */
++	outw (UDC_EP_Dir, UDC_EP_NUM);
++}
++
++/* udc_state_transition_up
++ * udc_state_transition_down
++ *
++ * Helper functions to implement device state changes.	The device states and
++ * the events that transition between them are:
++ *
++ *				STATE_ATTACHED
++ *				||	/\
++ *				\/	||
++ *	DEVICE_HUB_CONFIGURED			DEVICE_HUB_RESET
++ *				||	/\
++ *				\/	||
++ *				STATE_POWERED
++ *				||	/\
++ *				\/	||
++ *	DEVICE_RESET				DEVICE_POWER_INTERRUPTION
++ *				||	/\
++ *				\/	||
++ *				STATE_DEFAULT
++ *				||	/\
++ *				\/	||
++ *	DEVICE_ADDRESS_ASSIGNED			DEVICE_RESET
++ *				||	/\
++ *				\/	||
++ *				STATE_ADDRESSED
++ *				||	/\
++ *				\/	||
++ *	DEVICE_CONFIGURED			DEVICE_DE_CONFIGURED
++ *				||	/\
++ *				\/	||
++ *				STATE_CONFIGURED
++ *
++ * udc_state_transition_up transitions up (in the direction from STATE_ATTACHED
++ * to STATE_CONFIGURED) from the specified initial state to the specified final
++ * state, passing through each intermediate state on the way.  If the initial
++ * state is at or above (i.e. nearer to STATE_CONFIGURED) the final state, then
++ * no state transitions will take place.
++ *
++ * udc_state_transition_down transitions down (in the direction from
++ * STATE_CONFIGURED to STATE_ATTACHED) from the specified initial state to the
++ * specified final state, passing through each intermediate state on the way.
++ * If the initial state is at or below (i.e. nearer to STATE_ATTACHED) the final
++ * state, then no state transitions will take place.
++ *
++ * These functions must only be called with interrupts disabled.
++ */
++static void udc_state_transition_up (usb_device_state_t initial,
++				     usb_device_state_t final)
++{
++	if (initial < final) {
++		switch (initial) {
++		case STATE_ATTACHED:
++			usbd_device_event_irq (udc_device,
++					       DEVICE_HUB_CONFIGURED, 0);
++			if (final == STATE_POWERED)
++				break;
++		case STATE_POWERED:
++			usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
++			if (final == STATE_DEFAULT)
++				break;
++		case STATE_DEFAULT:
++			usbd_device_event_irq (udc_device,
++					       DEVICE_ADDRESS_ASSIGNED, 0);
++			if (final == STATE_ADDRESSED)
++				break;
++		case STATE_ADDRESSED:
++			usbd_device_event_irq (udc_device, DEVICE_CONFIGURED,
++					       0);
++		case STATE_CONFIGURED:
++			break;
++		default:
++			break;
++		}
++	}
++}
++
++static void udc_state_transition_down (usb_device_state_t initial,
++				       usb_device_state_t final)
++{
++	if (initial > final) {
++		switch (initial) {
++		case STATE_CONFIGURED:
++			usbd_device_event_irq (udc_device, DEVICE_DE_CONFIGURED, 0);
++			if (final == STATE_ADDRESSED)
++				break;
++		case STATE_ADDRESSED:
++			usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
++			if (final == STATE_DEFAULT)
++				break;
++		case STATE_DEFAULT:
++			usbd_device_event_irq (udc_device, DEVICE_POWER_INTERRUPTION, 0);
++			if (final == STATE_POWERED)
++				break;
++		case STATE_POWERED:
++			usbd_device_event_irq (udc_device, DEVICE_HUB_RESET, 0);
++		case STATE_ATTACHED:
++			break;
++		default:
++			break;
++		}
++	}
++}
++
++/* Handle all device state changes.
++ * This function implements TRM Figure 14-21.
++ */
++static void omap1510_udc_state_changed (void)
++{
++	u16 bits;
++	u16 devstat = inw (UDC_DEVSTAT);
++
++	UDCDBGA ("state changed, devstat %x, old %x", devstat, udc_devstat);
++
++	bits = devstat ^ udc_devstat;
++	if (bits) {
++		if (bits & UDC_ATT) {
++			if (devstat & UDC_ATT) {
++				UDCDBG ("device attached and powered");
++				udc_state_transition_up (udc_device->device_state, STATE_POWERED);
++			} else {
++				UDCDBG ("device detached or unpowered");
++				udc_state_transition_down (udc_device->device_state, STATE_ATTACHED);
++			}
++		}
++		if (bits & UDC_USB_Reset) {
++			if (devstat & UDC_USB_Reset) {
++				UDCDBG ("device reset in progess");
++				udc_state_transition_down (udc_device->device_state, STATE_POWERED);
++			} else {
++				UDCDBG ("device reset completed");
++			}
++		}
++		if (bits & UDC_DEF) {
++			if (devstat & UDC_DEF) {
++				UDCDBG ("device entering default state");
++				udc_state_transition_up (udc_device->device_state, STATE_DEFAULT);
++			} else {
++				UDCDBG ("device leaving default state");
++				udc_state_transition_down (udc_device->device_state, STATE_POWERED);
++			}
++		}
++		if (bits & UDC_SUS) {
++			if (devstat & UDC_SUS) {
++				UDCDBG ("entering suspended state");
++				usbd_device_event_irq (udc_device, DEVICE_BUS_INACTIVE, 0);
++			} else {
++				UDCDBG ("leaving suspended state");
++				usbd_device_event_irq (udc_device, DEVICE_BUS_ACTIVITY, 0);
++			}
++		}
++		if (bits & UDC_R_WK_OK) {
++			UDCDBGA ("remote wakeup %s", (devstat & UDC_R_WK_OK)
++				 ? "enabled" : "disabled");
++		}
++		if (bits & UDC_ADD) {
++			if (devstat & UDC_ADD) {
++				UDCDBG ("default -> addressed");
++				udc_state_transition_up (udc_device->device_state, STATE_ADDRESSED);
++			} else {
++				UDCDBG ("addressed -> default");
++				udc_state_transition_down (udc_device->device_state, STATE_DEFAULT);
++			}
++		}
++		if (bits & UDC_CFG) {
++			if (devstat & UDC_CFG) {
++				UDCDBG ("device configured");
++				/* The ep0_recv_setup function generates the
++				 * DEVICE_CONFIGURED event when a
++				 * USB_REQ_SET_CONFIGURATION setup packet is
++				 * received, so we should already be in the
++				 * state STATE_CONFIGURED.
++				 */
++				udc_state_transition_up (udc_device->device_state, STATE_CONFIGURED);
++			} else {
++				UDCDBG ("device deconfigured");
++				udc_state_transition_down (udc_device->device_state, STATE_ADDRESSED);
++			}
++		}
++	}
++
++	/* Clear interrupt source */
++	outw (UDC_DS_Chg, UDC_IRQ_SRC);
++
++	/* Save current DEVSTAT */
++	udc_devstat = devstat;
++}
++
++static void s3c2410_udc_ep0(void)
++{
++	u_int8_t ep0csr;
++
++	UDCDBG("-> Entering EP0 handler");
++
++	S3C2410_UDC_SETIX(EP0);
++	ep0csr = inb(S3C2410_UDC_IN_CSR1_REG);
++
++	/* clear stall status */
++	if (ep0csr & S3C2410_UDC_EP0_CSR_SENTSTL) {
++		clear_sp0_sst;
++		/* FIXME */
++		ep0_idle();
++	}
++
++	if (ep0csr & S3C2410_UDC_EP0_CSR_SE
++	    && dev->ep0state != EP0_IDLE) {
++	    	clear_ep0_se;
++		ep0_idle();
++	}
++
++	switch (dev->ep0state) {
++	case EP0_IDLE:
++		if (ep0crs & S3C2410_UDC_EP0_CSR_OPKRDY) {
++		}
++		break;
++	case EP0_IN_DATA_PHASE:
++		break;
++	case EP0_OUT_DATA_PHASE:
++		break;
++	case EP0_END_XFER:
++		break;
++	case EP0_STALL:
++		set_ep0_ss;
++		break;
++	}
++}
++
++
++}
++
++/* Handle SETUP USB interrupt.
++ * This function implements TRM Figure 14-14.
++ */
++static void omap1510_udc_setup (struct usb_endpoint_instance *endpoint)
++{
++	UDCDBG ("-> Entering device setup");
++
++	do {
++		const int setup_pktsize = 8;
++		unsigned char *datap =
++			(unsigned char *) &ep0_urb->device_request;
++
++		/* Gain access to EP 0 setup FIFO */
++		outw (UDC_Setup_Sel, UDC_EP_NUM);
++
++		/* Read control request data */
++		insb (UDC_DATA, datap, setup_pktsize);
++
++		UDCDBGA ("EP0 setup read [%x %x %x %x %x %x %x %x]",
++			 *(datap + 0), *(datap + 1), *(datap + 2),
++			 *(datap + 3), *(datap + 4), *(datap + 5),
++			 *(datap + 6), *(datap + 7));
++
++		/* Reset EP0 setup FIFO */
++		outw (0, UDC_EP_NUM);
++	} while (inw (UDC_IRQ_SRC) & UDC_Setup);
++
++	/* Try to process setup packet */
++	if (ep0_recv_setup (ep0_urb)) {
++		/* Not a setup packet, stall next EP0 transaction */
++		udc_stall_ep (0);
++		UDCDBG ("can't parse setup packet, still waiting for setup");
++		return;
++	}
++
++	/* Check direction */
++	if ((ep0_urb->device_request.bmRequestType & USB_REQ_DIRECTION_MASK)
++	    == USB_REQ_HOST2DEVICE) {
++		UDCDBG ("control write on EP0");
++		if (le16_to_cpu (ep0_urb->device_request.wLength)) {
++			/* We don't support control write data stages.
++			 * The only standard control write request with a data
++			 * stage is SET_DESCRIPTOR, and ep0_recv_setup doesn't
++			 * support that so we just stall those requests.  A
++			 * function driver might support a non-standard
++			 * write request with a data stage, but it isn't
++			 * obvious what we would do with the data if we read it
++			 * so we'll just stall it.  It seems like the API isn't
++			 * quite right here.
++			 */
++#if 0
++			/* Here is what we would do if we did support control
++			 * write data stages.
++			 */
++			ep0_urb->actual_length = 0;
++			outw (0, UDC_EP_NUM);
++			/* enable the EP0 rx FIFO */
++			outw (UDC_Set_FIFO_En, UDC_CTRL);
++#else
++			/* Stall this request */
++			UDCDBG ("Stalling unsupported EP0 control write data "
++				"stage.");
++			udc_stall_ep (0);
++#endif
++		} else {
++			omap1510_prepare_for_control_write_status (ep0_urb);
++		}
++	} else {
++		UDCDBG ("control read on EP0");
++		/* The ep0_recv_setup function has already placed our response
++		 * packet data in ep0_urb->buffer and the packet length in
++		 * ep0_urb->actual_length.
++		 */
++		endpoint->tx_urb = ep0_urb;
++		endpoint->sent = 0;
++		/* select the EP0 tx FIFO */
++		outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++		/* Write packet data to the FIFO.  omap1510_write_noniso_tx_fifo
++		 * will update endpoint->last with the number of bytes written
++		 * to the FIFO.
++		 */
++		omap1510_write_noniso_tx_fifo (endpoint);
++		/* enable the FIFO to start the packet transmission */
++		outw (UDC_Set_FIFO_En, UDC_CTRL);
++		/* deselect the EP0 tx FIFO */
++		outw (UDC_EP_Dir, UDC_EP_NUM);
++	}
++
++	UDCDBG ("<- Leaving device setup");
++}
++
++/* Handle endpoint 0 RX interrupt
++ * This routine implements TRM Figure 14-16.
++ */
++static void omap1510_udc_ep0_rx (struct usb_endpoint_instance *endpoint)
++{
++	unsigned short status;
++
++	UDCDBG ("RX on EP0");
++	/* select EP0 rx FIFO */
++	outw (UDC_EP_Sel, UDC_EP_NUM);
++
++	status = inw (UDC_STAT_FLG);
++
++	if (status & UDC_ACK) {
++		/* Check direction */
++		if ((ep0_urb->device_request.bmRequestType
++		     & USB_REQ_DIRECTION_MASK) == USB_REQ_HOST2DEVICE) {
++			/* This rx interrupt must be for a control write data
++			 * stage packet.
++			 *
++			 * We don't support control write data stages.
++			 * We should never end up here.
++			 */
++
++			/* clear the EP0 rx FIFO */
++			outw (UDC_Clr_EP, UDC_CTRL);
++
++			/* deselect the EP0 rx FIFO */
++			outw (0, UDC_EP_NUM);
++
++			UDCDBG ("Stalling unexpected EP0 control write "
++				"data stage packet");
++			udc_stall_ep (0);
++		} else {
++			/* This rx interrupt must be for a control read status
++			 * stage packet.
++			 */
++			UDCDBG ("ACK on EP0 control read status stage packet");
++			/* deselect EP0 rx FIFO */
++			outw (0, UDC_EP_NUM);
++		}
++	} else if (status & UDC_STALL) {
++		UDCDBG ("EP0 stall during RX");
++		/* deselect EP0 rx FIFO */
++		outw (0, UDC_EP_NUM);
++	} else {
++		/* deselect EP0 rx FIFO */
++		outw (0, UDC_EP_NUM);
++	}
++}
++
++/* Handle endpoint 0 TX interrupt
++ * This routine implements TRM Figure 14-18.
++ */
++static void omap1510_udc_ep0_tx (struct usb_endpoint_instance *endpoint)
++{
++	unsigned short status;
++	struct usb_device_request *request = &ep0_urb->device_request;
++
++	UDCDBG ("TX on EP0");
++	/* select EP0 TX FIFO */
++	outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++
++	status = inw (UDC_STAT_FLG);
++	if (status & UDC_ACK) {
++		/* Check direction */
++		if ((request->bmRequestType & USB_REQ_DIRECTION_MASK) ==
++		    USB_REQ_HOST2DEVICE) {
++			/* This tx interrupt must be for a control write status
++			 * stage packet.
++			 */
++			UDCDBG ("ACK on EP0 control write status stage packet");
++			/* deselect EP0 TX FIFO */
++			outw (UDC_EP_Dir, UDC_EP_NUM);
++		} else {
++			/* This tx interrupt must be for a control read data
++			 * stage packet.
++			 */
++			int wLength = le16_to_cpu (request->wLength);
++
++			/* Update our count of bytes sent so far in this
++			 * transfer.
++			 */
++			endpoint->sent += endpoint->last;
++
++			/* We are finished with this transfer if we have sent
++			 * all of the bytes in our tx urb (urb->actual_length)
++			 * unless we need a zero-length terminating packet.  We
++			 * need a zero-length terminating packet if we returned
++			 * fewer bytes than were requested (wLength) by the host,
++			 * and the number of bytes we returned is an exact
++			 * multiple of the packet size endpoint->tx_packetSize.
++			 */
++			if ((endpoint->sent == ep0_urb->actual_length)
++			    && ((ep0_urb->actual_length == wLength)
++				|| (endpoint->last !=
++				    endpoint->tx_packetSize))) {
++				/* Done with control read data stage. */
++				UDCDBG ("control read data stage complete");
++				/* deselect EP0 TX FIFO */
++				outw (UDC_EP_Dir, UDC_EP_NUM);
++				/* select EP0 RX FIFO to prepare for control
++				 * read status stage.
++				 */
++				outw (UDC_EP_Sel, UDC_EP_NUM);
++				/* clear the EP0 RX FIFO */
++				outw (UDC_Clr_EP, UDC_CTRL);
++				/* enable the EP0 RX FIFO */
++				outw (UDC_Set_FIFO_En, UDC_CTRL);
++				/* deselect the EP0 RX FIFO */
++				outw (0, UDC_EP_NUM);
++			} else {
++				/* We still have another packet of data to send
++				 * in this control read data stage or else we
++				 * need a zero-length terminating packet.
++				 */
++				UDCDBG ("ACK control read data stage packet");
++				omap1510_write_noniso_tx_fifo (endpoint);
++				/* enable the EP0 tx FIFO to start transmission */
++				outw (UDC_Set_FIFO_En, UDC_CTRL);
++				/* deselect EP0 TX FIFO */
++				outw (UDC_EP_Dir, UDC_EP_NUM);
++			}
++		}
++	} else if (status & UDC_STALL) {
++		UDCDBG ("EP0 stall during TX");
++		/* deselect EP0 TX FIFO */
++		outw (UDC_EP_Dir, UDC_EP_NUM);
++	} else {
++		/* deselect EP0 TX FIFO */
++		outw (UDC_EP_Dir, UDC_EP_NUM);
++	}
++}
++
++/* Handle RX transaction on non-ISO endpoint.
++ * This function implements TRM Figure 14-27.
++ * The ep argument is a physical endpoint number for a non-ISO OUT endpoint
++ * in the range 1 to 15.
++ */
++static void omap1510_udc_epn_rx (int ep)
++{
++	unsigned short status;
++
++	/* Check endpoint status */
++	status = inw (UDC_STAT_FLG);
++
++	if (status & UDC_ACK) {
++		int nbytes;
++		struct usb_endpoint_instance *endpoint =
++			omap1510_find_ep (ep);
++
++		nbytes = omap1510_read_noniso_rx_fifo (endpoint);
++		usbd_rcv_complete (endpoint, nbytes, 0);
++
++		/* enable rx FIFO to prepare for next packet */
++		outw (UDC_Set_FIFO_En, UDC_CTRL);
++	} else if (status & UDC_STALL) {
++		UDCDBGA ("STALL on RX endpoint %d", ep);
++	} else if (status & UDC_NAK) {
++		UDCDBGA ("NAK on RX ep %d", ep);
++	} else {
++		serial_printf ("omap-bi: RX on ep %d with status %x", ep,
++			       status);
++	}
++}
++
++/* Handle TX transaction on non-ISO endpoint.
++ * This function implements TRM Figure 14-29.
++ * The ep argument is a physical endpoint number for a non-ISO IN endpoint
++ * in the range 16 to 30.
++ */
++static void omap1510_udc_epn_tx (int ep)
++{
++	unsigned short status;
++
++	/*serial_printf("omap1510_udc_epn_tx( %x )\n",ep); */
++
++	/* Check endpoint status */
++	status = inw (UDC_STAT_FLG);
++
++	if (status & UDC_ACK) {
++		struct usb_endpoint_instance *endpoint =
++			omap1510_find_ep (ep);
++
++		/* We need to transmit a terminating zero-length packet now if
++		 * we have sent all of the data in this URB and the transfer
++		 * size was an exact multiple of the packet size.
++		 */
++		if (endpoint->tx_urb
++		    && (endpoint->last == endpoint->tx_packetSize)
++		    && (endpoint->tx_urb->actual_length - endpoint->sent -
++			endpoint->last == 0)) {
++			/* Prepare to transmit a zero-length packet. */
++			endpoint->sent += endpoint->last;
++			/* write 0 bytes of data to FIFO */
++			omap1510_write_noniso_tx_fifo (endpoint);
++			/* enable tx FIFO to start transmission */
++			outw (UDC_Set_FIFO_En, UDC_CTRL);
++		} else if (endpoint->tx_urb
++			   && endpoint->tx_urb->actual_length) {
++			/* retire the data that was just sent */
++			usbd_tx_complete (endpoint);
++			/* Check to see if we have more data ready to transmit
++			 * now.
++			 */
++			if (endpoint->tx_urb
++			    && endpoint->tx_urb->actual_length) {
++				/* write data to FIFO */
++				omap1510_write_noniso_tx_fifo (endpoint);
++				/* enable tx FIFO to start transmission */
++				outw (UDC_Set_FIFO_En, UDC_CTRL);
++			}
++		}
++	} else if (status & UDC_STALL) {
++		UDCDBGA ("STALL on TX endpoint %d", ep);
++	} else if (status & UDC_NAK) {
++		UDCDBGA ("NAK on TX endpoint %d", ep);
++	} else {
++		/*serial_printf("omap-bi: TX on ep %d with status %x\n", ep, status); */
++	}
++}
++
++
++/*
++-------------------------------------------------------------------------------
++*/
++
++/* Handle general USB interrupts and dispatch according to type.
++ * This function implements TRM Figure 14-13.
++ */
++void s3c2410_udc_irq (void)
++{
++	u_int8_t save_idx = inb(S3C2410_UDC_INDEX_REG);
++	u_int8_t usb_status = inb(S3C2410_UDC_USB_INT_REG);
++	u_int8_t usbd_status = inb(S3C2410_UDC_EP_INT_REG);
++
++	UDCDBGA("< IRQ usbs=0x%02x, usbds=0x%02x start >", usb_status,
++		usbd_status);
++
++	if (usb_status & S3C2410_UDC_USBINT_RESET) {
++		valid_irq++;
++	}
++
++	if (usb_status & S3C2410_UDC_USBINT_RESUME) {
++		valid_irq++;
++
++	}
++
++	if (usb_status & S3C2410_UDC_USBINT_SUSPEND) {
++		valid_irq++;
++
++	}
++
++	/* Endpoint Interrupts */
++	if (usbd_status) {
++		int i;
++
++		if (usbd_status & S3C2410_UDC_INT_EP0) {
++			s3c2410_udc_ep0();
++			outb(S3C2410_UDC_INT_EP0, S3C2410_UDC_EP_INT_REG);
++			valid_irq++;
++		}
++
++		for (i = 1; i < 5; i++) {
++			u_int32_t tmp = 1 << i;
++
++			if (usbd_status & tmp) {
++				/* FIXME: Handle EP X */
++				s3c2410_udc_epn(i);
++				outb(tmp, S3C2410_UDC_EP_INT_REG);
++				valid_irq++;
++			}
++		}
++	}
++	outb(save_idx, S3C2410_UDC_INDEX_REG);
++
++#if 0
++	if (!(irq_src & ~UDC_SOF_Flg))	/* ignore SOF interrupts ) */
++		return;
++
++	UDCDBGA ("< IRQ #%d start >- %x", udc_interrupts, irq_src);
++	/*serial_printf("< IRQ #%d start >- %x\n", udc_interrupts, irq_src); */
++
++	if (irq_src & UDC_DS_Chg) {
++		/* Device status changed */
++		omap1510_udc_state_changed ();
++		valid_irq++;
++	}
++	if (irq_src & UDC_EP0_RX) {
++		/* Endpoint 0 receive */
++		outw (UDC_EP0_RX, UDC_IRQ_SRC); /* ack interrupt */
++		omap1510_udc_ep0_rx (udc_device->bus->endpoint_array + 0);
++		valid_irq++;
++	}
++	if (irq_src & UDC_EP0_TX) {
++		/* Endpoint 0 transmit */
++		outw (UDC_EP0_TX, UDC_IRQ_SRC); /* ack interrupt */
++		omap1510_udc_ep0_tx (udc_device->bus->endpoint_array + 0);
++		valid_irq++;
++	}
++	if (irq_src & UDC_Setup) {
++		/* Device setup */
++		omap1510_udc_setup (udc_device->bus->endpoint_array + 0);
++		valid_irq++;
++	}
++	/*if (!valid_irq) */
++	/*	serial_printf("unknown interrupt, IRQ_SRC %.4x\n", irq_src); */
++#endif
++	UDCDBGA ("< IRQ end >", udc_interrupts);
++
++	udc_interrupts++;
++}
++
++/* This function implements TRM Figure 14-26. */
++void omap1510_udc_noniso_irq (void)
++{
++	unsigned short epnum;
++	unsigned short irq_src = inw (UDC_IRQ_SRC);
++	int valid_irq = 0;
++
++	if (!(irq_src & (UDC_EPn_RX | UDC_EPn_TX)))
++		return;
++
++	UDCDBGA ("non-ISO IRQ, IRQ_SRC %x", inw (UDC_IRQ_SRC));
++
++	if (irq_src & UDC_EPn_RX) {	/* Endpoint N OUT transaction */
++		/* Determine the endpoint number for this interrupt */
++		epnum = (inw (UDC_EPN_STAT) & 0x0f00) >> 8;
++		UDCDBGA ("RX on ep %x", epnum);
++
++		/* acknowledge interrupt */
++		outw (UDC_EPn_RX, UDC_IRQ_SRC);
++
++		if (epnum) {
++			/* select the endpoint FIFO */
++			outw (UDC_EP_Sel | epnum, UDC_EP_NUM);
++
++			omap1510_udc_epn_rx (epnum);
++
++			/* deselect the endpoint FIFO */
++			outw (epnum, UDC_EP_NUM);
++		}
++		valid_irq++;
++	}
++	if (irq_src & UDC_EPn_TX) {	/* Endpoint N IN transaction */
++		/* Determine the endpoint number for this interrupt */
++		epnum = (inw (UDC_EPN_STAT) & 0x000f) | USB_DIR_IN;
++		UDCDBGA ("TX on ep %x", epnum);
++
++		/* acknowledge interrupt */
++		outw (UDC_EPn_TX, UDC_IRQ_SRC);
++
++		if (epnum) {
++			/* select the endpoint FIFO */
++			outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
++
++			omap1510_udc_epn_tx (epnum);
++
++			/* deselect the endpoint FIFO */
++			outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
++		}
++		valid_irq++;
++	}
++	if (!valid_irq)
++		serial_printf (": unknown non-ISO interrupt, IRQ_SRC %.4x\n",
++			       irq_src);
++}
++
++/*
++-------------------------------------------------------------------------------
++*/
++
++
++/*
++ * Start of public functions.
++ */
++
++/* Called to start packet transmission. */
++void udc_endpoint_write (struct usb_endpoint_instance *endpoint)
++{
++	unsigned short epnum =
++		endpoint->endpoint_address & USB_ENDPOINT_NUMBER_MASK;
++
++	UDCDBGA ("Starting transmit on ep %x", epnum);
++
++	if (endpoint->tx_urb) {
++		/* select the endpoint FIFO */
++		outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
++		/* write data to FIFO */
++		omap1510_write_noniso_tx_fifo (endpoint);
++		/* enable tx FIFO to start transmission */
++		outw (UDC_Set_FIFO_En, UDC_CTRL);
++		/* deselect the endpoint FIFO */
++		outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
++	}
++}
++
++/* Start to initialize h/w stuff */
++int udc_init (void)
++{
++	u16 udc_rev;
++	uchar value;
++	ulong gpio;
++	int i;
++
++	/* Let the device settle down before we start */
++	for (i = 0; i < UDC_INIT_MDELAY; i++) udelay(1000);
++
++	udc_device = NULL;
++
++	UDCDBG ("starting");
++
++	/* Check peripheral reset. Must be 1 to make sure
++	   MPU TIPB peripheral reset is inactive */
++	UDCREG (ARM_RSTCT2);
++
++	/* Set and check clock control.
++	 * We might ought to be using the clock control API to do
++	 * this instead of fiddling with the clock registers directly
++	 * here.
++	 */
++	outw ((1 << 4) | (1 << 5), CLOCK_CTRL);
++	UDCREG (CLOCK_CTRL);
++	/* Set and check APLL */
++	outw (0x0008, APLL_CTRL);
++	UDCREG (APLL_CTRL);
++	/* Set and check DPLL */
++	outw (0x2210, DPLL_CTRL);
++	UDCREG (DPLL_CTRL);
++	/* Set and check SOFT */
++	outw ((1 << 4) | (1 << 3) | 1, SOFT_REQ);
++	/* Short delay to wait for DPLL */
++	udelay (1000);
++
++	/* Print banner with device revision */
++	udc_rev = inw (UDC_REV) & 0xff;
++	printf ("USB:   TI OMAP1510 USB function module rev %d.%d\n",
++		udc_rev >> 4, udc_rev & 0xf);
++
++#ifdef CONFIG_OMAP_SX1
++	i2c_read (0x32, 0x04, 1, &value, 1);
++	value |= 0x04;
++	i2c_write (0x32, 0x04, 1, &value, 1);
++
++	i2c_read (0x32, 0x03, 1, &value, 1);
++	value |= 0x01;
++	i2c_write (0x32, 0x03, 1, &value, 1);
++
++	gpio = inl(GPIO_PIN_CONTROL_REG);
++	gpio |=  0x0002; /* A_IRDA_OFF */
++	gpio |=  0x0800; /* A_SWITCH   */
++	gpio |=  0x8000; /* A_USB_ON   */
++	outl (gpio, GPIO_PIN_CONTROL_REG);
++
++	gpio = inl(GPIO_DIR_CONTROL_REG);
++	gpio &= ~0x0002; /* A_IRDA_OFF */
++	gpio &= ~0x0800; /* A_SWITCH   */
++	gpio &= ~0x8000; /* A_USB_ON   */
++	outl (gpio, GPIO_DIR_CONTROL_REG);
++
++	gpio = inl(GPIO_DATA_OUTPUT_REG);
++	gpio |=  0x0002; /* A_IRDA_OFF */
++	gpio &= ~0x0800; /* A_SWITCH   */
++	gpio &= ~0x8000; /* A_USB_ON   */
++	outl (gpio, GPIO_DATA_OUTPUT_REG);
++#endif
++
++	/* The VBUS_MODE bit selects whether VBUS detection is done via
++	 * software (1) or hardware (0).  When software detection is
++	 * selected, VBUS_CTRL selects whether USB is not connected (0)
++	 * or connected (1).
++	 */
++	outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
++	outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
++	UDCREGL (FUNC_MUX_CTRL_0);
++
++	/*
++	 * At this point, device is ready for configuration...
++	 */
++
++	UDCDBG ("disable USB interrupts");
++	outw (0, UDC_IRQ_EN);
++	UDCREG (UDC_IRQ_EN);
++
++	UDCDBG ("disable USB DMA");
++	outw (0, UDC_DMA_IRQ_EN);
++	UDCREG (UDC_DMA_IRQ_EN);
++
++	UDCDBG ("initialize SYSCON1");
++	outw (UDC_Self_Pwr | UDC_Pullup_En, UDC_SYSCON1);
++	UDCREG (UDC_SYSCON1);
++
++	return 0;
++}
++
++/* Stall endpoint */
++static void udc_stall_ep (unsigned int ep_addr)
++{
++	/*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++	int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++	UDCDBGA ("stall ep_addr %d", ep_addr);
++
++	/* REVISIT?
++	 * The OMAP TRM section 14.2.4.2 says we must check that the FIFO
++	 * is empty before halting the endpoint.  The current implementation
++	 * doesn't check that the FIFO is empty.
++	 */
++
++	if (!ep_num) {
++		outw (UDC_Stall_Cmd, UDC_SYSCON2);
++	} else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
++		if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
++			/* we have a valid rx endpoint, so halt it */
++			outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
++			outw (UDC_Set_Halt, UDC_CTRL);
++			outw (ep_num, UDC_EP_NUM);
++		}
++	} else {
++		if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
++			/* we have a valid tx endpoint, so halt it */
++			outw (UDC_EP_Sel | UDC_EP_Dir | ep_num, UDC_EP_NUM);
++			outw (UDC_Set_Halt, UDC_CTRL);
++			outw (ep_num, UDC_EP_NUM);
++		}
++	}
++}
++
++/* Reset endpoint */
++#if 0
++static void udc_reset_ep (unsigned int ep_addr)
++{
++	/*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++	int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++
++	UDCDBGA ("reset ep_addr %d", ep_addr);
++
++	if (!ep_num) {
++		/* control endpoint 0 can't be reset */
++	} else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
++		UDCDBGA ("UDC_EP_RX(%d) = 0x%04x", ep_num,
++			 inw (UDC_EP_RX (ep_num)));
++		if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
++			/* we have a valid rx endpoint, so reset it */
++			outw (ep_num | UDC_EP_Sel, UDC_EP_NUM);
++			outw (UDC_Reset_EP, UDC_CTRL);
++			outw (ep_num, UDC_EP_NUM);
++			UDCDBGA ("OUT endpoint %d reset", ep_num);
++		}
++	} else {
++		UDCDBGA ("UDC_EP_TX(%d) = 0x%04x", ep_num,
++			 inw (UDC_EP_TX (ep_num)));
++		/* Resetting of tx endpoints seems to be causing the USB function
++		 * module to fail, which causes problems when the driver is
++		 * uninstalled.	 We'll skip resetting tx endpoints for now until
++		 * we figure out what the problem is.
++		 */
++#if 0
++		if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
++			/* we have a valid tx endpoint, so reset it */
++			outw (ep_num | UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
++			outw (UDC_Reset_EP, UDC_CTRL);
++			outw (ep_num | UDC_EP_Dir, UDC_EP_NUM);
++			UDCDBGA ("IN endpoint %d reset", ep_num);
++		}
++#endif
++	}
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_check_ep - check logical endpoint
++  *
++ * Return physical endpoint number to use for this logical endpoint or zero if not valid.
++ */
++#if 0
++int udc_check_ep (int logical_endpoint, int packetsize)
++{
++	if ((logical_endpoint == 0x80) ||
++	    ((logical_endpoint & 0x8f) != logical_endpoint)) {
++		return 0;
++	}
++
++	switch (packetsize) {
++	case 8:
++	case 16:
++	case 32:
++	case 64:
++	case 128:
++	case 256:
++	case 512:
++		break;
++	default:
++		return 0;
++	}
++
++	return EP_ADDR_TO_PHYS_EP (logical_endpoint);
++}
++#endif
++
++/*
++ * udc_setup_ep - setup endpoint
++ *
++ * Associate a physical endpoint with endpoint_instance
++ */
++void udc_setup_ep (struct usb_device_instance *device,
++		   unsigned int ep, struct usb_endpoint_instance *endpoint)
++{
++	UDCDBGA ("setting up endpoint addr %x", endpoint->endpoint_address);
++
++	/* This routine gets called by bi_modinit for endpoint 0 and from
++	 * bi_config for all of the other endpoints.  bi_config gets called
++	 * during the DEVICE_CREATE, DEVICE_CONFIGURED, and
++	 * DEVICE_SET_INTERFACE events.	 We need to reconfigure the OMAP packet
++	 * RAM after bi_config scans the selected device configuration and
++	 * initializes the endpoint structures, but before this routine enables
++	 * the OUT endpoint FIFOs.  Since bi_config calls this routine in a
++	 * loop for endpoints 1 through UDC_MAX_ENDPOINTS, we reconfigure our
++	 * packet RAM here when ep==1.
++	 * I really hate to do this here, but it seems like the API exported
++	 * by the USB bus interface controller driver to the usbd-bi module
++	 * isn't quite right so there is no good place to do this.
++	 */
++	if (ep == 1) {
++		omap1510_deconfigure_device ();
++		omap1510_configure_device (device);
++	}
++
++	if (endpoint && (ep < UDC_MAX_ENDPOINTS)) {
++		int ep_addr = endpoint->endpoint_address;
++
++		if (!ep_addr) {
++			/* nothing to do for endpoint 0 */
++		} else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++			/* nothing to do for IN (tx) endpoints */
++		} else {	/* OUT (rx) endpoint */
++			if (endpoint->rcv_packetSize) {
++				/*struct urb* urb = &(urb_out_array[ep&0xFF]); */
++				/*urb->endpoint = endpoint; */
++				/*urb->device = device; */
++				/*urb->buffer_length = sizeof(urb->buffer); */
++
++				/*endpoint->rcv_urb = urb; */
++				omap1510_prepare_endpoint_for_rx (ep_addr);
++			}
++		}
++	}
++}
++
++/**
++ * udc_disable_ep - disable endpoint
++ * @ep:
++ *
++ * Disable specified endpoint
++ */
++#if 0
++void udc_disable_ep (unsigned int ep_addr)
++{
++	/*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
++	int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
++	struct usb_endpoint_instance *endpoint = omap1510_find_ep (ep_addr);	/*udc_device->bus->endpoint_array + ep; */
++
++	UDCDBGA ("disable ep_addr %d", ep_addr);
++
++	if (!ep_num) {
++		/* nothing to do for endpoint 0 */ ;
++	} else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++		if (endpoint->tx_packetSize) {
++			/* we have a valid tx endpoint */
++			/*usbd_flush_tx(endpoint); */
++			endpoint->tx_urb = NULL;
++		}
++	} else {
++		if (endpoint->rcv_packetSize) {
++			/* we have a valid rx endpoint */
++			/*usbd_flush_rcv(endpoint); */
++			endpoint->rcv_urb = NULL;
++		}
++	}
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_connected - is the USB cable connected
++ *
++ * Return non-zero if cable is connected.
++ */
++#if 0
++int udc_connected (void)
++{
++	return ((inw (UDC_DEVSTAT) & UDC_ATT) == UDC_ATT);
++}
++#endif
++
++/* Turn on the USB connection by enabling the pullup resistor */
++void udc_connect (void)
++{
++	UDCDBG ("connect, enable Pullup");
++}
++
++/* Turn off the USB connection by disabling the pullup resistor */
++void udc_disconnect (void)
++{
++	UDCDBG ("disconnect, disable Pullup");
++}
++
++/* ************************************************************************** */
++
++
++/*
++ * udc_disable_interrupts - disable interrupts
++ * switch off interrupts
++ */
++#if 0
++void udc_disable_interrupts (struct usb_device_instance *device)
++{
++	UDCDBG ("disabling all interrupts");
++	outw (0, UDC_IRQ_EN);
++}
++#endif
++
++/* ************************************************************************** */
++
++/**
++ * udc_ep0_packetsize - return ep0 packetsize
++ */
++#if 0
++int udc_ep0_packetsize (void)
++{
++	return EP0_PACKETSIZE;
++}
++#endif
++
++/* Switch on the UDC */
++void udc_enable (struct usb_device_instance *device)
++{
++	UDCDBGA ("enable device %p, status %d", device, device->status);
++
++	/* initialize driver state variables */
++	udc_devstat = 0;
++
++	/* Save the device structure pointer */
++	udc_device = device;
++
++	/* Setup ep0 urb */
++	if (!ep0_urb) {
++		ep0_urb =
++			usbd_alloc_urb (udc_device,
++					udc_device->bus->endpoint_array);
++	} else {
++		serial_printf ("udc_enable: ep0_urb already allocated %p\n",
++			       ep0_urb);
++	}
++
++#ifdef FIXME
++	/* The VBUS_MODE bit selects whether VBUS detection is done via
++	 * software (1) or hardware (0).  When software detection is
++	 * selected, VBUS_CTRL selects whether USB is not connected (0)
++	 * or connected (1).
++	 */
++	outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_CTRL | UDC_VBUS_MODE,
++	      FUNC_MUX_CTRL_0);
++	UDCREGL (FUNC_MUX_CTRL_0);
++#endif
++
++	s3c2410_configure_device(device);
++}
++
++/* Switch off the UDC */
++void udc_disable (void)
++{
++	UDCDBG ("disable UDC");
++
++	s3c2410_deconfigure_device();
++
++#ifdef FIXME
++	/* The VBUS_MODE bit selects whether VBUS detection is done via
++	 * software (1) or hardware (0).  When software detection is
++	 * selected, VBUS_CTRL selects whether USB is not connected (0)
++	 * or connected (1).
++	 */
++	outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
++	outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
++	UDCREGL (FUNC_MUX_CTRL_0);
++#endif
++
++	/* Free ep0 URB */
++	if (ep0_urb) {
++		/*usbd_dealloc_urb(ep0_urb); */
++		ep0_urb = NULL;
++	}
++
++	/* Reset device pointer.
++	 * We ought to do this here to balance the initialization of udc_device
++	 * in udc_enable, but some of our other exported functions get called
++	 * by the bus interface driver after udc_disable, so we have to hang on
++	 * to the device pointer to avoid a null pointer dereference. */
++	/* udc_device = NULL; */
++}
++
++/**
++ * udc_startup - allow udc code to do any additional startup
++ */
++void udc_startup_events (struct usb_device_instance *device)
++{
++	/* The DEVICE_INIT event puts the USB device in the state STATE_INIT. */
++	usbd_device_event_irq (device, DEVICE_INIT, 0);
++
++	/* The DEVICE_CREATE event puts the USB device in the state
++	 * STATE_ATTACHED.
++	 */
++	usbd_device_event_irq (device, DEVICE_CREATE, 0);
++
++	/* Some USB controller driver implementations signal
++	 * DEVICE_HUB_CONFIGURED and DEVICE_RESET events here.
++	 * DEVICE_HUB_CONFIGURED causes a transition to the state STATE_POWERED,
++	 * and DEVICE_RESET causes a transition to the state STATE_DEFAULT.
++	 * The OMAP USB client controller has the capability to detect when the
++	 * USB cable is connected to a powered USB bus via the ATT bit in the
++	 * DEVSTAT register, so we will defer the DEVICE_HUB_CONFIGURED and
++	 * DEVICE_RESET events until later.
++	 */
++
++	udc_enable (device);
++}
++
++#endif
+diff --git a/examples/Makefile b/examples/Makefile
+index a342d75..082e52e 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -60,7 +60,7 @@ endif
+ include $(TOPDIR)/config.mk
+ 
+ SREC	= hello_world.srec
+-BIN	= hello_world.bin hello_world
++BIN	= hello_world hello_world.bin
+ 
+ ifeq ($(CPU),mpc8xx)
+ SREC	= test_burst.srec
+@@ -122,7 +122,7 @@ clibdir := $(shell dirname `$(CC) $(CFLA
+ 
+ CPPFLAGS += -I..
+ 
+-all:	.depend $(OBJS) $(LIB) $(SREC) $(BIN)
++all:	.depend $(OBJS) $(LIB) $(BIN) $(SREC)
+ 
+ #########################################################################
+ $(LIB): .depend $(LIBOBJS)
+diff --git a/include/asm-arm/arch-s3c24x0/mmc.h b/include/asm-arm/arch-s3c24x0/mmc.h
+new file mode 100644
+index 0000000..d9178f3
+--- /dev/null
++++ b/include/asm-arm/arch-s3c24x0/mmc.h
+@@ -0,0 +1,112 @@
++/*
++ *  linux/drivers/mmc/mmc_pxa.h
++ *
++ *  Author: Vladimir Shebordaev, Igor Oblakov
++ *  Copyright:  MontaVista Software Inc.
++ *
++ *  $Id: mmc_pxa.h,v 0.3.1.6 2002/09/25 19:25:48 ted Exp ted $
++ *
++ *  This program is free software; you can redistribute it and/or modify
++ *  it under the terms of the GNU General Public License version 2 as
++ *  published by the Free Software Foundation.
++ */
++#ifndef __MMC_PXA_P_H__
++#define __MMC_PXA_P_H__
++
++#include <asm/arch/regs-sdi.h>
++
++#define MMC_DEFAULT_RCA			(1<<16)
++
++#define MMC_BLOCK_SIZE			512
++#define MMC_CMD_RESET			0
++#define MMC_CMD_SEND_OP_COND		1
++#define MMC_CMD_ALL_SEND_CID 		2
++#define MMC_CMD_SET_RCA			3
++#define MMC_CMD_SELECT_CARD		7
++#define MMC_CMD_SEND_CSD 		9
++#define MMC_CMD_SEND_CID 		10
++#define MMC_CMD_SEND_STATUS		13
++#define MMC_CMD_SET_BLOCKLEN		16
++#define MMC_CMD_READ_BLOCK		17
++#define MMC_CMD_RD_BLK_MULTI		18
++#define MMC_CMD_WRITE_BLOCK		24
++
++#define MMC_MAX_BLOCK_SIZE		512
++
++#define MMC_R1_IDLE_STATE		0x01
++#define MMC_R1_ERASE_STATE		0x02
++#define MMC_R1_ILLEGAL_CMD		0x04
++#define MMC_R1_COM_CRC_ERR		0x08
++#define MMC_R1_ERASE_SEQ_ERR		0x01
++#define MMC_R1_ADDR_ERR			0x02
++#define MMC_R1_PARAM_ERR		0x04
++
++#define MMC_R1B_WP_ERASE_SKIP		0x0002
++#define MMC_R1B_ERR			0x0004
++#define MMC_R1B_CC_ERR			0x0008
++#define MMC_R1B_CARD_ECC_ERR		0x0010
++#define MMC_R1B_WP_VIOLATION		0x0020
++#define MMC_R1B_ERASE_PARAM		0x0040
++#define MMC_R1B_OOR			0x0080
++#define MMC_R1B_IDLE_STATE		0x0100
++#define MMC_R1B_ERASE_RESET		0x0200
++#define MMC_R1B_ILLEGAL_CMD		0x0400
++#define MMC_R1B_COM_CRC_ERR		0x0800
++#define MMC_R1B_ERASE_SEQ_ERR		0x1000
++#define MMC_R1B_ADDR_ERR		0x2000
++#define MMC_R1B_PARAM_ERR		0x4000
++
++typedef struct mmc_cid
++{
++/* FIXME: BYTE_ORDER */
++   uchar year:4,
++   month:4;
++   uchar sn[3];
++   uchar fwrev:4,
++   hwrev:4;
++   uchar name[6];
++   uchar id[3];
++} mmc_cid_t;
++
++typedef struct mmc_csd
++{
++	uchar	ecc:2,
++		file_format:2,
++		tmp_write_protect:1,
++		perm_write_protect:1,
++		copy:1,
++		file_format_grp:1;
++	uint64_t content_prot_app:1,
++		rsvd3:4,
++		write_bl_partial:1,
++		write_bl_len:4,
++		r2w_factor:3,
++		default_ecc:2,
++		wp_grp_enable:1,
++		wp_grp_size:5,
++		erase_grp_mult:5,
++		erase_grp_size:5,
++		c_size_mult1:3,
++		vdd_w_curr_max:3,
++		vdd_w_curr_min:3,
++		vdd_r_curr_max:3,
++		vdd_r_curr_min:3,
++		c_size:12,
++		rsvd2:2,
++		dsr_imp:1,
++		read_blk_misalign:1,
++		write_blk_misalign:1,
++		read_bl_partial:1;
++
++	ushort	read_bl_len:4,
++		ccc:12;
++	uchar	tran_speed;
++	uchar	nsac;
++	uchar	taac;
++	uchar	rsvd1:2,
++  		spec_vers:4,
++		csd_structure:2;
++} mmc_csd_t;
++
++
++#endif /* __MMC_PXA_P_H__ */
+diff --git a/include/asm-arm/arch-s3c24x0/regs-sdi.h b/include/asm-arm/arch-s3c24x0/regs-sdi.h
+new file mode 100644
+index 0000000..9b5b9d1
+--- /dev/null
++++ b/include/asm-arm/arch-s3c24x0/regs-sdi.h
+@@ -0,0 +1,110 @@
++/* linux/include/asm/arch-s3c2410/regs-sdi.h
++ *
++ * Copyright (c) 2004 Simtec Electronics <linux at simtec.co.uk>
++ *		      http://www.simtec.co.uk/products/SWLINUX/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * S3C2410 MMC/SDIO register definitions
++ *
++ *  Changelog:
++ *    18-Aug-2004 Ben Dooks      Created initial file
++ *    29-Nov-2004 Koen Martens   Added some missing defines, fixed duplicates
++ *    29-Nov-2004 Ben Dooks	 Updated Koen's patch
++*/
++
++#ifndef __ASM_ARM_REGS_SDI
++#define __ASM_ARM_REGS_SDI "regs-sdi.h"
++
++#define S3C2440_SDICON_SDRESET        (1<<8)
++#define S3C2440_SDICON_MMCCLOCK       (1<<5)
++#define S3C2410_SDICON_BYTEORDER      (1<<4)
++#define S3C2410_SDICON_SDIOIRQ        (1<<3)
++#define S3C2410_SDICON_RWAITEN        (1<<2)
++#define S3C2410_SDICON_FIFORESET      (1<<1)
++#define S3C2410_SDICON_CLOCKTYPE      (1<<0)
++
++#define S3C2410_SDICMDCON_ABORT       (1<<12)
++#define S3C2410_SDICMDCON_WITHDATA    (1<<11)
++#define S3C2410_SDICMDCON_LONGRSP     (1<<10)
++#define S3C2410_SDICMDCON_WAITRSP     (1<<9)
++#define S3C2410_SDICMDCON_CMDSTART    (1<<8)
++#define S3C2410_SDICMDCON_SENDERHOST  (1<<6)
++#define S3C2410_SDICMDCON_INDEX       (0x3f)
++
++#define S3C2410_SDICMDSTAT_CRCFAIL    (1<<12)
++#define S3C2410_SDICMDSTAT_CMDSENT    (1<<11)
++#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1<<10)
++#define S3C2410_SDICMDSTAT_RSPFIN     (1<<9)
++#define S3C2410_SDICMDSTAT_XFERING    (1<<8)
++#define S3C2410_SDICMDSTAT_INDEX      (0xff)
++
++#define S3C2440_SDIDCON_DS_BYTE       (0<<22)
++#define S3C2440_SDIDCON_DS_HALFWORD   (1<<22)
++#define S3C2440_SDIDCON_DS_WORD       (2<<22)
++#define S3C2410_SDIDCON_IRQPERIOD     (1<<21)
++#define S3C2410_SDIDCON_TXAFTERRESP   (1<<20)
++#define S3C2410_SDIDCON_RXAFTERCMD    (1<<19)
++#define S3C2410_SDIDCON_BUSYAFTERCMD  (1<<18)
++#define S3C2410_SDIDCON_BLOCKMODE     (1<<17)
++#define S3C2410_SDIDCON_WIDEBUS       (1<<16)
++#define S3C2410_SDIDCON_DMAEN         (1<<15)
++#define S3C2410_SDIDCON_STOP          (1<<14)
++#define S3C2440_SDIDCON_DATSTART      (1<<14)
++#define S3C2410_SDIDCON_DATMODE	      (3<<12)
++#define S3C2410_SDIDCON_BLKNUM        (0x7ff)
++
++/* constants for S3C2410_SDIDCON_DATMODE */
++#define S3C2410_SDIDCON_XFER_READY    (0<<12)
++#define S3C2410_SDIDCON_XFER_CHKSTART (1<<12)
++#define S3C2410_SDIDCON_XFER_RXSTART  (2<<12)
++#define S3C2410_SDIDCON_XFER_TXSTART  (3<<12)
++
++#define S3C2410_SDIDCON_BLKNUM_MASK   (0xFFF)
++#define S3C2410_SDIDCNT_BLKNUM_SHIFT  (12)
++
++#define S3C2410_SDIDSTA_RDYWAITREQ    (1<<10)
++#define S3C2410_SDIDSTA_SDIOIRQDETECT (1<<9)
++#define S3C2410_SDIDSTA_FIFOFAIL      (1<<8)	/* reserved on 2440 */
++#define S3C2410_SDIDSTA_CRCFAIL       (1<<7)
++#define S3C2410_SDIDSTA_RXCRCFAIL     (1<<6)
++#define S3C2410_SDIDSTA_DATATIMEOUT   (1<<5)
++#define S3C2410_SDIDSTA_XFERFINISH    (1<<4)
++#define S3C2410_SDIDSTA_BUSYFINISH    (1<<3)
++#define S3C2410_SDIDSTA_SBITERR       (1<<2)	/* reserved on 2410a/2440 */
++#define S3C2410_SDIDSTA_TXDATAON      (1<<1)
++#define S3C2410_SDIDSTA_RXDATAON      (1<<0)
++
++#define S3C2440_SDIFSTA_FIFORESET      (1<<16)
++#define S3C2440_SDIFSTA_FIFOFAIL       (3<<14)  /* 3 is correct (2 bits) */
++#define S3C2410_SDIFSTA_TFDET          (1<<13)
++#define S3C2410_SDIFSTA_RFDET          (1<<12)
++#define S3C2410_SDIFSTA_TFHALF         (1<<11)
++#define S3C2410_SDIFSTA_TFEMPTY        (1<<10)
++#define S3C2410_SDIFSTA_RFLAST         (1<<9)
++#define S3C2410_SDIFSTA_RFFULL         (1<<8)
++#define S3C2410_SDIFSTA_RFHALF         (1<<7)
++#define S3C2410_SDIFSTA_COUNTMASK      (0x7f)
++
++#define S3C2410_SDIIMSK_RESPONSECRC    (1<<17)
++#define S3C2410_SDIIMSK_CMDSENT        (1<<16)
++#define S3C2410_SDIIMSK_CMDTIMEOUT     (1<<15)
++#define S3C2410_SDIIMSK_RESPONSEND     (1<<14)
++#define S3C2410_SDIIMSK_READWAIT       (1<<13)
++#define S3C2410_SDIIMSK_SDIOIRQ        (1<<12)
++#define S3C2410_SDIIMSK_FIFOFAIL       (1<<11)
++#define S3C2410_SDIIMSK_CRCSTATUS      (1<<10)
++#define S3C2410_SDIIMSK_DATACRC        (1<<9)
++#define S3C2410_SDIIMSK_DATATIMEOUT    (1<<8)
++#define S3C2410_SDIIMSK_DATAFINISH     (1<<7)
++#define S3C2410_SDIIMSK_BUSYFINISH     (1<<6)
++#define S3C2410_SDIIMSK_SBITERR        (1<<5)	/* reserved 2440/2410a */
++#define S3C2410_SDIIMSK_TXFIFOHALF     (1<<4)
++#define S3C2410_SDIIMSK_TXFIFOEMPTY    (1<<3)
++#define S3C2410_SDIIMSK_RXFIFOLAST     (1<<2)
++#define S3C2410_SDIIMSK_RXFIFOFULL     (1<<1)
++#define S3C2410_SDIIMSK_RXFIFOHALF     (1<<0)
++
++#endif /* __ASM_ARM_REGS_SDI */
+diff --git a/include/asm-arm/mach-types.h b/include/asm-arm/mach-types.h
+index 7d7888e..4e9c6d9 100644
+--- a/include/asm-arm/mach-types.h
++++ b/include/asm-arm/mach-types.h
+@@ -424,7 +424,7 @@ #define MACH_TYPE_MT02                 4
+ #define MACH_TYPE_MPORT3S              411
+ #define MACH_TYPE_RA_ALPHA             412
+ #define MACH_TYPE_XCEP                 413
+-#define MACH_TYPE_ARCOM_MERCURY        414
++#define MACH_TYPE_ARCOM_VULCAN         414
+ #define MACH_TYPE_STARGATE             415
+ #define MACH_TYPE_ARMADILLOJ           416
+ #define MACH_TYPE_ELROY_JACK           417
+@@ -457,7 +457,7 @@ #define MACH_TYPE_ESL_SARVA            4
+ #define MACH_TYPE_XM250                444
+ #define MACH_TYPE_T6TC1XB              445
+ #define MACH_TYPE_ESS710               446
+-#define MACH_TYPE_MX3ADS               447
++#define MACH_TYPE_MX31ADS              447
+ #define MACH_TYPE_HIMALAYA             448
+ #define MACH_TYPE_BOLFENK              449
+ #define MACH_TYPE_AT91RM9200KR         450
+@@ -736,7 +736,308 @@ #define MACH_TYPE_ADSPORTAL            7
+ #define MACH_TYPE_LN2410SBC            725
+ #define MACH_TYPE_CB3RUFC              726
+ #define MACH_TYPE_MP2USB               727
+-#define MACH_TYPE_PDNB3               1002
++#define MACH_TYPE_NTNP425C             728
++#define MACH_TYPE_COLIBRI              729
++#define MACH_TYPE_PCM7220              730
++#define MACH_TYPE_GATEWAY7001          731
++#define MACH_TYPE_PCM027               732
++#define MACH_TYPE_CMPXA                733
++#define MACH_TYPE_ANUBIS               734
++#define MACH_TYPE_ITE8152              735
++#define MACH_TYPE_LPC3XXX              736
++#define MACH_TYPE_PUPPETEER            737
++#define MACH_TYPE_MACH_VADATECH        738
++#define MACH_TYPE_E570                 739
++#define MACH_TYPE_X50                  740
++#define MACH_TYPE_RECON                741
++#define MACH_TYPE_XBOARDGP8            742
++#define MACH_TYPE_FPIC2                743
++#define MACH_TYPE_AKITA                744
++#define MACH_TYPE_A81                  745
++#define MACH_TYPE_SVM_SC25X            746
++#define MACH_TYPE_VADATECH020          747
++#define MACH_TYPE_TLI                  748
++#define MACH_TYPE_EDB9315LC            749
++#define MACH_TYPE_PASSEC               750
++#define MACH_TYPE_DS_TIGER             751
++#define MACH_TYPE_E310                 752
++#define MACH_TYPE_E330                 753
++#define MACH_TYPE_RT3000               754
++#define MACH_TYPE_NOKIA770             755
++#define MACH_TYPE_PNX0106              756
++#define MACH_TYPE_HX21XX               757
++#define MACH_TYPE_FARADAY              758
++#define MACH_TYPE_SBC9312              759
++#define MACH_TYPE_BATMAN               760
++#define MACH_TYPE_JPD201               761
++#define MACH_TYPE_MIPSA                762
++#define MACH_TYPE_KACOM                763
++#define MACH_TYPE_SWARCOCPU            764
++#define MACH_TYPE_SWARCODSL            765
++#define MACH_TYPE_BLUEANGEL            766
++#define MACH_TYPE_HAIRYGRAMA           767
++#define MACH_TYPE_BANFF                768
++#define MACH_TYPE_CARMEVA              769
++#define MACH_TYPE_SAM255               770
++#define MACH_TYPE_PPM10                771
++#define MACH_TYPE_EDB9315A             772
++#define MACH_TYPE_SUNSET               773
++#define MACH_TYPE_STARGATE2            774
++#define MACH_TYPE_INTELMOTE2           775
++#define MACH_TYPE_TRIZEPS4             776
++#define MACH_TYPE_MAINSTONE2           777
++#define MACH_TYPE_EZ_IXP42X            778
++#define MACH_TYPE_TAPWAVE_ZODIAC       779
++#define MACH_TYPE_UNIVERSALMETER       780
++#define MACH_TYPE_HICOARM9             781
++#define MACH_TYPE_PNX4008              782
++#define MACH_TYPE_KWS6000              783
++#define MACH_TYPE_PORTUX920T           784
++#define MACH_TYPE_EZ_X5                785
++#define MACH_TYPE_OMAP_RUDOLPH         786
++#define MACH_TYPE_CPUAT91              787
++#define MACH_TYPE_REA9200              788
++#define MACH_TYPE_ACTS_PUNE_SA1110     789
++#define MACH_TYPE_IXP425               790
++#define MACH_TYPE_ARGONPLUSODYSSEY     791
++#define MACH_TYPE_PERCH                792
++#define MACH_TYPE_EIS05R1              793
++#define MACH_TYPE_PEPPERPAD            794
++#define MACH_TYPE_SB3010               795
++#define MACH_TYPE_RM9200               796
++#define MACH_TYPE_DMA03                797
++#define MACH_TYPE_ROAD_S101            798
++#define MACH_TYPE_IQ_NEXTGEN_A         799
++#define MACH_TYPE_IQ_NEXTGEN_B         800
++#define MACH_TYPE_IQ_NEXTGEN_C         801
++#define MACH_TYPE_IQ_NEXTGEN_D         802
++#define MACH_TYPE_IQ_NEXTGEN_E         803
++#define MACH_TYPE_MALLOW_AT91          804
++#define MACH_TYPE_CYBERTRACKER_I       805
++#define MACH_TYPE_GESBC931X            806
++#define MACH_TYPE_CENTIPAD             807
++#define MACH_TYPE_ARMSOC               808
++#define MACH_TYPE_SE4200               809
++#define MACH_TYPE_EMS197A              810
++#define MACH_TYPE_MICRO9               811
++#define MACH_TYPE_MICRO9L              812
++#define MACH_TYPE_UC5471DSP            813
++#define MACH_TYPE_SJ5471ENG            814
++#define MACH_TYPE_CMPXA26X             815
++#define MACH_TYPE_NC                   816
++#define MACH_TYPE_OMAP_PALMTE          817
++#define MACH_TYPE_AJAX52X              818
++#define MACH_TYPE_SIRIUSTAR            819
++#define MACH_TYPE_IODATA_HDLG          820
++#define MACH_TYPE_AT91RM9200UTL        821
++#define MACH_TYPE_BIOSAFE              822
++#define MACH_TYPE_MP1000               823
++#define MACH_TYPE_PARSY                824
++#define MACH_TYPE_CCXP                 825
++#define MACH_TYPE_OMAP_GSAMPLE         826
++#define MACH_TYPE_REALVIEW_EB          827
++#define MACH_TYPE_SAMOA                828
++#define MACH_TYPE_T3XSCALE             829
++#define MACH_TYPE_I878                 830
++#define MACH_TYPE_BORZOI               831
++#define MACH_TYPE_GECKO                832
++#define MACH_TYPE_DS101                833
++#define MACH_TYPE_OMAP_PALMTT2         834
++#define MACH_TYPE_XSCALE_PALMLD        835
++#define MACH_TYPE_CC9C                 836
++#define MACH_TYPE_SBC1670              837
++#define MACH_TYPE_IXDP28X5             838
++#define MACH_TYPE_OMAP_PALMTT          839
++#define MACH_TYPE_ML696K               840
++#define MACH_TYPE_ARCOM_ZEUS           841
++#define MACH_TYPE_OSIRIS               842
++#define MACH_TYPE_MAESTRO              843
++#define MACH_TYPE_TUNGE2               844
++#define MACH_TYPE_IXBBM                845
++#define MACH_TYPE_MX27                 846
++#define MACH_TYPE_AX8004               847
++#define MACH_TYPE_AT91SAM9261EK        848
++#define MACH_TYPE_LOFT                 849
++#define MACH_TYPE_MAGPIE               850
++#define MACH_TYPE_MX21                 851
++#define MACH_TYPE_MB87M3400            852
++#define MACH_TYPE_MGUARD_DELTA         853
++#define MACH_TYPE_DAVINCI_DVDP         854
++#define MACH_TYPE_HTCUNIVERSAL         855
++#define MACH_TYPE_TPAD                 856
++#define MACH_TYPE_ROVERP3              857
++#define MACH_TYPE_JORNADA928           858
++#define MACH_TYPE_MV88FXX81            859
++#define MACH_TYPE_STMP36XX             860
++#define MACH_TYPE_SXNI79524            861
++#define MACH_TYPE_AMS_DELTA            862
++#define MACH_TYPE_URANIUM              863
++#define MACH_TYPE_UCON                 864
++#define MACH_TYPE_NAS100D              865
++#define MACH_TYPE_L083_1000            866
++#define MACH_TYPE_EZX                  867
++#define MACH_TYPE_PNX5220              868
++#define MACH_TYPE_BUTTE                869
++#define MACH_TYPE_SRM2                 870
++#define MACH_TYPE_DSBR                 871
++#define MACH_TYPE_CRYSTALBALL          872
++#define MACH_TYPE_TINYPXA27X           873
++#define MACH_TYPE_HERBIE               874
++#define MACH_TYPE_MAGICIAN             875
++#define MACH_TYPE_CM4002               876
++#define MACH_TYPE_B4                   877
++#define MACH_TYPE_MAUI                 878
++#define MACH_TYPE_CYBERTRACKER_G       879
++#define MACH_TYPE_NXDKN                880
++#define MACH_TYPE_MIO8390              881
++#define MACH_TYPE_OMI_BOARD            882
++#define MACH_TYPE_MX21CIV              883
++#define MACH_TYPE_MAHI_CDAC            884
++#define MACH_TYPE_XSCALE_PALMTX        885
++#define MACH_TYPE_S3C2413              887
++#define MACH_TYPE_SAMSYS_EP0           888
++#define MACH_TYPE_WG302V1              889
++#define MACH_TYPE_WG302V2              890
++#define MACH_TYPE_EB42X                891
++#define MACH_TYPE_IQ331ES              892
++#define MACH_TYPE_COSYDSP              893
++#define MACH_TYPE_UPLAT7D              894
++#define MACH_TYPE_PTDAVINCI            895
++#define MACH_TYPE_MBUS                 896
++#define MACH_TYPE_NADIA2VB             897
++#define MACH_TYPE_R1000                898
++#define MACH_TYPE_HW90250              899
++#define MACH_TYPE_OMAP_2430SDP         900
++#define MACH_TYPE_DAVINCI_EVM          901
++#define MACH_TYPE_OMAP_TORNADO         902
++#define MACH_TYPE_OLOCREEK             903
++#define MACH_TYPE_PALMZ72              904
++#define MACH_TYPE_NXDB500              905
++#define MACH_TYPE_APF9328              906
++#define MACH_TYPE_OMAP_WIPOQ           907
++#define MACH_TYPE_OMAP_TWIP            908
++#define MACH_TYPE_XSCALE_PALMTREO650   909
++#define MACH_TYPE_ACUMEN               910
++#define MACH_TYPE_XP100                911
++#define MACH_TYPE_FS2410               912
++#define MACH_TYPE_PXA270_CERF          913
++#define MACH_TYPE_SQ2FTLPALM           914
++#define MACH_TYPE_BSEMSERVER           915
++#define MACH_TYPE_NETCLIENT            916
++#define MACH_TYPE_XSCALE_PALMTT5       917
++#define MACH_TYPE_OMAP_PALMTC          918
++#define MACH_TYPE_OMAP_APOLLON         919
++#define MACH_TYPE_ARGONLVEVB           920
++#define MACH_TYPE_REA_2D               921
++#define MACH_TYPE_TI3E524              922
++#define MACH_TYPE_ATEB9200             923
++#define MACH_TYPE_AUCKLAND             924
++#define MACH_TYPE_AK3320M              925
++#define MACH_TYPE_DURAMAX              926
++#define MACH_TYPE_N35                  927
++#define MACH_TYPE_PRONGHORN            928
++#define MACH_TYPE_FUNDY                929
++#define MACH_TYPE_LOGICPD_PXA270       930
++#define MACH_TYPE_CPU777               931
++#define MACH_TYPE_SIMICON9201          932
++#define MACH_TYPE_LEAP2_HPM            933
++#define MACH_TYPE_CM922TXA10           934
++#define MACH_TYPE_PXA                  935
++#define MACH_TYPE_SANDGATE2            936
++#define MACH_TYPE_SANDGATE2G           937
++#define MACH_TYPE_SANDGATE2P           938
++#define MACH_TYPE_FRED_JACK            939
++#define MACH_TYPE_TTG_COLOR1           940
++#define MACH_TYPE_NXEB500HMI           941
++#define MACH_TYPE_NETDCU8              942
++#define MACH_TYPE_ML675050_CPU_BOA     943
++#define MACH_TYPE_NG_FVX538            944
++#define MACH_TYPE_NG_FVS338            945
++#define MACH_TYPE_PNX4103              946
++#define MACH_TYPE_HESDB                947
++#define MACH_TYPE_XSILO                948
++#define MACH_TYPE_ESPRESSO             949
++#define MACH_TYPE_EMLC                 950
++#define MACH_TYPE_SISTERON             951
++#define MACH_TYPE_RX1950               952
++#define MACH_TYPE_TSC_VENUS            953
++#define MACH_TYPE_DS101J               954
++#define MACH_TYPE_MXC30030ADS          955
++#define MACH_TYPE_FUJITSU_WIMAXSOC     956
++#define MACH_TYPE_DUALPCMODEM          957
++#define MACH_TYPE_GESBC9312            958
++#define MACH_TYPE_HTCAPACHE            959
++#define MACH_TYPE_IXDP435              960
++#define MACH_TYPE_CATPROVT100          961
++#define MACH_TYPE_PICOTUX1XX           962
++#define MACH_TYPE_PICOTUX2XX           963
++#define MACH_TYPE_DSMG600              964
++#define MACH_TYPE_EMPC2                965
++#define MACH_TYPE_VENTURA              966
++#define MACH_TYPE_PHIDGET_SBC          967
++#define MACH_TYPE_IJ3K                 968
++#define MACH_TYPE_PISGAH               969
++#define MACH_TYPE_OMAP_FSAMPLE         970
++#define MACH_TYPE_SG720                971
++#define MACH_TYPE_REDFOX               972
++#define MACH_TYPE_MYSH_EP9315_1        973
++#define MACH_TYPE_TPF106               974
++#define MACH_TYPE_AT91RM9200KG         975
++#define MACH_TYPE_SLEDB                976
++#define MACH_TYPE_ONTRACK              977
++#define MACH_TYPE_PM1200               978
++#define MACH_TYPE_ESS24XXX             979
++#define MACH_TYPE_COREMP7              980
++#define MACH_TYPE_NEXCODER_6446        981
++#define MACH_TYPE_STVC8380             982
++#define MACH_TYPE_TEKLYNX              983
++#define MACH_TYPE_CARBONADO            984
++#define MACH_TYPE_SYSMOS_MP730         985
++#define MACH_TYPE_SNAPPER_CL15         986
++#define MACH_TYPE_PGIGIM               987
++#define MACH_TYPE_PTX9160P2            988
++#define MACH_TYPE_DCORE1               989
++#define MACH_TYPE_VICTORPXA            990
++#define MACH_TYPE_MX2DTB               991
++#define MACH_TYPE_PXA_IREX_ER0100      992
++#define MACH_TYPE_OMAP_PALMZ71         993
++#define MACH_TYPE_BARTEC_DEG           994
++#define MACH_TYPE_HW50251              995
++#define MACH_TYPE_IBOX                 996
++#define MACH_TYPE_ATLASLH7A404         997
++#define MACH_TYPE_PT2026               998
++#define MACH_TYPE_HTCALPINE            999
++#define MACH_TYPE_BARTEC_VTU           1000
++#define MACH_TYPE_VCOREII              1001
++#define MACH_TYPE_PDNB3                1002
++#define MACH_TYPE_HTCBEETLES           1003
++#define MACH_TYPE_S3C6400              1004
++#define MACH_TYPE_S3C2443              1005
++#define MACH_TYPE_OMAP_LDK             1006
++#define MACH_TYPE_SMDK2460             1007
++#define MACH_TYPE_SMDK2440             1008
++#define MACH_TYPE_SMDK2412             1009
++#define MACH_TYPE_WEBBOX               1010
++#define MACH_TYPE_CWWNDP               1011
++#define MACH_TYPE_DRAGON               1012
++#define MACH_TYPE_OPENDO_CPU_BOARD     1013
++#define MACH_TYPE_CCM2200              1014
++#define MACH_TYPE_ETWARM               1015
++#define MACH_TYPE_M93030               1016
++#define MACH_TYPE_CC7U                 1017
++#define MACH_TYPE_MTT_RANGER           1018
++#define MACH_TYPE_NEXUS                1019
++#define MACH_TYPE_DESMAN               1020
++#define MACH_TYPE_BKDE303              1021
++#define MACH_TYPE_SMDK2413             1022
++#define MACH_TYPE_AML_M7200            1023
++#define MACH_TYPE_AML_M5900            1024
++#define MACH_TYPE_SG640                1025
++#define MACH_TYPE_EDG79524             1026
++#define MACH_TYPE_AI2410               1027
++#define MACH_TYPE_IXP465               1028
++#define MACH_TYPE_BALLOON3             1029
++#define MACH_TYPE_QT2410               1108
+ 
+ #ifdef CONFIG_ARCH_EBSA110
+ # ifdef machine_arch_type
+@@ -3541,9 +3842,9 @@ #  define machine_arch_type	__machine_ar
+ # else
+ #  define machine_arch_type	MACH_TYPE_RAMSES
+ # endif
+-# define machine_is_ramses()	(machine_arch_type == MACH_TYPE_RAMSES)
++# define machine_is_mnci()	(machine_arch_type == MACH_TYPE_RAMSES)
+ #else
+-# define machine_is_ramses()	(0)
++# define machine_is_mnci()	(0)
+ #endif
+ 
+ #ifdef CONFIG_ARCH_S28X
+@@ -4501,9 +4802,9 @@ #  define machine_arch_type	__machine_ar
+ # else
+ #  define machine_arch_type	MACH_TYPE_M825XX
+ # endif
+-# define machine_is_m825xx()	(machine_arch_type == MACH_TYPE_M825XX)
++# define machine_is_comcerto()	(machine_arch_type == MACH_TYPE_M825XX)
+ #else
+-# define machine_is_m825xx()	(0)
++# define machine_is_comcerto()	(0)
+ #endif
+ 
+ #ifdef CONFIG_SA1100_M7100
+@@ -5658,16 +5959,16 @@ #else
+ # define machine_is_xcep()	(0)
+ #endif
+ 
+-#ifdef CONFIG_MACH_ARCOM_MERCURY
++#ifdef CONFIG_MACH_ARCOM_VULCAN
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type	__machine_arch_type
+ # else
+-#  define machine_arch_type	MACH_TYPE_ARCOM_MERCURY
++#  define machine_arch_type	MACH_TYPE_ARCOM_VULCAN
+ # endif
+-# define machine_is_arcom_mercury()	(machine_arch_type == MACH_TYPE_ARCOM_MERCURY)
++# define machine_is_arcom_vulcan()	(machine_arch_type == MACH_TYPE_ARCOM_VULCAN)
+ #else
+-# define machine_is_arcom_mercury()	(0)
++# define machine_is_arcom_vulcan()	(0)
+ #endif
+ 
+ #ifdef CONFIG_MACH_STARGATE
+@@ -6054,16 +6355,16 @@ #else
+ # define machine_is_ess710()	(0)
+ #endif
+ 
+-#ifdef CONFIG_MACH_MX3ADS
++#ifdef CONFIG_MACH_MX31ADS
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type	__machine_arch_type
+ # else
+-#  define machine_arch_type	MACH_TYPE_MX3ADS
++#  define machine_arch_type	MACH_TYPE_MX31ADS
+ # endif
+-# define machine_is_mx3ads()	(machine_arch_type == MACH_TYPE_MX3ADS)
++# define machine_is_mx31ads()	(machine_arch_type == MACH_TYPE_MX31ADS)
+ #else
+-# define machine_is_mx3ads()	(0)
++# define machine_is_mx31ads()	(0)
+ #endif
+ 
+ #ifdef CONFIG_MACH_HIMALAYA
+@@ -7333,9 +7634,9 @@ #  define machine_arch_type	__machine_ar
+ # else
+ #  define machine_arch_type	MACH_TYPE_ARGONPLUSEVB
+ # endif
+-# define machine_is_argonplusevb()	(machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
++# define machine_is_i30030evb()	(machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
+ #else
+-# define machine_is_argonplusevb()	(0)
++# define machine_is_i30030evb()	(0)
+ #endif
+ 
+ #ifdef CONFIG_MACH_SCMA11EVB
+@@ -7345,9 +7646,9 @@ #  define machine_arch_type	__machine_ar
+ # else
+ #  define machine_arch_type	MACH_TYPE_SCMA11EVB
+ # endif
+-# define machine_is_scma11evb()	(machine_arch_type == MACH_TYPE_SCMA11EVB)
++# define machine_is_mxc27530evb()	(machine_arch_type == MACH_TYPE_SCMA11EVB)
+ #else
+-# define machine_is_scma11evb()	(0)
++# define machine_is_mxc27530evb()	(0)
+ #endif
+ 
+ #ifdef CONFIG_MACH_SMDK2800
+@@ -8305,9 +8606,9 @@ #  define machine_arch_type	__machine_ar
+ # else
+ #  define machine_arch_type	MACH_TYPE_SCMA11BB
+ # endif
+-# define machine_is_scma11bb()	(machine_arch_type == MACH_TYPE_SCMA11BB)
++# define machine_is_mxc27530ads()	(machine_arch_type == MACH_TYPE_SCMA11BB)
+ #else
+-# define machine_is_scma11bb()	(0)
++# define machine_is_mxc27530ads()	(0)
+ #endif
+ 
+ #ifdef CONFIG_MACH_TRIZEPS3
+@@ -9193,9 +9494,9 @@ #  define machine_arch_type	__machine_ar
+ # else
+ #  define machine_arch_type	MACH_TYPE_ZEUSEVB
+ # endif
+-# define machine_is_zeusevb()	(machine_arch_type == MACH_TYPE_ZEUSEVB)
++# define machine_is_mxc91131evb()	(machine_arch_type == MACH_TYPE_ZEUSEVB)
+ #else
+-# define machine_is_zeusevb()	(0)
++# define machine_is_mxc91131evb()	(0)
+ #endif
+ 
+ #ifdef CONFIG_MACH_P700
+@@ -9402,6 +9703,3630 @@ #else
+ # define machine_is_mp2usb()	(0)
+ #endif
+ 
++#ifdef CONFIG_MACH_NTNP425C
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NTNP425C
++# endif
++# define machine_is_ntnp425c()	(machine_arch_type == MACH_TYPE_NTNP425C)
++#else
++# define machine_is_ntnp425c()	(0)
++#endif
++
++#ifdef CONFIG_MACH_COLIBRI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_COLIBRI
++# endif
++# define machine_is_colibri()	(machine_arch_type == MACH_TYPE_COLIBRI)
++#else
++# define machine_is_colibri()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PCM7220
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PCM7220
++# endif
++# define machine_is_pcm7220()	(machine_arch_type == MACH_TYPE_PCM7220)
++#else
++# define machine_is_pcm7220()	(0)
++#endif
++
++#ifdef CONFIG_MACH_GATEWAY7001
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_GATEWAY7001
++# endif
++# define machine_is_gateway7001()	(machine_arch_type == MACH_TYPE_GATEWAY7001)
++#else
++# define machine_is_gateway7001()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PCM027
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PCM027
++# endif
++# define machine_is_pcm027()	(machine_arch_type == MACH_TYPE_PCM027)
++#else
++# define machine_is_pcm027()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CMPXA
++# endif
++# define machine_is_cmpxa()	(machine_arch_type == MACH_TYPE_CMPXA)
++#else
++# define machine_is_cmpxa()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ANUBIS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ANUBIS
++# endif
++# define machine_is_anubis()	(machine_arch_type == MACH_TYPE_ANUBIS)
++#else
++# define machine_is_anubis()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ITE8152
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ITE8152
++# endif
++# define machine_is_ite8152()	(machine_arch_type == MACH_TYPE_ITE8152)
++#else
++# define machine_is_ite8152()	(0)
++#endif
++
++#ifdef CONFIG_MACH_LPC3XXX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_LPC3XXX
++# endif
++# define machine_is_lpc3xxx()	(machine_arch_type == MACH_TYPE_LPC3XXX)
++#else
++# define machine_is_lpc3xxx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PUPPETEER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PUPPETEER
++# endif
++# define machine_is_puppeteer()	(machine_arch_type == MACH_TYPE_PUPPETEER)
++#else
++# define machine_is_puppeteer()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MACH_VADATECH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MACH_VADATECH
++# endif
++# define machine_is_vt001()	(machine_arch_type == MACH_TYPE_MACH_VADATECH)
++#else
++# define machine_is_vt001()	(0)
++#endif
++
++#ifdef CONFIG_MACH_E570
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_E570
++# endif
++# define machine_is_e570()	(machine_arch_type == MACH_TYPE_E570)
++#else
++# define machine_is_e570()	(0)
++#endif
++
++#ifdef CONFIG_MACH_X50
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_X50
++# endif
++# define machine_is_x50()	(machine_arch_type == MACH_TYPE_X50)
++#else
++# define machine_is_x50()	(0)
++#endif
++
++#ifdef CONFIG_MACH_RECON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_RECON
++# endif
++# define machine_is_recon()	(machine_arch_type == MACH_TYPE_RECON)
++#else
++# define machine_is_recon()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XBOARDGP8
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XBOARDGP8
++# endif
++# define machine_is_xboardgp8()	(machine_arch_type == MACH_TYPE_XBOARDGP8)
++#else
++# define machine_is_xboardgp8()	(0)
++#endif
++
++#ifdef CONFIG_MACH_FPIC2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_FPIC2
++# endif
++# define machine_is_fpic2()	(machine_arch_type == MACH_TYPE_FPIC2)
++#else
++# define machine_is_fpic2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AKITA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AKITA
++# endif
++# define machine_is_akita()	(machine_arch_type == MACH_TYPE_AKITA)
++#else
++# define machine_is_akita()	(0)
++#endif
++
++#ifdef CONFIG_MACH_A81
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_A81
++# endif
++# define machine_is_a81()	(machine_arch_type == MACH_TYPE_A81)
++#else
++# define machine_is_a81()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SVM_SC25X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SVM_SC25X
++# endif
++# define machine_is_svm_sc25x()	(machine_arch_type == MACH_TYPE_SVM_SC25X)
++#else
++# define machine_is_svm_sc25x()	(0)
++#endif
++
++#ifdef CONFIG_MACH_VADATECH020
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_VADATECH020
++# endif
++# define machine_is_vt020()	(machine_arch_type == MACH_TYPE_VADATECH020)
++#else
++# define machine_is_vt020()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TLI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TLI
++# endif
++# define machine_is_tli()	(machine_arch_type == MACH_TYPE_TLI)
++#else
++# define machine_is_tli()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315LC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EDB9315LC
++# endif
++# define machine_is_edb9315lc()	(machine_arch_type == MACH_TYPE_EDB9315LC)
++#else
++# define machine_is_edb9315lc()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PASSEC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PASSEC
++# endif
++# define machine_is_passec()	(machine_arch_type == MACH_TYPE_PASSEC)
++#else
++# define machine_is_passec()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DS_TIGER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DS_TIGER
++# endif
++# define machine_is_ds_tiger()	(machine_arch_type == MACH_TYPE_DS_TIGER)
++#else
++# define machine_is_ds_tiger()	(0)
++#endif
++
++#ifdef CONFIG_MACH_E310
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_E310
++# endif
++# define machine_is_e310()	(machine_arch_type == MACH_TYPE_E310)
++#else
++# define machine_is_e310()	(0)
++#endif
++
++#ifdef CONFIG_MACH_E330
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_E330
++# endif
++# define machine_is_e330()	(machine_arch_type == MACH_TYPE_E330)
++#else
++# define machine_is_e330()	(0)
++#endif
++
++#ifdef CONFIG_MACH_RT3000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_RT3000
++# endif
++# define machine_is_rt3000()	(machine_arch_type == MACH_TYPE_RT3000)
++#else
++# define machine_is_rt3000()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NOKIA770
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NOKIA770
++# endif
++# define machine_is_nokia770()	(machine_arch_type == MACH_TYPE_NOKIA770)
++#else
++# define machine_is_nokia770()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PNX0106
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PNX0106
++# endif
++# define machine_is_pnx0106()	(machine_arch_type == MACH_TYPE_PNX0106)
++#else
++# define machine_is_pnx0106()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HX21XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HX21XX
++# endif
++# define machine_is_hx21xx()	(machine_arch_type == MACH_TYPE_HX21XX)
++#else
++# define machine_is_hx21xx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_FARADAY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_FARADAY
++# endif
++# define machine_is_faraday()	(machine_arch_type == MACH_TYPE_FARADAY)
++#else
++# define machine_is_faraday()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SBC9312
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SBC9312
++# endif
++# define machine_is_sbc9312()	(machine_arch_type == MACH_TYPE_SBC9312)
++#else
++# define machine_is_sbc9312()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BATMAN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BATMAN
++# endif
++# define machine_is_batman()	(machine_arch_type == MACH_TYPE_BATMAN)
++#else
++# define machine_is_batman()	(0)
++#endif
++
++#ifdef CONFIG_MACH_JPD201
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_JPD201
++# endif
++# define machine_is_jpd201()	(machine_arch_type == MACH_TYPE_JPD201)
++#else
++# define machine_is_jpd201()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MIPSA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MIPSA
++# endif
++# define machine_is_mipsa()	(machine_arch_type == MACH_TYPE_MIPSA)
++#else
++# define machine_is_mipsa()	(0)
++#endif
++
++#ifdef CONFIG_MACH_KACOM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_KACOM
++# endif
++# define machine_is_kacom()	(machine_arch_type == MACH_TYPE_KACOM)
++#else
++# define machine_is_kacom()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCOCPU
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SWARCOCPU
++# endif
++# define machine_is_swarcocpu()	(machine_arch_type == MACH_TYPE_SWARCOCPU)
++#else
++# define machine_is_swarcocpu()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCODSL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SWARCODSL
++# endif
++# define machine_is_swarcodsl()	(machine_arch_type == MACH_TYPE_SWARCODSL)
++#else
++# define machine_is_swarcodsl()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BLUEANGEL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BLUEANGEL
++# endif
++# define machine_is_blueangel()	(machine_arch_type == MACH_TYPE_BLUEANGEL)
++#else
++# define machine_is_blueangel()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HAIRYGRAMA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HAIRYGRAMA
++# endif
++# define machine_is_hairygrama()	(machine_arch_type == MACH_TYPE_HAIRYGRAMA)
++#else
++# define machine_is_hairygrama()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BANFF
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BANFF
++# endif
++# define machine_is_banff()	(machine_arch_type == MACH_TYPE_BANFF)
++#else
++# define machine_is_banff()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CARMEVA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CARMEVA
++# endif
++# define machine_is_carmeva()	(machine_arch_type == MACH_TYPE_CARMEVA)
++#else
++# define machine_is_carmeva()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SAM255
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SAM255
++# endif
++# define machine_is_sam255()	(machine_arch_type == MACH_TYPE_SAM255)
++#else
++# define machine_is_sam255()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PPM10
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PPM10
++# endif
++# define machine_is_ppm10()	(machine_arch_type == MACH_TYPE_PPM10)
++#else
++# define machine_is_ppm10()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315A
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EDB9315A
++# endif
++# define machine_is_edb9315a()	(machine_arch_type == MACH_TYPE_EDB9315A)
++#else
++# define machine_is_edb9315a()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SUNSET
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SUNSET
++# endif
++# define machine_is_sunset()	(machine_arch_type == MACH_TYPE_SUNSET)
++#else
++# define machine_is_sunset()	(0)
++#endif
++
++#ifdef CONFIG_MACH_STARGATE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_STARGATE2
++# endif
++# define machine_is_stargate2()	(machine_arch_type == MACH_TYPE_STARGATE2)
++#else
++# define machine_is_stargate2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_INTELMOTE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_INTELMOTE2
++# endif
++# define machine_is_intelmote2()	(machine_arch_type == MACH_TYPE_INTELMOTE2)
++#else
++# define machine_is_intelmote2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TRIZEPS4
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TRIZEPS4
++# endif
++# define machine_is_trizeps4()	(machine_arch_type == MACH_TYPE_TRIZEPS4)
++#else
++# define machine_is_trizeps4()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MAINSTONE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MAINSTONE2
++# endif
++# define machine_is_mainstone2()	(machine_arch_type == MACH_TYPE_MAINSTONE2)
++#else
++# define machine_is_mainstone2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_IXP42X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EZ_IXP42X
++# endif
++# define machine_is_ez_ixp42x()	(machine_arch_type == MACH_TYPE_EZ_IXP42X)
++#else
++# define machine_is_ez_ixp42x()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TAPWAVE_ZODIAC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TAPWAVE_ZODIAC
++# endif
++# define machine_is_tapwave_zodiac()	(machine_arch_type == MACH_TYPE_TAPWAVE_ZODIAC)
++#else
++# define machine_is_tapwave_zodiac()	(0)
++#endif
++
++#ifdef CONFIG_MACH_UNIVERSALMETER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_UNIVERSALMETER
++# endif
++# define machine_is_universalmeter()	(machine_arch_type == MACH_TYPE_UNIVERSALMETER)
++#else
++# define machine_is_universalmeter()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HICOARM9
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HICOARM9
++# endif
++# define machine_is_hicoarm9()	(machine_arch_type == MACH_TYPE_HICOARM9)
++#else
++# define machine_is_hicoarm9()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4008
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PNX4008
++# endif
++# define machine_is_pnx4008()	(machine_arch_type == MACH_TYPE_PNX4008)
++#else
++# define machine_is_pnx4008()	(0)
++#endif
++
++#ifdef CONFIG_MACH_KWS6000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_KWS6000
++# endif
++# define machine_is_kws6000()	(machine_arch_type == MACH_TYPE_KWS6000)
++#else
++# define machine_is_kws6000()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PORTUX920T
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PORTUX920T
++# endif
++# define machine_is_portux920t()	(machine_arch_type == MACH_TYPE_PORTUX920T)
++#else
++# define machine_is_portux920t()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_X5
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EZ_X5
++# endif
++# define machine_is_ez_x5()	(machine_arch_type == MACH_TYPE_EZ_X5)
++#else
++# define machine_is_ez_x5()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_RUDOLPH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_RUDOLPH
++# endif
++# define machine_is_omap_rudolph()	(machine_arch_type == MACH_TYPE_OMAP_RUDOLPH)
++#else
++# define machine_is_omap_rudolph()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CPUAT91
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CPUAT91
++# endif
++# define machine_is_cpuat91()	(machine_arch_type == MACH_TYPE_CPUAT91)
++#else
++# define machine_is_cpuat91()	(0)
++#endif
++
++#ifdef CONFIG_MACH_REA9200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_REA9200
++# endif
++# define machine_is_rea9200()	(machine_arch_type == MACH_TYPE_REA9200)
++#else
++# define machine_is_rea9200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ACTS_PUNE_SA1110
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ACTS_PUNE_SA1110
++# endif
++# define machine_is_acts_pune_sa1110()	(machine_arch_type == MACH_TYPE_ACTS_PUNE_SA1110)
++#else
++# define machine_is_acts_pune_sa1110()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IXP425
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IXP425
++# endif
++# define machine_is_ixp425()	(machine_arch_type == MACH_TYPE_IXP425)
++#else
++# define machine_is_ixp425()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ARGONPLUSODYSSEY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ARGONPLUSODYSSEY
++# endif
++# define machine_is_i30030ads()	(machine_arch_type == MACH_TYPE_ARGONPLUSODYSSEY)
++#else
++# define machine_is_i30030ads()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PERCH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PERCH
++# endif
++# define machine_is_perch()	(machine_arch_type == MACH_TYPE_PERCH)
++#else
++# define machine_is_perch()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EIS05R1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EIS05R1
++# endif
++# define machine_is_eis05r1()	(machine_arch_type == MACH_TYPE_EIS05R1)
++#else
++# define machine_is_eis05r1()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PEPPERPAD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PEPPERPAD
++# endif
++# define machine_is_pepperpad()	(machine_arch_type == MACH_TYPE_PEPPERPAD)
++#else
++# define machine_is_pepperpad()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SB3010
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SB3010
++# endif
++# define machine_is_sb3010()	(machine_arch_type == MACH_TYPE_SB3010)
++#else
++# define machine_is_sb3010()	(0)
++#endif
++
++#ifdef CONFIG_MACH_RM9200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_RM9200
++# endif
++# define machine_is_rm9200()	(machine_arch_type == MACH_TYPE_RM9200)
++#else
++# define machine_is_rm9200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DMA03
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DMA03
++# endif
++# define machine_is_dma03()	(machine_arch_type == MACH_TYPE_DMA03)
++#else
++# define machine_is_dma03()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ROAD_S101
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ROAD_S101
++# endif
++# define machine_is_road_s101()	(machine_arch_type == MACH_TYPE_ROAD_S101)
++#else
++# define machine_is_road_s101()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_A
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IQ_NEXTGEN_A
++# endif
++# define machine_is_iq_nextgen_a()	(machine_arch_type == MACH_TYPE_IQ_NEXTGEN_A)
++#else
++# define machine_is_iq_nextgen_a()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_B
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IQ_NEXTGEN_B
++# endif
++# define machine_is_iq_nextgen_b()	(machine_arch_type == MACH_TYPE_IQ_NEXTGEN_B)
++#else
++# define machine_is_iq_nextgen_b()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_C
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IQ_NEXTGEN_C
++# endif
++# define machine_is_iq_nextgen_c()	(machine_arch_type == MACH_TYPE_IQ_NEXTGEN_C)
++#else
++# define machine_is_iq_nextgen_c()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IQ_NEXTGEN_D
++# endif
++# define machine_is_iq_nextgen_d()	(machine_arch_type == MACH_TYPE_IQ_NEXTGEN_D)
++#else
++# define machine_is_iq_nextgen_d()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_E
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IQ_NEXTGEN_E
++# endif
++# define machine_is_iq_nextgen_e()	(machine_arch_type == MACH_TYPE_IQ_NEXTGEN_E)
++#else
++# define machine_is_iq_nextgen_e()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MALLOW_AT91
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MALLOW_AT91
++# endif
++# define machine_is_mallow_at91()	(machine_arch_type == MACH_TYPE_MALLOW_AT91)
++#else
++# define machine_is_mallow_at91()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_I
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CYBERTRACKER_I
++# endif
++# define machine_is_cybertracker_i()	(machine_arch_type == MACH_TYPE_CYBERTRACKER_I)
++#else
++# define machine_is_cybertracker_i()	(0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC931X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_GESBC931X
++# endif
++# define machine_is_gesbc931x()	(machine_arch_type == MACH_TYPE_GESBC931X)
++#else
++# define machine_is_gesbc931x()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CENTIPAD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CENTIPAD
++# endif
++# define machine_is_centipad()	(machine_arch_type == MACH_TYPE_CENTIPAD)
++#else
++# define machine_is_centipad()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ARMSOC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ARMSOC
++# endif
++# define machine_is_armsoc()	(machine_arch_type == MACH_TYPE_ARMSOC)
++#else
++# define machine_is_armsoc()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SE4200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SE4200
++# endif
++# define machine_is_se4200()	(machine_arch_type == MACH_TYPE_SE4200)
++#else
++# define machine_is_se4200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EMS197A
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EMS197A
++# endif
++# define machine_is_ems197a()	(machine_arch_type == MACH_TYPE_EMS197A)
++#else
++# define machine_is_ems197a()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MICRO9
++# endif
++# define machine_is_micro9()	(machine_arch_type == MACH_TYPE_MICRO9)
++#else
++# define machine_is_micro9()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9L
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MICRO9L
++# endif
++# define machine_is_micro9l()	(machine_arch_type == MACH_TYPE_MICRO9L)
++#else
++# define machine_is_micro9l()	(0)
++#endif
++
++#ifdef CONFIG_MACH_UC5471DSP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_UC5471DSP
++# endif
++# define machine_is_uc5471dsp()	(machine_arch_type == MACH_TYPE_UC5471DSP)
++#else
++# define machine_is_uc5471dsp()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SJ5471ENG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SJ5471ENG
++# endif
++# define machine_is_sj5471eng()	(machine_arch_type == MACH_TYPE_SJ5471ENG)
++#else
++# define machine_is_sj5471eng()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA26X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CMPXA26X
++# endif
++# define machine_is_none()	(machine_arch_type == MACH_TYPE_CMPXA26X)
++#else
++# define machine_is_none()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NC
++# endif
++# define machine_is_nc1()	(machine_arch_type == MACH_TYPE_NC)
++#else
++# define machine_is_nc1()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_PALMTE
++# endif
++# define machine_is_omap_palmte()	(machine_arch_type == MACH_TYPE_OMAP_PALMTE)
++#else
++# define machine_is_omap_palmte()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AJAX52X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AJAX52X
++# endif
++# define machine_is_ajax52x()	(machine_arch_type == MACH_TYPE_AJAX52X)
++#else
++# define machine_is_ajax52x()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SIRIUSTAR
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SIRIUSTAR
++# endif
++# define machine_is_siriustar()	(machine_arch_type == MACH_TYPE_SIRIUSTAR)
++#else
++# define machine_is_siriustar()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IODATA_HDLG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IODATA_HDLG
++# endif
++# define machine_is_iodata_hdlg()	(machine_arch_type == MACH_TYPE_IODATA_HDLG)
++#else
++# define machine_is_iodata_hdlg()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200UTL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AT91RM9200UTL
++# endif
++# define machine_is_at91rm9200utl()	(machine_arch_type == MACH_TYPE_AT91RM9200UTL)
++#else
++# define machine_is_at91rm9200utl()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BIOSAFE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BIOSAFE
++# endif
++# define machine_is_biosafe()	(machine_arch_type == MACH_TYPE_BIOSAFE)
++#else
++# define machine_is_biosafe()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MP1000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MP1000
++# endif
++# define machine_is_mp1000()	(machine_arch_type == MACH_TYPE_MP1000)
++#else
++# define machine_is_mp1000()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PARSY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PARSY
++# endif
++# define machine_is_parsy()	(machine_arch_type == MACH_TYPE_PARSY)
++#else
++# define machine_is_parsy()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CCXP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CCXP
++# endif
++# define machine_is_ccxp270()	(machine_arch_type == MACH_TYPE_CCXP)
++#else
++# define machine_is_ccxp270()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_GSAMPLE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_GSAMPLE
++# endif
++# define machine_is_omap_gsample()	(machine_arch_type == MACH_TYPE_OMAP_GSAMPLE)
++#else
++# define machine_is_omap_gsample()	(0)
++#endif
++
++#ifdef CONFIG_MACH_REALVIEW_EB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_REALVIEW_EB
++# endif
++# define machine_is_realview_eb()	(machine_arch_type == MACH_TYPE_REALVIEW_EB)
++#else
++# define machine_is_realview_eb()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SAMOA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SAMOA
++# endif
++# define machine_is_samoa()	(machine_arch_type == MACH_TYPE_SAMOA)
++#else
++# define machine_is_samoa()	(0)
++#endif
++
++#ifdef CONFIG_MACH_T3XSCALE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_T3XSCALE
++# endif
++# define machine_is_t3xscale()	(machine_arch_type == MACH_TYPE_T3XSCALE)
++#else
++# define machine_is_t3xscale()	(0)
++#endif
++
++#ifdef CONFIG_MACH_I878
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_I878
++# endif
++# define machine_is_i878()	(machine_arch_type == MACH_TYPE_I878)
++#else
++# define machine_is_i878()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BORZOI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BORZOI
++# endif
++# define machine_is_borzoi()	(machine_arch_type == MACH_TYPE_BORZOI)
++#else
++# define machine_is_borzoi()	(0)
++#endif
++
++#ifdef CONFIG_MACH_GECKO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_GECKO
++# endif
++# define machine_is_gecko()	(machine_arch_type == MACH_TYPE_GECKO)
++#else
++# define machine_is_gecko()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DS101
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DS101
++# endif
++# define machine_is_ds101()	(machine_arch_type == MACH_TYPE_DS101)
++#else
++# define machine_is_ds101()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_PALMTT2
++# endif
++# define machine_is_omap_palmtt2()	(machine_arch_type == MACH_TYPE_OMAP_PALMTT2)
++#else
++# define machine_is_omap_palmtt2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMLD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XSCALE_PALMLD
++# endif
++# define machine_is_xscale_palmld()	(machine_arch_type == MACH_TYPE_XSCALE_PALMLD)
++#else
++# define machine_is_xscale_palmld()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CC9C
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CC9C
++# endif
++# define machine_is_cc9c()	(machine_arch_type == MACH_TYPE_CC9C)
++#else
++# define machine_is_cc9c()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SBC1670
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SBC1670
++# endif
++# define machine_is_sbc1670()	(machine_arch_type == MACH_TYPE_SBC1670)
++#else
++# define machine_is_sbc1670()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP28X5
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IXDP28X5
++# endif
++# define machine_is_ixdp28x5()	(machine_arch_type == MACH_TYPE_IXDP28X5)
++#else
++# define machine_is_ixdp28x5()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_PALMTT
++# endif
++# define machine_is_omap_palmtt()	(machine_arch_type == MACH_TYPE_OMAP_PALMTT)
++#else
++# define machine_is_omap_palmtt()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ML696K
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ML696K
++# endif
++# define machine_is_ml696k()	(machine_arch_type == MACH_TYPE_ML696K)
++#else
++# define machine_is_ml696k()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ARCOM_ZEUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ARCOM_ZEUS
++# endif
++# define machine_is_arcom_zeus()	(machine_arch_type == MACH_TYPE_ARCOM_ZEUS)
++#else
++# define machine_is_arcom_zeus()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OSIRIS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OSIRIS
++# endif
++# define machine_is_osiris()	(machine_arch_type == MACH_TYPE_OSIRIS)
++#else
++# define machine_is_osiris()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MAESTRO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MAESTRO
++# endif
++# define machine_is_maestro()	(machine_arch_type == MACH_TYPE_MAESTRO)
++#else
++# define machine_is_maestro()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TUNGE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TUNGE2
++# endif
++# define machine_is_tunge2()	(machine_arch_type == MACH_TYPE_TUNGE2)
++#else
++# define machine_is_tunge2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IXBBM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IXBBM
++# endif
++# define machine_is_ixbbm()	(machine_arch_type == MACH_TYPE_IXBBM)
++#else
++# define machine_is_ixbbm()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MX27
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MX27
++# endif
++# define machine_is_mx27ads()	(machine_arch_type == MACH_TYPE_MX27)
++#else
++# define machine_is_mx27ads()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AX8004
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AX8004
++# endif
++# define machine_is_ax8004()	(machine_arch_type == MACH_TYPE_AX8004)
++#else
++# define machine_is_ax8004()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AT91SAM9261EK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AT91SAM9261EK
++# endif
++# define machine_is_at91sam9261ek()	(machine_arch_type == MACH_TYPE_AT91SAM9261EK)
++#else
++# define machine_is_at91sam9261ek()	(0)
++#endif
++
++#ifdef CONFIG_MACH_LOFT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_LOFT
++# endif
++# define machine_is_loft()	(machine_arch_type == MACH_TYPE_LOFT)
++#else
++# define machine_is_loft()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MAGPIE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MAGPIE
++# endif
++# define machine_is_magpie()	(machine_arch_type == MACH_TYPE_MAGPIE)
++#else
++# define machine_is_magpie()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MX21
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MX21
++# endif
++# define machine_is_mx21ads()	(machine_arch_type == MACH_TYPE_MX21)
++#else
++# define machine_is_mx21ads()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MB87M3400
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MB87M3400
++# endif
++# define machine_is_mb87m3400()	(machine_arch_type == MACH_TYPE_MB87M3400)
++#else
++# define machine_is_mb87m3400()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MGUARD_DELTA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MGUARD_DELTA
++# endif
++# define machine_is_mguard_delta()	(machine_arch_type == MACH_TYPE_MGUARD_DELTA)
++#else
++# define machine_is_mguard_delta()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_DVDP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DAVINCI_DVDP
++# endif
++# define machine_is_davinci_dvdp()	(machine_arch_type == MACH_TYPE_DAVINCI_DVDP)
++#else
++# define machine_is_davinci_dvdp()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HTCUNIVERSAL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HTCUNIVERSAL
++# endif
++# define machine_is_htcuniversal()	(machine_arch_type == MACH_TYPE_HTCUNIVERSAL)
++#else
++# define machine_is_htcuniversal()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TPAD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TPAD
++# endif
++# define machine_is_tpad()	(machine_arch_type == MACH_TYPE_TPAD)
++#else
++# define machine_is_tpad()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ROVERP3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ROVERP3
++# endif
++# define machine_is_roverp3()	(machine_arch_type == MACH_TYPE_ROVERP3)
++#else
++# define machine_is_roverp3()	(0)
++#endif
++
++#ifdef CONFIG_MACH_JORNADA928
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_JORNADA928
++# endif
++# define machine_is_jornada928()	(machine_arch_type == MACH_TYPE_JORNADA928)
++#else
++# define machine_is_jornada928()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MV88FXX81
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MV88FXX81
++# endif
++# define machine_is_mv88fxx81()	(machine_arch_type == MACH_TYPE_MV88FXX81)
++#else
++# define machine_is_mv88fxx81()	(0)
++#endif
++
++#ifdef CONFIG_MACH_STMP36XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_STMP36XX
++# endif
++# define machine_is_stmp36xx()	(machine_arch_type == MACH_TYPE_STMP36XX)
++#else
++# define machine_is_stmp36xx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SXNI79524
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SXNI79524
++# endif
++# define machine_is_sxni79524()	(machine_arch_type == MACH_TYPE_SXNI79524)
++#else
++# define machine_is_sxni79524()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AMS_DELTA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AMS_DELTA
++# endif
++# define machine_is_ams_delta()	(machine_arch_type == MACH_TYPE_AMS_DELTA)
++#else
++# define machine_is_ams_delta()	(0)
++#endif
++
++#ifdef CONFIG_MACH_URANIUM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_URANIUM
++# endif
++# define machine_is_uranium()	(machine_arch_type == MACH_TYPE_URANIUM)
++#else
++# define machine_is_uranium()	(0)
++#endif
++
++#ifdef CONFIG_MACH_UCON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_UCON
++# endif
++# define machine_is_ucon()	(machine_arch_type == MACH_TYPE_UCON)
++#else
++# define machine_is_ucon()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NAS100D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NAS100D
++# endif
++# define machine_is_nas100d()	(machine_arch_type == MACH_TYPE_NAS100D)
++#else
++# define machine_is_nas100d()	(0)
++#endif
++
++#ifdef CONFIG_MACH_L083_1000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_L083_1000
++# endif
++# define machine_is_l083()	(machine_arch_type == MACH_TYPE_L083_1000)
++#else
++# define machine_is_l083()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EZX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EZX
++# endif
++# define machine_is_ezx()	(machine_arch_type == MACH_TYPE_EZX)
++#else
++# define machine_is_ezx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PNX5220
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PNX5220
++# endif
++# define machine_is_pnx5220()	(machine_arch_type == MACH_TYPE_PNX5220)
++#else
++# define machine_is_pnx5220()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BUTTE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BUTTE
++# endif
++# define machine_is_butte()	(machine_arch_type == MACH_TYPE_BUTTE)
++#else
++# define machine_is_butte()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SRM2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SRM2
++# endif
++# define machine_is_srm2()	(machine_arch_type == MACH_TYPE_SRM2)
++#else
++# define machine_is_srm2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DSBR
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DSBR
++# endif
++# define machine_is_dsbr()	(machine_arch_type == MACH_TYPE_DSBR)
++#else
++# define machine_is_dsbr()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CRYSTALBALL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CRYSTALBALL
++# endif
++# define machine_is_crystalball()	(machine_arch_type == MACH_TYPE_CRYSTALBALL)
++#else
++# define machine_is_crystalball()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TINYPXA27X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TINYPXA27X
++# endif
++# define machine_is_tinypxa27x()	(machine_arch_type == MACH_TYPE_TINYPXA27X)
++#else
++# define machine_is_tinypxa27x()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HERBIE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HERBIE
++# endif
++# define machine_is_herbie()	(machine_arch_type == MACH_TYPE_HERBIE)
++#else
++# define machine_is_herbie()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MAGICIAN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MAGICIAN
++# endif
++# define machine_is_magician()	(machine_arch_type == MACH_TYPE_MAGICIAN)
++#else
++# define machine_is_magician()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CM4002
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CM4002
++# endif
++# define machine_is_cm4002()	(machine_arch_type == MACH_TYPE_CM4002)
++#else
++# define machine_is_cm4002()	(0)
++#endif
++
++#ifdef CONFIG_MACH_B4
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_B4
++# endif
++# define machine_is_b4()	(machine_arch_type == MACH_TYPE_B4)
++#else
++# define machine_is_b4()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MAUI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MAUI
++# endif
++# define machine_is_maui()	(machine_arch_type == MACH_TYPE_MAUI)
++#else
++# define machine_is_maui()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_G
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CYBERTRACKER_G
++# endif
++# define machine_is_cybertracker_g()	(machine_arch_type == MACH_TYPE_CYBERTRACKER_G)
++#else
++# define machine_is_cybertracker_g()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NXDKN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NXDKN
++# endif
++# define machine_is_nxdkn()	(machine_arch_type == MACH_TYPE_NXDKN)
++#else
++# define machine_is_nxdkn()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MIO8390
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MIO8390
++# endif
++# define machine_is_mio8390()	(machine_arch_type == MACH_TYPE_MIO8390)
++#else
++# define machine_is_mio8390()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMI_BOARD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMI_BOARD
++# endif
++# define machine_is_omi_board()	(machine_arch_type == MACH_TYPE_OMI_BOARD)
++#else
++# define machine_is_omi_board()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MX21CIV
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MX21CIV
++# endif
++# define machine_is_mx21civ()	(machine_arch_type == MACH_TYPE_MX21CIV)
++#else
++# define machine_is_mx21civ()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MAHI_CDAC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MAHI_CDAC
++# endif
++# define machine_is_mahi_cdac()	(machine_arch_type == MACH_TYPE_MAHI_CDAC)
++#else
++# define machine_is_mahi_cdac()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XSCALE_PALMTX
++# endif
++# define machine_is_xscale_palmtx()	(machine_arch_type == MACH_TYPE_XSCALE_PALMTX)
++#else
++# define machine_is_xscale_palmtx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2413
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_S3C2413
++# endif
++# define machine_is_s3c2413()	(machine_arch_type == MACH_TYPE_S3C2413)
++#else
++# define machine_is_s3c2413()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SAMSYS_EP0
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SAMSYS_EP0
++# endif
++# define machine_is_samsys_ep0()	(machine_arch_type == MACH_TYPE_SAMSYS_EP0)
++#else
++# define machine_is_samsys_ep0()	(0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_WG302V1
++# endif
++# define machine_is_wg302v1()	(machine_arch_type == MACH_TYPE_WG302V1)
++#else
++# define machine_is_wg302v1()	(0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_WG302V2
++# endif
++# define machine_is_wg302v2()	(machine_arch_type == MACH_TYPE_WG302V2)
++#else
++# define machine_is_wg302v2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EB42X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EB42X
++# endif
++# define machine_is_eb42x()	(machine_arch_type == MACH_TYPE_EB42X)
++#else
++# define machine_is_eb42x()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IQ331ES
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IQ331ES
++# endif
++# define machine_is_iq331es()	(machine_arch_type == MACH_TYPE_IQ331ES)
++#else
++# define machine_is_iq331es()	(0)
++#endif
++
++#ifdef CONFIG_MACH_COSYDSP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_COSYDSP
++# endif
++# define machine_is_cosydsp()	(machine_arch_type == MACH_TYPE_COSYDSP)
++#else
++# define machine_is_cosydsp()	(0)
++#endif
++
++#ifdef CONFIG_MACH_UPLAT7D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_UPLAT7D
++# endif
++# define machine_is_uplat7d_proto()	(machine_arch_type == MACH_TYPE_UPLAT7D)
++#else
++# define machine_is_uplat7d_proto()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PTDAVINCI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PTDAVINCI
++# endif
++# define machine_is_ptdavinci()	(machine_arch_type == MACH_TYPE_PTDAVINCI)
++#else
++# define machine_is_ptdavinci()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MBUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MBUS
++# endif
++# define machine_is_mbus()	(machine_arch_type == MACH_TYPE_MBUS)
++#else
++# define machine_is_mbus()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NADIA2VB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NADIA2VB
++# endif
++# define machine_is_nadia2vb()	(machine_arch_type == MACH_TYPE_NADIA2VB)
++#else
++# define machine_is_nadia2vb()	(0)
++#endif
++
++#ifdef CONFIG_MACH_R1000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_R1000
++# endif
++# define machine_is_r1000()	(machine_arch_type == MACH_TYPE_R1000)
++#else
++# define machine_is_r1000()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HW90250
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HW90250
++# endif
++# define machine_is_hw90250()	(machine_arch_type == MACH_TYPE_HW90250)
++#else
++# define machine_is_hw90250()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_2430SDP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_2430SDP
++# endif
++# define machine_is_omap_2430sdp()	(machine_arch_type == MACH_TYPE_OMAP_2430SDP)
++#else
++# define machine_is_omap_2430sdp()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_EVM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DAVINCI_EVM
++# endif
++# define machine_is_davinci_evm()	(machine_arch_type == MACH_TYPE_DAVINCI_EVM)
++#else
++# define machine_is_davinci_evm()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TORNADO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_TORNADO
++# endif
++# define machine_is_omap_tornado()	(machine_arch_type == MACH_TYPE_OMAP_TORNADO)
++#else
++# define machine_is_omap_tornado()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OLOCREEK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OLOCREEK
++# endif
++# define machine_is_olocreek()	(machine_arch_type == MACH_TYPE_OLOCREEK)
++#else
++# define machine_is_olocreek()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PALMZ72
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PALMZ72
++# endif
++# define machine_is_palmz72()	(machine_arch_type == MACH_TYPE_PALMZ72)
++#else
++# define machine_is_palmz72()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NXDB500
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NXDB500
++# endif
++# define machine_is_nxdb500()	(machine_arch_type == MACH_TYPE_NXDB500)
++#else
++# define machine_is_nxdb500()	(0)
++#endif
++
++#ifdef CONFIG_MACH_APF9328
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_APF9328
++# endif
++# define machine_is_apf9328()	(machine_arch_type == MACH_TYPE_APF9328)
++#else
++# define machine_is_apf9328()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_WIPOQ
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_WIPOQ
++# endif
++# define machine_is_omap_wipoq()	(machine_arch_type == MACH_TYPE_OMAP_WIPOQ)
++#else
++# define machine_is_omap_wipoq()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TWIP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_TWIP
++# endif
++# define machine_is_omap_twip()	(machine_arch_type == MACH_TYPE_OMAP_TWIP)
++#else
++# define machine_is_omap_twip()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTREO650
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XSCALE_PALMTREO650
++# endif
++# define machine_is_xscale_treo650()	(machine_arch_type == MACH_TYPE_XSCALE_PALMTREO650)
++#else
++# define machine_is_xscale_treo650()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ACUMEN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ACUMEN
++# endif
++# define machine_is_acumen()	(machine_arch_type == MACH_TYPE_ACUMEN)
++#else
++# define machine_is_acumen()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XP100
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XP100
++# endif
++# define machine_is_xp100()	(machine_arch_type == MACH_TYPE_XP100)
++#else
++# define machine_is_xp100()	(0)
++#endif
++
++#ifdef CONFIG_MACH_FS2410
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_FS2410
++# endif
++# define machine_is_fs2410()	(machine_arch_type == MACH_TYPE_FS2410)
++#else
++# define machine_is_fs2410()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PXA270_CERF
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PXA270_CERF
++# endif
++# define machine_is_pxa270_cerf()	(machine_arch_type == MACH_TYPE_PXA270_CERF)
++#else
++# define machine_is_pxa270_cerf()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SQ2FTLPALM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SQ2FTLPALM
++# endif
++# define machine_is_sq2ftlpalm()	(machine_arch_type == MACH_TYPE_SQ2FTLPALM)
++#else
++# define machine_is_sq2ftlpalm()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BSEMSERVER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BSEMSERVER
++# endif
++# define machine_is_bsemserver()	(machine_arch_type == MACH_TYPE_BSEMSERVER)
++#else
++# define machine_is_bsemserver()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NETCLIENT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NETCLIENT
++# endif
++# define machine_is_netclient()	(machine_arch_type == MACH_TYPE_NETCLIENT)
++#else
++# define machine_is_netclient()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTT5
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XSCALE_PALMTT5
++# endif
++# define machine_is_xscale_palmtt5()	(machine_arch_type == MACH_TYPE_XSCALE_PALMTT5)
++#else
++# define machine_is_xscale_palmtt5()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_PALMTC
++# endif
++# define machine_is_xscale_palmtc()	(machine_arch_type == MACH_TYPE_OMAP_PALMTC)
++#else
++# define machine_is_xscale_palmtc()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_APOLLON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_APOLLON
++# endif
++# define machine_is_omap_apollon()	(machine_arch_type == MACH_TYPE_OMAP_APOLLON)
++#else
++# define machine_is_omap_apollon()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ARGONLVEVB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ARGONLVEVB
++# endif
++# define machine_is_mxc30030evb()	(machine_arch_type == MACH_TYPE_ARGONLVEVB)
++#else
++# define machine_is_mxc30030evb()	(0)
++#endif
++
++#ifdef CONFIG_MACH_REA_2D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_REA_2D
++# endif
++# define machine_is_rea_2d()	(machine_arch_type == MACH_TYPE_REA_2D)
++#else
++# define machine_is_rea_2d()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TI3E524
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TI3E524
++# endif
++# define machine_is_eti3e524()	(machine_arch_type == MACH_TYPE_TI3E524)
++#else
++# define machine_is_eti3e524()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ATEB9200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ATEB9200
++# endif
++# define machine_is_ateb9200()	(machine_arch_type == MACH_TYPE_ATEB9200)
++#else
++# define machine_is_ateb9200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AUCKLAND
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AUCKLAND
++# endif
++# define machine_is_auckland()	(machine_arch_type == MACH_TYPE_AUCKLAND)
++#else
++# define machine_is_auckland()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AK3320M
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AK3320M
++# endif
++# define machine_is_ak3220m()	(machine_arch_type == MACH_TYPE_AK3320M)
++#else
++# define machine_is_ak3220m()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DURAMAX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DURAMAX
++# endif
++# define machine_is_duramax()	(machine_arch_type == MACH_TYPE_DURAMAX)
++#else
++# define machine_is_duramax()	(0)
++#endif
++
++#ifdef CONFIG_MACH_N35
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_N35
++# endif
++# define machine_is_n35()	(machine_arch_type == MACH_TYPE_N35)
++#else
++# define machine_is_n35()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PRONGHORN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PRONGHORN
++# endif
++# define machine_is_pronghorn()	(machine_arch_type == MACH_TYPE_PRONGHORN)
++#else
++# define machine_is_pronghorn()	(0)
++#endif
++
++#ifdef CONFIG_MACH_FUNDY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_FUNDY
++# endif
++# define machine_is_fundy()	(machine_arch_type == MACH_TYPE_FUNDY)
++#else
++# define machine_is_fundy()	(0)
++#endif
++
++#ifdef CONFIG_MACH_LOGICPD_PXA270
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_LOGICPD_PXA270
++# endif
++# define machine_is_logicpd_pxa270()	(machine_arch_type == MACH_TYPE_LOGICPD_PXA270)
++#else
++# define machine_is_logicpd_pxa270()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CPU777
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CPU777
++# endif
++# define machine_is_cpu777()	(machine_arch_type == MACH_TYPE_CPU777)
++#else
++# define machine_is_cpu777()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SIMICON9201
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SIMICON9201
++# endif
++# define machine_is_simicon9201()	(machine_arch_type == MACH_TYPE_SIMICON9201)
++#else
++# define machine_is_simicon9201()	(0)
++#endif
++
++#ifdef CONFIG_MACH_LEAP2_HPM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_LEAP2_HPM
++# endif
++# define machine_is_leap2_hpm()	(machine_arch_type == MACH_TYPE_LEAP2_HPM)
++#else
++# define machine_is_leap2_hpm()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CM922TXA10
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CM922TXA10
++# endif
++# define machine_is_cm922txa10()	(machine_arch_type == MACH_TYPE_CM922TXA10)
++#else
++# define machine_is_cm922txa10()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PXA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PXA
++# endif
++# define machine_is_sandgate()	(machine_arch_type == MACH_TYPE_PXA)
++#else
++# define machine_is_sandgate()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SANDGATE2
++# endif
++# define machine_is_sandgate2()	(machine_arch_type == MACH_TYPE_SANDGATE2)
++#else
++# define machine_is_sandgate2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2G
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SANDGATE2G
++# endif
++# define machine_is_sandgate2g()	(machine_arch_type == MACH_TYPE_SANDGATE2G)
++#else
++# define machine_is_sandgate2g()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2P
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SANDGATE2P
++# endif
++# define machine_is_sandgate2p()	(machine_arch_type == MACH_TYPE_SANDGATE2P)
++#else
++# define machine_is_sandgate2p()	(0)
++#endif
++
++#ifdef CONFIG_MACH_FRED_JACK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_FRED_JACK
++# endif
++# define machine_is_fred_jack()	(machine_arch_type == MACH_TYPE_FRED_JACK)
++#else
++# define machine_is_fred_jack()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TTG_COLOR1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TTG_COLOR1
++# endif
++# define machine_is_ttg_color1()	(machine_arch_type == MACH_TYPE_TTG_COLOR1)
++#else
++# define machine_is_ttg_color1()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NXEB500HMI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NXEB500HMI
++# endif
++# define machine_is_nxeb500hmi()	(machine_arch_type == MACH_TYPE_NXEB500HMI)
++#else
++# define machine_is_nxeb500hmi()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NETDCU8
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NETDCU8
++# endif
++# define machine_is_netdcu8()	(machine_arch_type == MACH_TYPE_NETDCU8)
++#else
++# define machine_is_netdcu8()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ML675050_CPU_BOA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ML675050_CPU_BOA
++# endif
++# define machine_is_ml675050_cpu_boa()	(machine_arch_type == MACH_TYPE_ML675050_CPU_BOA)
++#else
++# define machine_is_ml675050_cpu_boa()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVX538
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NG_FVX538
++# endif
++# define machine_is_ng_fvx538()	(machine_arch_type == MACH_TYPE_NG_FVX538)
++#else
++# define machine_is_ng_fvx538()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVS338
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NG_FVS338
++# endif
++# define machine_is_ng_fvs338()	(machine_arch_type == MACH_TYPE_NG_FVS338)
++#else
++# define machine_is_ng_fvs338()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4103
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PNX4103
++# endif
++# define machine_is_pnx4103()	(machine_arch_type == MACH_TYPE_PNX4103)
++#else
++# define machine_is_pnx4103()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HESDB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HESDB
++# endif
++# define machine_is_hesdb()	(machine_arch_type == MACH_TYPE_HESDB)
++#else
++# define machine_is_hesdb()	(0)
++#endif
++
++#ifdef CONFIG_MACH_XSILO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_XSILO
++# endif
++# define machine_is_xsilo()	(machine_arch_type == MACH_TYPE_XSILO)
++#else
++# define machine_is_xsilo()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ESPRESSO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ESPRESSO
++# endif
++# define machine_is_espresso()	(machine_arch_type == MACH_TYPE_ESPRESSO)
++#else
++# define machine_is_espresso()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EMLC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EMLC
++# endif
++# define machine_is_emlc()	(machine_arch_type == MACH_TYPE_EMLC)
++#else
++# define machine_is_emlc()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SISTERON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SISTERON
++# endif
++# define machine_is_sisteron()	(machine_arch_type == MACH_TYPE_SISTERON)
++#else
++# define machine_is_sisteron()	(0)
++#endif
++
++#ifdef CONFIG_MACH_RX1950
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_RX1950
++# endif
++# define machine_is_rx1950()	(machine_arch_type == MACH_TYPE_RX1950)
++#else
++# define machine_is_rx1950()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TSC_VENUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TSC_VENUS
++# endif
++# define machine_is_tsc_venus()	(machine_arch_type == MACH_TYPE_TSC_VENUS)
++#else
++# define machine_is_tsc_venus()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DS101J
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DS101J
++# endif
++# define machine_is_ds101j()	(machine_arch_type == MACH_TYPE_DS101J)
++#else
++# define machine_is_ds101j()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MXC30030ADS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MXC30030ADS
++# endif
++# define machine_is_mxc30030ads()	(machine_arch_type == MACH_TYPE_MXC30030ADS)
++#else
++# define machine_is_mxc30030ads()	(0)
++#endif
++
++#ifdef CONFIG_MACH_FUJITSU_WIMAXSOC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_FUJITSU_WIMAXSOC
++# endif
++# define machine_is_fujitsu_wimaxsoc()	(machine_arch_type == MACH_TYPE_FUJITSU_WIMAXSOC)
++#else
++# define machine_is_fujitsu_wimaxsoc()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DUALPCMODEM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DUALPCMODEM
++# endif
++# define machine_is_dualpcmodem()	(machine_arch_type == MACH_TYPE_DUALPCMODEM)
++#else
++# define machine_is_dualpcmodem()	(0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC9312
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_GESBC9312
++# endif
++# define machine_is_gesbc9312()	(machine_arch_type == MACH_TYPE_GESBC9312)
++#else
++# define machine_is_gesbc9312()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HTCAPACHE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HTCAPACHE
++# endif
++# define machine_is_htcapache()	(machine_arch_type == MACH_TYPE_HTCAPACHE)
++#else
++# define machine_is_htcapache()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP435
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IXDP435
++# endif
++# define machine_is_ixdp435()	(machine_arch_type == MACH_TYPE_IXDP435)
++#else
++# define machine_is_ixdp435()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CATPROVT100
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CATPROVT100
++# endif
++# define machine_is_catprovt100()	(machine_arch_type == MACH_TYPE_CATPROVT100)
++#else
++# define machine_is_catprovt100()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX1XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PICOTUX1XX
++# endif
++# define machine_is_picotux1xx()	(machine_arch_type == MACH_TYPE_PICOTUX1XX)
++#else
++# define machine_is_picotux1xx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX2XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PICOTUX2XX
++# endif
++# define machine_is_picotux2xx()	(machine_arch_type == MACH_TYPE_PICOTUX2XX)
++#else
++# define machine_is_picotux2xx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DSMG600
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DSMG600
++# endif
++# define machine_is_dsmg600()	(machine_arch_type == MACH_TYPE_DSMG600)
++#else
++# define machine_is_dsmg600()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EMPC2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EMPC2
++# endif
++# define machine_is_empc2()	(machine_arch_type == MACH_TYPE_EMPC2)
++#else
++# define machine_is_empc2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_VENTURA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_VENTURA
++# endif
++# define machine_is_ventura()	(machine_arch_type == MACH_TYPE_VENTURA)
++#else
++# define machine_is_ventura()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PHIDGET_SBC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PHIDGET_SBC
++# endif
++# define machine_is_phidget_sbc()	(machine_arch_type == MACH_TYPE_PHIDGET_SBC)
++#else
++# define machine_is_phidget_sbc()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IJ3K
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IJ3K
++# endif
++# define machine_is_ij3k()	(machine_arch_type == MACH_TYPE_IJ3K)
++#else
++# define machine_is_ij3k()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PISGAH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PISGAH
++# endif
++# define machine_is_pisgah()	(machine_arch_type == MACH_TYPE_PISGAH)
++#else
++# define machine_is_pisgah()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_FSAMPLE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_FSAMPLE
++# endif
++# define machine_is_omap_fsample()	(machine_arch_type == MACH_TYPE_OMAP_FSAMPLE)
++#else
++# define machine_is_omap_fsample()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SG720
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SG720
++# endif
++# define machine_is_sg720()	(machine_arch_type == MACH_TYPE_SG720)
++#else
++# define machine_is_sg720()	(0)
++#endif
++
++#ifdef CONFIG_MACH_REDFOX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_REDFOX
++# endif
++# define machine_is_redfox()	(machine_arch_type == MACH_TYPE_REDFOX)
++#else
++# define machine_is_redfox()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MYSH_EP9315_1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MYSH_EP9315_1
++# endif
++# define machine_is_mysh_ep9315_1()	(machine_arch_type == MACH_TYPE_MYSH_EP9315_1)
++#else
++# define machine_is_mysh_ep9315_1()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TPF106
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TPF106
++# endif
++# define machine_is_tpf106()	(machine_arch_type == MACH_TYPE_TPF106)
++#else
++# define machine_is_tpf106()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200KG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AT91RM9200KG
++# endif
++# define machine_is_at91rm9200kg()	(machine_arch_type == MACH_TYPE_AT91RM9200KG)
++#else
++# define machine_is_at91rm9200kg()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SLEDB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SLEDB
++# endif
++# define machine_is_racemt2()	(machine_arch_type == MACH_TYPE_SLEDB)
++#else
++# define machine_is_racemt2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ONTRACK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ONTRACK
++# endif
++# define machine_is_ontrack()	(machine_arch_type == MACH_TYPE_ONTRACK)
++#else
++# define machine_is_ontrack()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PM1200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PM1200
++# endif
++# define machine_is_pm1200()	(machine_arch_type == MACH_TYPE_PM1200)
++#else
++# define machine_is_pm1200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ESS24XXX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ESS24XXX
++# endif
++# define machine_is_ess24562()	(machine_arch_type == MACH_TYPE_ESS24XXX)
++#else
++# define machine_is_ess24562()	(0)
++#endif
++
++#ifdef CONFIG_MACH_COREMP7
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_COREMP7
++# endif
++# define machine_is_coremp7()	(machine_arch_type == MACH_TYPE_COREMP7)
++#else
++# define machine_is_coremp7()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NEXCODER_6446
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NEXCODER_6446
++# endif
++# define machine_is_nexcoder_6446()	(machine_arch_type == MACH_TYPE_NEXCODER_6446)
++#else
++# define machine_is_nexcoder_6446()	(0)
++#endif
++
++#ifdef CONFIG_MACH_STVC8380
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_STVC8380
++# endif
++# define machine_is_stvc8380()	(machine_arch_type == MACH_TYPE_STVC8380)
++#else
++# define machine_is_stvc8380()	(0)
++#endif
++
++#ifdef CONFIG_MACH_TEKLYNX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_TEKLYNX
++# endif
++# define machine_is_teklynx()	(machine_arch_type == MACH_TYPE_TEKLYNX)
++#else
++# define machine_is_teklynx()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CARBONADO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CARBONADO
++# endif
++# define machine_is_carbonado()	(machine_arch_type == MACH_TYPE_CARBONADO)
++#else
++# define machine_is_carbonado()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SYSMOS_MP730
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SYSMOS_MP730
++# endif
++# define machine_is_sysmos_mp730()	(machine_arch_type == MACH_TYPE_SYSMOS_MP730)
++#else
++# define machine_is_sysmos_mp730()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SNAPPER_CL15
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SNAPPER_CL15
++# endif
++# define machine_is_snapper_cl15()	(machine_arch_type == MACH_TYPE_SNAPPER_CL15)
++#else
++# define machine_is_snapper_cl15()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PGIGIM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PGIGIM
++# endif
++# define machine_is_pgigim()	(machine_arch_type == MACH_TYPE_PGIGIM)
++#else
++# define machine_is_pgigim()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PTX9160P2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PTX9160P2
++# endif
++# define machine_is_ptx9160p2()	(machine_arch_type == MACH_TYPE_PTX9160P2)
++#else
++# define machine_is_ptx9160p2()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DCORE1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DCORE1
++# endif
++# define machine_is_dcore1()	(machine_arch_type == MACH_TYPE_DCORE1)
++#else
++# define machine_is_dcore1()	(0)
++#endif
++
++#ifdef CONFIG_MACH_VICTORPXA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_VICTORPXA
++# endif
++# define machine_is_victorpxa()	(machine_arch_type == MACH_TYPE_VICTORPXA)
++#else
++# define machine_is_victorpxa()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MX2DTB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MX2DTB
++# endif
++# define machine_is_mx2dtb()	(machine_arch_type == MACH_TYPE_MX2DTB)
++#else
++# define machine_is_mx2dtb()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PXA_IREX_ER0100
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PXA_IREX_ER0100
++# endif
++# define machine_is_pxa_irex_er0100()	(machine_arch_type == MACH_TYPE_PXA_IREX_ER0100)
++#else
++# define machine_is_pxa_irex_er0100()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMZ71
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_PALMZ71
++# endif
++# define machine_is_omap_palmz71()	(machine_arch_type == MACH_TYPE_OMAP_PALMZ71)
++#else
++# define machine_is_omap_palmz71()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_DEG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BARTEC_DEG
++# endif
++# define machine_is_bartec_deg()	(machine_arch_type == MACH_TYPE_BARTEC_DEG)
++#else
++# define machine_is_bartec_deg()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HW50251
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HW50251
++# endif
++# define machine_is_hw50251()	(machine_arch_type == MACH_TYPE_HW50251)
++#else
++# define machine_is_hw50251()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IBOX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IBOX
++# endif
++# define machine_is_ibox()	(machine_arch_type == MACH_TYPE_IBOX)
++#else
++# define machine_is_ibox()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ATLASLH7A404
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ATLASLH7A404
++# endif
++# define machine_is_atlaslh7a404()	(machine_arch_type == MACH_TYPE_ATLASLH7A404)
++#else
++# define machine_is_atlaslh7a404()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PT2026
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PT2026
++# endif
++# define machine_is_pt2026()	(machine_arch_type == MACH_TYPE_PT2026)
++#else
++# define machine_is_pt2026()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HTCALPINE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HTCALPINE
++# endif
++# define machine_is_htcalpine()	(machine_arch_type == MACH_TYPE_HTCALPINE)
++#else
++# define machine_is_htcalpine()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_VTU
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BARTEC_VTU
++# endif
++# define machine_is_bartec_vtu()	(machine_arch_type == MACH_TYPE_BARTEC_VTU)
++#else
++# define machine_is_bartec_vtu()	(0)
++#endif
++
++#ifdef CONFIG_MACH_VCOREII
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_VCOREII
++# endif
++# define machine_is_vcoreii()	(machine_arch_type == MACH_TYPE_VCOREII)
++#else
++# define machine_is_vcoreii()	(0)
++#endif
++
++#ifdef CONFIG_MACH_PDNB3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_PDNB3
++# endif
++# define machine_is_pdnb3()	(machine_arch_type == MACH_TYPE_PDNB3)
++#else
++# define machine_is_pdnb3()	(0)
++#endif
++
++#ifdef CONFIG_MACH_HTCBEETLES
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_HTCBEETLES
++# endif
++# define machine_is_htcbeetles()	(machine_arch_type == MACH_TYPE_HTCBEETLES)
++#else
++# define machine_is_htcbeetles()	(0)
++#endif
++
++#ifdef CONFIG_MACH_S3C6400
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_S3C6400
++# endif
++# define machine_is_s3c6400()	(machine_arch_type == MACH_TYPE_S3C6400)
++#else
++# define machine_is_s3c6400()	(0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2443
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_S3C2443
++# endif
++# define machine_is_s3c2443()	(machine_arch_type == MACH_TYPE_S3C2443)
++#else
++# define machine_is_s3c2443()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_LDK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OMAP_LDK
++# endif
++# define machine_is_omap_ldk()	(machine_arch_type == MACH_TYPE_OMAP_LDK)
++#else
++# define machine_is_omap_ldk()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2460
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SMDK2460
++# endif
++# define machine_is_smdk2460()	(machine_arch_type == MACH_TYPE_SMDK2460)
++#else
++# define machine_is_smdk2460()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2440
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SMDK2440
++# endif
++# define machine_is_smdk2440()	(machine_arch_type == MACH_TYPE_SMDK2440)
++#else
++# define machine_is_smdk2440()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2412
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SMDK2412
++# endif
++# define machine_is_smdk2412()	(machine_arch_type == MACH_TYPE_SMDK2412)
++#else
++# define machine_is_smdk2412()	(0)
++#endif
++
++#ifdef CONFIG_MACH_WEBBOX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_WEBBOX
++# endif
++# define machine_is_webbox()	(machine_arch_type == MACH_TYPE_WEBBOX)
++#else
++# define machine_is_webbox()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CWWNDP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CWWNDP
++# endif
++# define machine_is_cwwndp()	(machine_arch_type == MACH_TYPE_CWWNDP)
++#else
++# define machine_is_cwwndp()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DRAGON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DRAGON
++# endif
++# define machine_is_dragon()	(machine_arch_type == MACH_TYPE_DRAGON)
++#else
++# define machine_is_dragon()	(0)
++#endif
++
++#ifdef CONFIG_MACH_OPENDO_CPU_BOARD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_OPENDO_CPU_BOARD
++# endif
++# define machine_is_opendo_cpu_board()	(machine_arch_type == MACH_TYPE_OPENDO_CPU_BOARD)
++#else
++# define machine_is_opendo_cpu_board()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CCM2200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CCM2200
++# endif
++# define machine_is_ccm2200()	(machine_arch_type == MACH_TYPE_CCM2200)
++#else
++# define machine_is_ccm2200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_ETWARM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_ETWARM
++# endif
++# define machine_is_etwarm()	(machine_arch_type == MACH_TYPE_ETWARM)
++#else
++# define machine_is_etwarm()	(0)
++#endif
++
++#ifdef CONFIG_MACH_M93030
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_M93030
++# endif
++# define machine_is_m93030()	(machine_arch_type == MACH_TYPE_M93030)
++#else
++# define machine_is_m93030()	(0)
++#endif
++
++#ifdef CONFIG_MACH_CC7U
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_CC7U
++# endif
++# define machine_is_cc7u()	(machine_arch_type == MACH_TYPE_CC7U)
++#else
++# define machine_is_cc7u()	(0)
++#endif
++
++#ifdef CONFIG_MACH_MTT_RANGER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_MTT_RANGER
++# endif
++# define machine_is_mtt_ranger()	(machine_arch_type == MACH_TYPE_MTT_RANGER)
++#else
++# define machine_is_mtt_ranger()	(0)
++#endif
++
++#ifdef CONFIG_MACH_NEXUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_NEXUS
++# endif
++# define machine_is_nexus()	(machine_arch_type == MACH_TYPE_NEXUS)
++#else
++# define machine_is_nexus()	(0)
++#endif
++
++#ifdef CONFIG_MACH_DESMAN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_DESMAN
++# endif
++# define machine_is_desman()	(machine_arch_type == MACH_TYPE_DESMAN)
++#else
++# define machine_is_desman()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BKDE303
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BKDE303
++# endif
++# define machine_is_bkde303()	(machine_arch_type == MACH_TYPE_BKDE303)
++#else
++# define machine_is_bkde303()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2413
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SMDK2413
++# endif
++# define machine_is_smdk2413()	(machine_arch_type == MACH_TYPE_SMDK2413)
++#else
++# define machine_is_smdk2413()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M7200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AML_M7200
++# endif
++# define machine_is_aml_m7200()	(machine_arch_type == MACH_TYPE_AML_M7200)
++#else
++# define machine_is_aml_m7200()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M5900
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AML_M5900
++# endif
++# define machine_is_aml_m5900()	(machine_arch_type == MACH_TYPE_AML_M5900)
++#else
++# define machine_is_aml_m5900()	(0)
++#endif
++
++#ifdef CONFIG_MACH_SG640
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_SG640
++# endif
++# define machine_is_sg640()	(machine_arch_type == MACH_TYPE_SG640)
++#else
++# define machine_is_sg640()	(0)
++#endif
++
++#ifdef CONFIG_MACH_EDG79524
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_EDG79524
++# endif
++# define machine_is_edg79524()	(machine_arch_type == MACH_TYPE_EDG79524)
++#else
++# define machine_is_edg79524()	(0)
++#endif
++
++#ifdef CONFIG_MACH_AI2410
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_AI2410
++# endif
++# define machine_is_ai2410()	(machine_arch_type == MACH_TYPE_AI2410)
++#else
++# define machine_is_ai2410()	(0)
++#endif
++
++#ifdef CONFIG_MACH_IXP465
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_IXP465
++# endif
++# define machine_is_ixp465()	(machine_arch_type == MACH_TYPE_IXP465)
++#else
++# define machine_is_ixp465()	(0)
++#endif
++
++#ifdef CONFIG_MACH_BALLOON3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_BALLOON3
++# endif
++# define machine_is_balloon3()	(machine_arch_type == MACH_TYPE_BALLOON3)
++#else
++# define machine_is_balloon3()	(0)
++#endif
++
++#ifdef CONFIG_MACH_QT2410
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type	__machine_arch_type
++# else
++#  define machine_arch_type	MACH_TYPE_QT2410
++# endif
++# define machine_is_qt2410()	(machine_arch_type == MACH_TYPE_QT2410)
++#else
++# define machine_is_qt2410()	(0)
++#endif
++
+ /*
+  * These have not yet been registered
+  */
+diff --git a/include/configs/qt2410.h b/include/configs/qt2410.h
+new file mode 100644
+index 0000000..627f365
+--- /dev/null
++++ b/include/configs/qt2410.h
+@@ -0,0 +1,256 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger at sysgo.de>
++ * Gary Jennejohn <gj at denx.de>
++ * David Mueller <d.mueller at elsoft.ch>
++ *
++ * Configuation settings for the SAMSUNG SMDK2410 board.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#if 0
++/* If we want to start u-boot from usb bootloader in NOR flash */
++#define CONFIG_SKIP_RELOCATE_UBOOT	1
++#define	CONFIG_SKIP_LOWLEVEL_INIT	1
++#else
++/* If we want to start u-boot directly from within NAND flash */
++#define CONFIG_S3C2410_NAND_BOOT	1
++#endif
++
++/*
++ * High Level Configuration Options
++ * (easy to change)
++ */
++#define CONFIG_ARM920T		1	/* This is an ARM920T Core	*/
++#define	CONFIG_S3C2410		1	/* in a SAMSUNG S3C2410 SoC     */
++#define CONFIG_SMDK2410		1	/* on a SAMSUNG SMDK2410 Board  */
++
++/* input clock of PLL */
++#define CONFIG_SYS_CLK_FREQ	12000000/* the SMDK2410 has 12MHz input clock */
++
++
++#define USE_920T_MMU		1
++#define CONFIG_USE_IRQ		1
++//#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */
++
++/*
++ * Size of malloc() pool
++ */
++#define CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128*1024)
++#define CFG_GBL_DATA_SIZE	128	/* size in bytes reserved for initial data */
++
++/*
++ * Hardware drivers
++ */
++#define CONFIG_DRIVER_CS8900	1	/* we have a CS8900 on-board */
++#define CS8900_BASE		0x19000300
++#define CS8900_BUS16		1 /* the Linux driver does accesses as shorts */
++
++/*
++ * select serial console configuration
++ */
++#define CONFIG_SERIAL1          1	/* we use SERIAL 1 on SMDK2410 */
++#define CONFIG_HWFLOW		1
++
++/************************************************************
++ * RTC
++ ************************************************************/
++#define	CONFIG_RTC_S3C24X0	1
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++
++#define CONFIG_BAUDRATE		115200
++
++/***********************************************************
++ * Command definition
++ ***********************************************************/
++#define CONFIG_COMMANDS \
++			(CONFIG_CMD_DFL	 | \
++			CFG_CMD_BSP	 | \
++			CFG_CMD_CACHE	 | \
++			CFG_CMD_DATE	 | \
++			CFG_CMD_DHCP	 | \
++			CFG_CMD_DIAG	 | \
++			CFG_CMD_ELF	 | \
++			CFG_CMD_EXT2	 | \
++			CFG_CMD_FAT	 | \
++			CFG_CMD_HWFLOW	 | \
++			/* CFG_CMD_IDE	 | */ \
++			/* CFG_CMD_IRQ	 | */ \
++			CFG_CMD_JFFS2	 | \
++			CFG_CMD_MMC	 | \
++			CFG_CMD_NAND	 | \
++			CFG_CMD_PING	 | \
++			CFG_CMD_PORTIO	 | \
++			CFG_CMD_REGINFO  | \
++			CFG_CMD_SAVES	 | \
++			CFG_CMD_USB)
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#define CONFIG_BOOTDELAY	3
++#define CONFIG_BOOTARGS    	"root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
++/*#define CONFIG_ETHADDR	08:00:3e:26:0a:5b */
++#define CONFIG_NETMASK          255.255.255.0
++#define CONFIG_IPADDR		10.0.0.110
++#define CONFIG_SERVERIP		10.0.0.1
++/*#define CONFIG_BOOTFILE	"elinos-lart" */
++#define CONFIG_BOOTCOMMAND	"mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
++
++#define CONFIG_DOS_PARTITION	1
++
++#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
++#define CONFIG_KGDB_BAUDRATE	115200		/* speed to run kgdb serial port */
++/* what's this ? it's not used anywhere */
++#define CONFIG_KGDB_SER_INDEX	1		/* which serial port to use */
++#endif
++
++/*
++ * Miscellaneous configurable options
++ */
++#define	CFG_LONGHELP				/* undef to save memory		*/
++#define	CFG_PROMPT		"QT2410 # "	/* Monitor Command Prompt	*/
++#define	CFG_CBSIZE		256		/* Console I/O Buffer Size	*/
++#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++#define	CFG_MAXARGS		16		/* max number of command args	*/
++#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/
++
++#define CFG_MEMTEST_START	0x30000000	/* memtest works on	*/
++#define CFG_MEMTEST_END		0x33F00000	/* 63 MB in DRAM	*/
++
++#undef  CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */
++
++#define	CFG_LOAD_ADDR		0x33000000	/* default load address	*/
++
++/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
++/* it to wrap 100 times (total 1562500) to get 1 sec. */
++#define	CFG_HZ			1562500
++
++/* valid baudrates */
++#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
++
++/*-----------------------------------------------------------------------
++ * Stack sizes
++ *
++ * The stack sizes are set up in start.S using the settings below
++ */
++#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */
++#ifdef CONFIG_USE_IRQ
++#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */
++#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */
++#endif
++
++/* IDE/ATA config */
++
++#if 0
++#define CFG_IDE_MAXBUS		1
++#define CFG_IDE_MAXDEVICE	2
++#define CFG_IDE_PREINIT		0
++
++#define CFG_ATA_BASE_ADDR	
++#endif
++
++#define CONFIG_USB_OHCI		1
++
++/*-----------------------------------------------------------------------
++ * Physical Memory Map
++ */
++#define CONFIG_NR_DRAM_BANKS	1	   /* we have 1 bank of DRAM */
++#define PHYS_SDRAM_1		0x30000000 /* SDRAM Bank #1 */
++#define PHYS_SDRAM_1_SIZE	0x04000000 /* 64 MB */
++#define PHYS_SDRAM_RES_SIZE	0x00200000 /* 2 MB for frame buffer */
++
++#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */
++
++#define CFG_FLASH_BASE		PHYS_FLASH_1
++
++/*-----------------------------------------------------------------------
++ * FLASH and environment organization
++ */
++
++#define CONFIG_AMD_LV400	1	/* uncomment this if you have a LV400 flash */
++#if 0
++#define CONFIG_AMD_LV800	1	/* uncomment this if you have a LV800 flash */
++#endif
++
++#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks */
++#ifdef CONFIG_AMD_LV800
++#define PHYS_FLASH_SIZE		0x00100000 /* 1MB */
++#define CFG_MAX_FLASH_SECT	(19)	/* max number of sectors on one chip */
++#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
++#endif
++#ifdef CONFIG_AMD_LV400
++#define PHYS_FLASH_SIZE		0x00080000 /* 512KB */
++#define CFG_MAX_FLASH_SECT	(11)	/* max number of sectors on one chip */
++#define CFG_ENV_ADDR		(CFG_FLASH_BASE + 0x070000) /* addr of environment */
++#endif
++
++/* timeout values are in ticks */
++#define CFG_FLASH_ERASE_TOUT	(5*CFG_HZ) /* Timeout for Flash Erase */
++#define CFG_FLASH_WRITE_TOUT	(5*CFG_HZ) /* Timeout for Flash Write */
++
++#define	CFG_ENV_IS_IN_NAND	1
++#define CFG_ENV_SIZE		0x4000		/* 16k Total Size of Environment Sector */
++#define CFG_ENV_OFFSET		0x30000		/* environment after bootloader */
++
++#define NAND_MAX_CHIPS		1
++#define CFG_NAND_BASE		0x4e000000
++#define CFG_MAX_NAND_DEVICE	1
++
++#define CONFIG_MMC		1
++#define CFG_MMC_BASE		0xff000000
++
++#define CONFIG_EXT2		1
++
++/* FAT driver in u-boot is broken currently */
++#define CONFIG_FAT		1
++#define CONFIG_SUPPORT_VFAT
++
++/* ATAG configuration */
++#define CONFIG_INITRD_TAG		1
++#define CONFIG_SETUP_MEMORY_TAGS	1
++#define CONFIG_CMDLINE_TAG		1
++#if 0
++#define CONFIG_SERIAL_TAG		1
++#define CONFIG_REVISION_TAG		1
++#endif
++
++
++#if 0
++#define CONFIG_VIDEO
++#define CONFIG_VIDEO_S3C2410
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++
++#define VIDEO_KBD_INIT_FCT	0
++#define VIDEO_TSTC_FCT		serial_tstc
++#define VIDEO_GETC_FCT		serial_getc
++
++#define LCD_VIDEO_ADDR		0x33d00000
++#endif
++
++#endif	/* __CONFIG_H */
+diff --git a/include/s3c2410.h b/include/s3c2410.h
+index 86495f6..913521d 100644
+--- a/include/s3c2410.h
++++ b/include/s3c2410.h
+@@ -38,12 +38,6 @@ #define S3C24X0_SPI_CHANNELS	2
+ #define S3C2410_ECCSIZE		512
+ #define S3C2410_ECCBYTES	3
+ 
+-typedef enum {
+-	S3C24X0_UART0,
+-	S3C24X0_UART1,
+-	S3C24X0_UART2
+-} S3C24X0_UARTS_NR;
+-
+ /* S3C2410 device base addresses */
+ #define S3C24X0_MEMCTL_BASE		0x48000000
+ #define S3C24X0_USB_HOST_BASE		0x49000000
+@@ -65,9 +59,23 @@ #define S3C24X0_SPI_BASE		0x59000000
+ #define S3C2410_SDI_BASE		0x5A000000
+ 
+ 
++#define oNFCONF			0x00
++#define oNFCMD			0x04
++#define oNFADDR			0x08
++#define oNFDATA			0x0C
++#define oNFSTAT			0x10
++#define oNFECC			0x14
++
++#ifndef __ASSEMBLER__
++
+ /* include common stuff */
+ #include <s3c24x0.h>
+ 
++typedef enum {
++	S3C24X0_UART0,
++	S3C24X0_UART1,
++	S3C24X0_UART2
++} S3C24X0_UARTS_NR;
+ 
+ static inline S3C24X0_MEMCTL * const S3C24X0_GetBase_MEMCTL(void)
+ {
+@@ -142,6 +150,7 @@ static inline S3C2410_SDI * const S3C241
+ 	return (S3C2410_SDI * const)S3C2410_SDI_BASE;
+ }
+ 
++#endif
+ 
+ /* ISR */
+ #define pISR_RESET		(*(unsigned *)(_ISR_STARTADDRESS+0x0))
+diff --git a/include/s3c24x0.h b/include/s3c24x0.h
+index 71f35a5..557b91f 100644
+--- a/include/s3c24x0.h
++++ b/include/s3c24x0.h
+@@ -637,13 +637,7 @@ typedef struct {
+ 	S3C24X0_REG32	SDIDCNT;
+ 	S3C24X0_REG32	SDIDSTA;
+ 	S3C24X0_REG32	SDIFSTA;
+-#ifdef __BIG_ENDIAN
+-	S3C24X0_REG8	res[3];
+-	S3C24X0_REG8	SDIDAT;
+-#else
+-	S3C24X0_REG8	SDIDAT;
+-	S3C24X0_REG8	res[3];
+-#endif
++	S3C24X0_REG32	SDIDAT;
+ 	S3C24X0_REG32	SDIIMSK;
+ } /*__attribute__((__packed__))*/ S3C2410_SDI;
+ 
+@@ -1123,11 +1117,7 @@ #define rSDIDatCon		(*(volatile unsigned
+ #define rSDIDatCnt		(*(volatile unsigned *)0x5A000030)
+ #define rSDIDatSta		(*(volatile unsigned *)0x5A000034)
+ #define rSDIFSTA		(*(volatile unsigned *)0x5A000038)
+-#ifdef __BIG_ENDIAN
+-#define rSDIDAT			(*(volatile unsigned char *)0x5A00003F)
+-#else
+-#define rSDIDAT			(*(volatile unsigned char *)0x5A00003C)
+-#endif
++#define rSDIDAT			(*(volatile unsigned *)0x5A00003C)
+ #define rSDIIntMsk		(*(volatile unsigned *)0x5A000040)
+ 
+ #endif

Added: trunk/oe/packages/uboot/files/u-boot-20060807.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/oe/packages/uboot/files/u-boot-20060807.tar.bz2
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/oe/packages/uboot/files/u-boot-20060907.tar.bz2
===================================================================
(Binary files differ)


Property changes on: trunk/oe/packages/uboot/files/u-boot-20060907.tar.bz2
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060807.bb
===================================================================
--- trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060807.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060807.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,41 @@
+DESCRIPTION = "U-boot bootloader w/ armzone qt2410 support"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCDATE := "${PV}"
+PR = "r2"
+
+PROVIDES = "virtual/bootloader"
+S = "${WORKDIR}/u-boot"
+
+SRC_URI = "file://u-boot-20060807.tar.bz2 \
+           file://u-boot-20060807-qt2410.patch;patch=1 \
+           file://qt2410_*.h"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+TARGET_LDFLAGS = ""
+UBOOT_MACHINE = "qt2410_config"
+
+inherit base
+
+do_compile () {
+	for type in nand ram
+	do
+		install -m 0644 ${WORKDIR}/qt2410_${type}.h include/configs/qt2410.h
+		oe_runmake ${UBOOT_MACHINE}
+		oe_runmake all
+		mv u-boot.bin u-boot_$type.bin
+	done
+}
+
+do_deploy () {
+	install -d ${DEPLOY_DIR_IMAGE}
+	for type in nand ram
+	do
+		install ${S}/u-boot_$type.bin ${DEPLOY_DIR_IMAGE}/u-boot_$type-${MACHINE}-${DATETIME}.bin
+	done
+	install -m 0755 tools/mkimage ${STAGING_BINDIR}/uboot-mkimage
+}
+
+do_deploy[dirs] = "${S}"
+addtask deploy before do_build after do_compile

Added: trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060907.bb
===================================================================
--- trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060907.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uboot/uboot-qt2410_0.0+cvs20060907.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,40 @@
+DESCRIPTION = "U-boot bootloader w/ armzone qt2410 support"
+SECTION = "bootloader"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCDATE := "${PV}"
+PR = "r0"
+
+PROVIDES = "virtual/bootloader"
+S = "${WORKDIR}/u-boot"
+
+SRC_URI = "file://u-boot-20060907.tar.bz2 \
+           file://qt2410_*.h"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+TARGET_LDFLAGS = ""
+UBOOT_MACHINE = "qt2410_config"
+
+inherit base
+
+do_compile () {
+	for type in nand ram
+	do
+		install -m 0644 ${WORKDIR}/qt2410_${type}.h include/configs/qt2410.h
+		oe_runmake ${UBOOT_MACHINE}
+		oe_runmake all
+		mv u-boot.bin u-boot_$type.bin
+	done
+}
+
+do_deploy () {
+	install -d ${DEPLOY_DIR_IMAGE}
+	for type in nand ram
+	do
+		install ${S}/u-boot_$type.bin ${DEPLOY_DIR_IMAGE}/u-boot_$type-${MACHINE}-${DATETIME}.bin
+	done
+	install -m 0755 tools/mkimage ${STAGING_BINDIR}/uboot-mkimage
+}
+
+do_deploy[dirs] = "${S}"
+addtask deploy before do_build after do_compile

Added: trunk/oe/packages/uucp/uucp_1.07.bb
===================================================================
--- trunk/oe/packages/uucp/uucp_1.07.bb	2006-09-06 18:37:38 UTC (rev 43)
+++ trunk/oe/packages/uucp/uucp_1.07.bb	2006-09-08 06:42:04 UTC (rev 44)
@@ -0,0 +1,16 @@
+DESCRIPTION = "Unix to Unix Copy"
+HOMEPAGE = "http://www.airs.com/ian/uucp.html"
+SECTION = "console/utils"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/uucp/uucp-${PV}.tar.gz"
+S = "${WORKDIR}/uucp-${PV}"
+
+inherit autotools
+
+
+do_configure() {
+	gnu-configize
+	oe_runconf
+}





More information about the commitlog mailing list