--- gnalm/Makefile.orig	2004-04-07 17:53:32.000000000 -0700
+++ gumstix/Makefile	2004-04-07 17:53:44.000000000 -0700
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 5
-EXTRAVERSION = -gnalm1
+EXTRAVERSION = -gnalm1-gum0
 NAME=Zonked Quokka
 
 # *DOCUMENTATION*
--- a/kernel/panic.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/kernel/panic.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -20,7 +20,7 @@
 #include <linux/interrupt.h>
 #include <linux/nmi.h>
 
-int panic_timeout;
+int panic_timeout = 2;
 int panic_on_oops;
 int tainted;
 
--- a/include/asm-arm/arch-pxa/hardware.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/asm-arm/arch-pxa/hardware.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -99,8 +99,12 @@
 /*
  * Implementation specifics
  */
+#ifdef	CONFIG_ARCH_GUMSTIK
+#include "gumstik.h"
+#else
+#include "lubbock.h"
+#endif
 
-#include "lubbock.h"
 #include "idp.h"
 
 #endif  /* _ASM_ARCH_HARDWARE_H */
--- a/include/asm-arm/arch-pxa/irqs.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/asm-arm/arch-pxa/irqs.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -55,7 +55,7 @@
  * these.  If you need more, increase IRQ_BOARD_END, but keep it
  * within sensible limits.
  */
-#define IRQ_BOARD_START		(IRQ_GPIO(80) + 1)
+#define IRQ_BOARD_START		(IRQ_GPIO(84) + 1)
 #define IRQ_BOARD_END		(IRQ_BOARD_START + 16)
 
 #define IRQ_SA1111_START	(IRQ_BOARD_END)
@@ -120,6 +120,8 @@
 #define NR_IRQS			(IRQ_S1_BVD1_STSCHG + 1)
 #elif defined(CONFIG_ARCH_LUBBOCK)
 #define NR_IRQS			(IRQ_BOARD_END)
+#elif defined(CONFIG_ARCH_GUMSTIX)
+#define NR_IRQS			(IRQ_BOARD_START + 2)
 #else
 #define NR_IRQS			(IRQ_BOARD_START)
 #endif
@@ -138,3 +140,14 @@
 #define LUBBOCK_USB_DISC_IRQ	LUBBOCK_IRQ(6)  /* usb disconnect */
 #define LUBBOCK_LAST_IRQ	LUBBOCK_IRQ(6)
 
+/*
+ * The Original Gumstik Platform
+ */
+#if 0
+#define GUMSTIK_IRQ(x)          (IRQ_BOARD_START + (x))
+#define GUMSTIK_USB_CONN_IRQ	GUMSTIK_IRQ(0)	/* usb connect */
+#define GUMSTIK_USB_DISC_IRQ	GUMSTIK_IRQ(1)	/* usb disconnect */
+#define GUMSTIK_LAST_IRQ	GUMSTIK_IRQ(1)
+#endif
+#define GUMSTIK_USB_INTR_IRQ	IRQ_GPIO(81)	/* usb state change */
+
--- a/include/asm-arm/arch-pxa/gumstik.h	(revision 0)
+++ b/include/asm-arm/arch-pxa/gumstik.h	(revision 130)
@@ -0,0 +1,19 @@
+/*
+ *  linux/include/asm-arm/arch-pxa/GUMSTIK.h
+ *
+ *  Author:	Nicolas Pitre
+ *  Created:	Jun 15, 2001
+ *  Copyright:	MontaVista Software Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* GPIOn - Input from MAX823 (or equiv), normalizing USB +5V 
+     into a clean interrupt signal for determining cable presence */
+#define GPIO_GUMSTIK_USB_GPIOn        81     
+/* GPIOx - Connects to USD D+ and used as a pull-up after GPIOn 
+     has detected a cable insertion; driven low otherwise. */
+#define GPIO_GUMSTIK_USB_GPIOx        83     
+
--- a/include/asm-arm/arch-pxa/pxa-regs.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/asm-arm/arch-pxa/pxa-regs.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -1007,11 +1007,13 @@
 #define GPIO46_STRXD_MD		(46 | GPIO_ALT_FN_2_IN)
 #define GPIO47_ICPTXD_MD	(47 | GPIO_ALT_FN_2_OUT)
 #define GPIO47_STTXD_MD		(47 | GPIO_ALT_FN_1_OUT)
-#define GPIO48_nPOE_MD		(48 | GPIO_ALT_FN_2_OUT)
+#define GPIO48_HWTXD_MD         (48 | GPIO_ALT_FN_1_OUT)
+#define GPIO48_nPOE_MD          (48 | GPIO_ALT_FN_2_OUT)
+#define GPIO49_HWRXD_MD		(49 | GPIO_ALT_FN_1_OUT)
 #define GPIO49_nPWE_MD		(49 | GPIO_ALT_FN_2_OUT)
-#define GPIO50_nPIOR_MD		(50 | GPIO_ALT_FN_2_OUT)
+#define GPIO50_HWCTS_MD         (50 | GPIO_ALT_FN_1_OUT)
+#define GPIO51_HWRTS_MD         (51 | GPIO_ALT_FN_1_OUT)
 #define GPIO51_nPIOW_MD		(51 | GPIO_ALT_FN_2_OUT)
-#define GPIO52_nPCE_1_MD	(52 | GPIO_ALT_FN_2_OUT)
 #define GPIO53_nPCE_2_MD	(53 | GPIO_ALT_FN_2_OUT)
 #define GPIO53_MMCCLK_MD	(53 | GPIO_ALT_FN_1_OUT)
 #define GPIO54_MMCCLK_MD	(54 | GPIO_ALT_FN_1_OUT)
--- a/include/linux/serial.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/linux/serial.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -81,6 +81,17 @@
 #define SERIAL_IO_HUB6	1
 #define SERIAL_IO_MEM	2
 
+struct serial_uart_config {
+	char	*name;
+	int	dfl_xmit_fifo_size;
+	int	flags;
+};
+
+#define UART_CLEAR_FIFO		0x01
+#define UART_USE_FIFO		0x02
+#define UART_STARTECH		0x04
+#define UART_NATSEMI		0x08
+
 /*
  * Definitions for async_struct (and serial_struct) flags field
  */
--- a/include/linux/major.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/linux/major.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -55,6 +55,8 @@
 #define ACSI_MAJOR		28
 #define AZTECH_CDROM_MAJOR	29
 #define GRAPHDEV_MAJOR		29   /* SparcLinux & Linux/68k /dev/fb */
+#define MTD_CHAR_MAJOR		90
+#define MTD_BLOCK_MAJOR		31
 #define CM206_CDROM_MAJOR	32
 #define IDE2_MAJOR		33
 #define IDE3_MAJOR		34
--- a/include/linux/serial_reg.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/linux/serial_reg.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -121,7 +121,6 @@
 /*
  * These are the definitions for the Modem Control Register
  */
-#define UART_MCR_AFE	0x20	/* Enable auto-RTS/CTS (TI16C750) */
 #define UART_MCR_LOOP	0x10	/* Enable loopback test mode */
 #define UART_MCR_OUT2	0x08	/* Out2 complement */
 #define UART_MCR_OUT1	0x04	/* Out1 complement */
--- a/include/linux/serial_core.h	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/include/linux/serial_core.h	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- *  $Id: serial_core.h,v 1.53 2002/08/02 12:55:08 rmk Exp $
+ *  $Id: serial_core.h,v 1.49 2002/07/20 18:06:32 rmk Exp $
  */
 
 /*
@@ -159,6 +159,8 @@
 	spinlock_t		lock;			/* port lock */
 	unsigned int		iobase;			/* in/out[bwl] */
 	char			*membase;		/* read/write[bwl] */
+	unsigned int		irq;			/* irq number */
+	unsigned int		uartclk;		/* base uart clock */
 	unsigned char		fifosize;		/* tx fifo size */
 	unsigned char		x_char;			/* xon/xoff char */
 	unsigned char		regshift;		/* reg offset shift */
@@ -170,7 +172,6 @@
 
 	unsigned int		read_status_mask;	/* driver specific */
 	unsigned int		ignore_status_mask;	/* driver specific */
-
 	struct uart_info	*info;			/* pointer to parent info */
 	struct uart_icount	icount;			/* statistics */
 
@@ -181,6 +182,7 @@
 
 	unsigned int		flags;
 
+#define UPF_HUP_NOTIFY		(1 << 0)
 #define UPF_FOURPORT		(1 << 1)
 #define UPF_SAK			(1 << 2)
 #define UPF_SPD_MASK		(0x1030)
@@ -210,12 +212,9 @@
 	unsigned int		timeout;		/* character-based timeout */
 	unsigned int		type;			/* port type */
 	struct uart_ops		*ops;
-	unsigned int		uartclk;		/* base uart clock */
 	unsigned int		custom_divisor;
-	unsigned int		irq;			/* irq number */
 	unsigned int		line;			/* port index */
 	unsigned long		mapbase;		/* for ioremap */
-	struct device		*dev;			/* parent device */
 	unsigned char		hub6;			/* this should be in the 8250 driver */
 	unsigned char		unused[3];
 };
--- a/scripts/mkuboot.sh	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/scripts/mkuboot.sh	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -3,14 +3,17 @@
 #
 # Build U-Boot image when `mkimage' tool is available.
 #
+arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
+gzip -c -9 linux.bin >linux.bin.gz
+/usr/local/u-boot/tools/mkimage -A arm -O linux -T kernel -C gzip -a 0xa0008000 -e 0xa0008000 -n "uImage" -d linux.bin.gz uImage
 
-MKIMAGE=$(type -path mkimage)
+#MKIMAGE=$(type -path mkimage)
 
-if [ -z "${MKIMAGE}" ]; then
-	# Doesn't exist
-	echo '"mkimage" command not found - U-Boot images will not be built' >&2
-	exit 0;
-fi
+#if [ -z "${MKIMAGE}" ]; then
+#	# Doesn't exist
+#	echo '"mkimage" command not found - U-Boot images will not be built' >&2
+#	exit 0;
+#fi
 
 # Call "mkimage" to create U-Boot image
-${MKIMAGE} "$@"
+#${MKIMAGE} "$@"
--- a/arch/arm/configs/gumstix_defconfig	(revision 0)
+++ b/arch/arm/configs/gumstix_defconfig	(revision 130)
@@ -0,0 +1,777 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_STANDALONE=y
+CONFIG_BROKEN_ON_SMP=y
+
+#
+# General setup
+#
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_HOTPLUG is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+
+#
+# Loadable module support
+#
+# CONFIG_MODULES is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ADIFCC is not set
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_SHARK is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+
+#
+# Epxa10db
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# IOP3xx Implementation Options
+#
+# CONFIG_ARCH_IOP310 is not set
+# CONFIG_ARCH_IOP321 is not set
+
+#
+# IOP3xx Chipset Features
+#
+
+#
+# Intel PXA250/210 Implementations
+#
+CONFIG_ARCH_GUMSTIK=y
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_ARCH_PXA_IDP is not set
+
+#
+# SA11x0 Implementations
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_MINICACHE=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# General setup
+#
+# CONFIG_ZBOOT_ROM is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CPU_FREQ=y
+
+#
+# At least one math emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+CONFIG_FPE_FASTFPE=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Generic Driver Options
+#
+CONFIG_PM=y
+# CONFIG_PREEMPT is not set
+# CONFIG_APM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="root=/dev/ram0 console=tty0,115200n8"
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_CONCAT=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+
+#
+# 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_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x00180000
+CONFIG_MTD_PHYSMAP_LEN=0x00280000
+CONFIG_MTD_PHYSMAP_BUSWIDTH=2
+CONFIG_MTD_GUMSTIK=y
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_EDB7312 is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLKMTD=y
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=36000
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_IPV6 is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NETFILTER is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_ASYNC is not set
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPPOE is not set
+CONFIG_SLIP=y
+# CONFIG_SLIP_COMPRESSED is not set
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# Bluetooth support
+#
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_SCSI is not set
+
+#
+# Fusion MPT device support
+#
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_TSLIBDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input I/O drivers
+#
+# CONFIG_GAMEPORT is not set
+CONFIG_SOUND_GAMEPORT=y
+# CONFIG_SERIO is not set
+# CONFIG_SERIO_I8042 is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_QIC02_TAPE is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+CONFIG_I2C_ALGOPXA=y
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_ISA is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_PXA2XX=y
+# CONFIG_SCx200_ACB is not set
+
+#
+# Hardware Sensors Chip support
+#
+# CONFIG_I2C_SENSOR is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM75 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_LM90 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+
+#
+# Other I2C Chip support
+#
+# CONFIG_SENSORS_EEPROM 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
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY 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_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+CONFIG_DEVPTS_FS_XATTR=y
+# CONFIG_DEVPTS_FS_SECURITY is not set
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_JFFS2_FS_NAND 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+# CONFIG_EXPORTFS is not set
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 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_INTERMEZZO_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_NEC98_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+
+#
+# Console Switches
+#
+# CONFIG_SWITCHES is not set
+
+#
+# USB support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+CONFIG_USB_PXA2XX_SMALL=y
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_SA1100 is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_KERNEL is not set
+
+#
+# Security options
+#
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_CRC32=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
--- a/arch/arm/mach-pxa/Kconfig	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/arch/arm/mach-pxa/Kconfig	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -1,6 +1,10 @@
 
 menu "Intel PXA250/210 Implementations"
 
+config ARCH_GUMSTIK
+        bool "Gumstix First One"
+        depends on ARCH_PXA
+
 config ARCH_LUBBOCK
 	bool "Intel DBPXA250 Development Platform"
 	depends on ARCH_PXA
--- a/arch/arm/mach-pxa/gumstik.c	(revision 0)
+++ b/arch/arm/mach-pxa/gumstik.c	(revision 130)
@@ -0,0 +1,109 @@
+/*
+ *  linux/arch/arm/mach-pxa/gumstik.c
+ *
+ *  Support for the Intel DBPXA250 Development Platform.
+ *
+ *  Author:	Nicolas Pitre
+ *  Created:	Jun 15, 2001
+ *  Copyright:	MontaVista Software Inc.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/major.h>
+#include <linux/fs.h>
+#include <linux/interrupt.h>
+
+#include <asm/setup.h>
+#include <asm/memory.h>
+#include <asm/mach-types.h>
+#include <asm/hardware.h>
+#include <asm/irq.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/irq.h>
+
+#include <asm/arch/irq.h>
+#include <asm/arch/udc.h>
+#include "generic.h"
+
+static void __init gumstik_init_irq(void)
+{
+        pxa_init_irq();
+        set_irq_type( GUMSTIK_USB_INTR_IRQ, IRQT_RISING | IRQT_FALLING );
+}
+
+static int gumstik_udc_is_connected(void)
+{
+	int nbit = GPIO_GUMSTIK_USB_GPIOn;
+	return !! ( GPLR( nbit ) & GPIO_bit( nbit ) ) ;
+}
+
+static void gumstik_udc_command(int connect_command)
+{
+	__u32 xbit = GPIO_bit( GPIO_GUMSTIK_USB_GPIOx );
+	if (connect_command == PXA2XX_UDC_CMD_CONNECT) {
+		pxa_gpio_mode ( GPIO_GUMSTIK_USB_GPIOx | GPIO_OUT );
+		GPSR ( GPIO_GUMSTIK_USB_GPIOx ) = xbit;
+	}
+	if (connect_command == PXA2XX_UDC_CMD_DISCONNECT) {
+		GPCR ( GPIO_GUMSTIK_USB_GPIOx ) = xbit;
+		pxa_gpio_mode ( GPIO_GUMSTIK_USB_GPIOx | GPIO_IN );
+	}
+}
+
+static struct pxa2xx_udc_mach_info udc_info __initdata = {
+        .udc_is_connected      = gumstik_udc_is_connected,
+        .udc_command	       = gumstik_udc_command,
+};
+
+static void __init gumstik_init(void)
+{
+        pxa_set_udc_info(&udc_info);
+}
+
+static void __init gumstik_map_io(void)
+{
+	pxa_map_io();
+
+        /* This enables the HWUART */
+        CKEN |= CKEN4_HWUART;
+        pxa_gpio_mode(GPIO48_HWTXD_MD);
+        pxa_gpio_mode(GPIO49_HWRXD_MD);
+        pxa_gpio_mode(GPIO50_HWCTS_MD);
+        pxa_gpio_mode(GPIO51_HWRTS_MD);
+
+	/* This enables the BTUART */
+	CKEN |= CKEN7_BTUART;
+	pxa_gpio_mode(GPIO42_BTRXD_MD);
+	pxa_gpio_mode(GPIO43_BTTXD_MD);
+	pxa_gpio_mode(GPIO44_BTCTS_MD);
+	pxa_gpio_mode(GPIO45_BTRTS_MD);
+
+	/* while these pins default to inputs, explicitly initialize them */
+	pxa_gpio_mode ( GPIO_GUMSTIK_USB_GPIOn | GPIO_IN );
+	pxa_gpio_mode ( GPIO_GUMSTIK_USB_GPIOx | GPIO_IN );
+
+	/* setup sleep mode values */
+	PWER  = 0x00000002;
+	PFER  = 0x00000000;
+	PRER  = 0x00000002;
+	PGSR0 = 0x00008000;
+	PGSR1 = 0x003F0202;
+	PGSR2 = 0x0001C000;
+	PCFR |= PCFR_OPDE;
+}
+
+MACHINE_START(GUMSTIK, "The Original Gumstix Platform")
+	MAINTAINER("Gumstix, Inc. <gumstix-users@lists.sourceforge.net")
+	BOOT_PARAMS(0xa0000100)
+	BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
+	MAPIO(gumstik_map_io)
+	INITIRQ(gumstik_init_irq)
+	INIT_MACHINE(gumstik_init)
+MACHINE_END
--- a/arch/arm/mach-pxa/irq.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/arch/arm/mach-pxa/irq.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -238,7 +238,7 @@
 		set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
 	}
 
-	for (irq = IRQ_GPIO(2); irq <= IRQ_GPIO(80); irq++) {
+	for (irq = IRQ_GPIO(2); irq <= IRQ_GPIO(84); irq++) {
 		set_irq_chip(irq, &pxa_muxed_gpio_chip);
 		set_irq_handler(irq, do_edge_IRQ);
 		set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
--- a/arch/arm/mach-pxa/Makefile	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/arch/arm/mach-pxa/Makefile	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -6,6 +6,7 @@
 obj-y += generic.o irq.o dma.o
 
 # Specific board support
+obj-$(CONFIG_ARCH_GUMSTIK) += gumstik.o
 obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o
 obj-$(CONFIG_ARCH_PXA_IDP) += idp.o
 
--- a/drivers/media/mmc/Kconfig	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/media/mmc/Kconfig	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -19,6 +19,11 @@
 	  This is an option for use by developers; most people should
 	  say N here.  This enables MMC core and driver debugging.
 
+config MMC_DEBUG_VERBOSE
+	int "MMC debugging verbosity (0=quiet, 3=noisy)"
+	depends on MMC_DEBUG
+
+
 config MMC_BLOCK
 	tristate "MMC block device driver"
 	depends on MMC
--- a/drivers/media/mmc/mmc_queue.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/media/mmc/mmc_queue.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -63,7 +63,7 @@
 	 * Set iothread to ensure that we aren't put to sleep by
 	 * the process freezing.  We handle suspension ourselves.
 	 */
-	current->flags |= PF_MEMALLOC|PF_IOTHREAD;
+	current->flags |= PF_MEMALLOC;
 
 	daemonize("mmcqd");
 
@@ -145,7 +145,7 @@
 	init_completion(&mq->thread_complete);
 	init_waitqueue_head(&mq->thread_wq);
 
-	ret = kernel_thread(mmc_queue_thread, mq, CLONE_KERNEL);
+	ret = kernel_thread(mmc_queue_thread, mq, CLONE_FS|CLONE_FILES|CLONE_SIGHAND);  //CLONE_KERNEL);
 	if (ret < 0) {
 		blk_cleanup_queue(mq->queue);
 	} else {
--- a/drivers/media/mmc/pxamci.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/media/mmc/pxamci.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -13,7 +13,7 @@
  *	1 and 3 byte data transfers not supported
  *	max block length up to 1023
  */
-#include <linux/config.h>
+//	#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
@@ -24,10 +24,11 @@
 #include <linux/mmc/host.h>
 #include <linux/mmc/protocol.h>
 
-#include <asm/dma.h>
+#include <asm/arch/dma.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/sizes.h>
+#include <asm/types.h>
 
 #include "pxamci.h"
 
@@ -54,7 +55,7 @@
 	struct mmc_data		*data;
 
 	dma_addr_t		sg_dma;
-	struct pxa_dma_desc	*sg_cpu;
+	pxa_dma_desc	*sg_cpu;
 
 	dma_addr_t		dma_buf;
 	unsigned int		dma_size;
@@ -173,7 +174,7 @@
 
 		if (size) {
 			host->sg_cpu[i].ddadr = host->sg_dma + (i + 1) *
-						 sizeof(struct pxa_dma_desc);
+						 sizeof(pxa_dma_desc);
 		} else {
 			host->sg_cpu[i].ddadr = DDADR_STOP;
 		}
@@ -271,6 +272,7 @@
 
 	if (!data)
 		return 0;
+	data->bytes_xfered = host->dma_size;
 
 	DCSR(host->dma) = 0;
 	dma_unmap_single(host->mmc.dev, host->dma_buf, host->dma_size,
@@ -281,8 +283,8 @@
 	else if (stat & (STAT_CRC_READ_ERROR|STAT_CRC_WRITE_ERROR))
 		data->error = MMC_ERR_BADCRC;
 
-	data->bytes_xfered = (data->blocks - readl(host->base + MMC_NOB))
-			       << data->blksz_bits;
+//	data->bytes_xfered = (data->blocks - readl(host->base + MMC_NOB))
+//			       << data->blksz_bits;
 
 	pxamci_disable_irq(host, DATA_TRAN_DONE);
 
--- a/drivers/media/mmc/mmc_sysfs.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/media/mmc/mmc_sysfs.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -16,7 +16,7 @@
 #include <linux/mmc/card.h>
 #include <linux/mmc/host.h>
 
-#include "mmc.h"
+//	#include "mmc.h"
 
 #define dev_to_mmc_card(d)	container_of(d, struct mmc_card, dev)
 #define to_mmc_driver(d)	container_of(d, struct mmc_driver, drv)
--- a/drivers/media/mmc/mmci.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/media/mmc/mmci.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -122,7 +122,7 @@
 		host->data = NULL;
 		if (!data->stop) {
 			mmci_request_end(host, data->req);
-		} else /*if (readl(host->base + MMCIDATACNT) > 6)*/ {
+		} else if (readl(host->base + MMCIDATACNT) > 6) {
 			mmci_start_command(host, data->stop, 0);
 		}
 	}
@@ -147,8 +147,10 @@
 
 	if (!cmd->data || cmd->error != MMC_ERR_NONE) {
 		mmci_request_end(host, cmd->req);
-	} else if (!(cmd->data->flags & MMC_DATA_READ)) {
-		mmci_start_data(host, cmd->data);
+        } else if (cmd->data && cmd->data->stop) {
+                mmci_start_command(host, cmd->data->stop, MCI_CPSM_PENDING);
+//	} else if (!(cmd->data->flags & MMC_DATA_READ)) {
+//		mmci_start_data(host, cmd->data);
 	}
 }
 
@@ -161,19 +163,23 @@
 	do {
 		struct mmc_command *cmd;
 		struct mmc_data *data;
+                int count;
 
 		status = readl(host->base + MMCISTATUS);
 		writel(status, host->base + MMCICLEAR);
 
-		if (!(status & MCI_IRQMASK))
+                if (!status)
 			break;
 
 		DBG("MMCI: irq %08x\n", status);
 
-		if (status & (MCI_RXDATAAVLBL|MCI_RXFIFOHALFFULL)) {
-			int count = host->size - (readl(host->base + MMCIFIFOCNT) << 2);
-			if (count < 0)
 				count = 0;
+                if (status & MCI_RXDATAAVLBL) {
+                        count = 4;
+                        if (status & MCI_RXFIFOHALFFULL)
+                                count = 32;
+                        if (count > host->size)
+                                count = host->size;
 			if (count && host->buffer) {
 				readsl(host->base + MMCIFIFO, host->buffer, count >> 2);
 				host->buffer += count;
@@ -181,32 +187,9 @@
 				if (host->size == 0)
 					host->buffer = NULL;
 			} else {
-				static int first = 1;
-				if (first) {
-					first = 0;
-					printk(KERN_ERR "MMCI: sinking excessive data\n");
-				}
 				readl(host->base + MMCIFIFO);
 			}
 		}
-		if (status & (MCI_TXFIFOEMPTY|MCI_TXFIFOHALFEMPTY)) {
-			int count = host->size;
-			if (count > MCI_FIFOHALFSIZE)
-				count = MCI_FIFOHALFSIZE;
-			if (count && host->buffer) {
-				writesl(host->base + MMCIFIFO, host->buffer, count >> 2);
-				host->buffer += count;
-				host->size -= count;
-				if (host->size == 0)
-					host->buffer = NULL;
-			} else {
-				static int first = 1;
-				if (first) {
-					first = 0;
-					printk(KERN_ERR "MMCI: ran out of source data\n");
-				}
-			}
-		}
 
 		data = host->data;
 		if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|
--- a/drivers/media/mmc/mmc_block.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/media/mmc/mmc_block.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -206,16 +206,16 @@
 		rq.stop.flags = MMC_RSP_SHORT | MMC_RSP_CRC | MMC_RSP_BUSY;
 
 		if (rq_data_dir(req) == READ) {
-			rq.cmd.opcode = rq.data.blocks > 1 ? MMC_READ_MULTIPLE_BLOCK : MMC_READ_SINGLE_BLOCK;
 			rq.data.flags |= MMC_DATA_READ;
+			rq.data.blocks	= req->current_nr_sectors >> (md->block_bits - 9);
+			 rq.cmd.opcode = rq.data.blocks > 1 ? MMC_READ_MULTIPLE_BLOCK : MMC_READ_SINGLE_BLOCK;
+			rq.req.stop	= rq.data.blocks > 1 ? &rq.stop : NULL;
 		} else {
 			rq.cmd.opcode = MMC_WRITE_BLOCK;
 			rq.cmd.flags |= MMC_RSP_BUSY;
 			rq.data.flags |= MMC_DATA_WRITE;
-			rq.data.blocks = 1;
+			rq.data.blocks = req->current_nr_sectors >> (md->block_bits - 9); //	1;
 		}
-		rq.req.stop = rq.data.blocks > 1 ? &rq.stop : NULL;
-
 		mmc_wait_for_req(card->host, &rq.req);
 		if (rq.cmd.error) {
 			err = rq.cmd.error;
@@ -259,7 +259,11 @@
 		if (err)
 			goto cmd_err;
 #endif
-
+		err = rq.data.error;
+		if (err) {
+			printk("error %d transferring data\n", err);
+			goto cmd_err;
+		}
 		sz = rq.data.bytes_xfered;
 	} while (end_that_request_chunk(req, 1, sz));
 
--- a/drivers/serial/sa1100.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/serial/sa1100.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -448,15 +448,6 @@
 	unsigned int old_csize = old ? old->c_cflag & CSIZE : CS8;
 
 	/*
-	 * If we don't support modem control lines, don't allow
-	 * these to be set.
-	 */
-	if (0) {
-		termios->c_cflag &= ~(HUPCL | CRTSCTS | CMSPAR);
-		termios->c_cflag |= CLOCAL;
-	}
-
-	/*
 	 * We only support CS7 and CS8.
 	 */
 	while ((termios->c_cflag & CSIZE) != CS7 &&
@@ -903,7 +894,6 @@
 			if (sa1100_ports[i].port.mapbase != res->start)
 				continue;
 
-			sa1100_ports[i].port.dev = _dev;
 			uart_add_one_port(&sa1100_reg, &sa1100_ports[i].port);
 			dev_set_drvdata(_dev, &sa1100_ports[i]);
 			break;
--- a/drivers/mtd/maps/Kconfig	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/mtd/maps/Kconfig	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -106,6 +106,14 @@
 	  devices. This board utilizes Intel StrataFlash. More info at
 	  <http://www.arcomcontrols.com/products/icp/pc104/processors/>.
 
+config MTD_GUMSTIK
+        tristate "CFI Flash device mapped the gumstix "
+        depends on ARCH_GUMSTIK && MTD_CFI_INTELEXT && MTD_PARTITIONS
+        help
+          This provides a driver for the on-board flash of the Intel
+          'Lubbock' XScale evaluation board.
+
+
 config MTD_LUBBOCK
 	tristate "CFI Flash device mapped on Intel Lubbock XScale eval board"
 	depends on ARCH_LUBBOCK && MTD_CFI_INTELEXT && MTD_PARTITIONS
--- a/drivers/mtd/maps/Makefile	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/mtd/maps/Makefile	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -57,3 +57,5 @@
 obj-$(CONFIG_MTD_BEECH)		+= beech-mtd.o
 obj-$(CONFIG_MTD_ARCTIC)	+= arctic-mtd.o
 obj-$(CONFIG_MTD_H720X)		+= h720x-flash.o
+obj-$(CONFIG_MTD_GUMSTIK)       += gumstik-flash.o
+
--- a/drivers/mtd/maps/gumstik-flash.c	(revision 0)
+++ b/drivers/mtd/maps/gumstik-flash.c	(revision 130)
@@ -0,0 +1,190 @@
+/*
+ * $Id: gumstik-flash.c,v 1.9 2003/06/23 11:48:18 dwmw2 Exp $
+ *
+ * Map driver for the Lubbock developer platform.
+ *
+ * Author:	Nicolas Pitre
+ * Copyright:	(C) 2001 MontaVista Software Inc.
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <asm/io.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/partitions.h>
+#include <asm/hardware.h>
+
+#define WINDOW_SIZE    64*1024*1024
+#define FLASH_ADDR	0x00000000
+
+static struct map_info gumstik_maps[1] = { {
+        .size =         WINDOW_SIZE,
+        .phys =         0x00000000,
+} };
+
+
+static struct mtd_partition gumstik_partitions[] = {
+	{
+		.name =		"Bootloader",
+		.size =		0x00040000,
+		.offset =	0x00000000,
+		.mask_flags =	MTD_WRITEABLE  /* force read-only */
+	},{
+		.name =		"Kernel",
+		.size =		0x00100000,
+		.offset =	0x00040000,
+                .mask_flags =   MTD_WRITEABLE  /* force read-only */
+        },{
+		.name =		"Filesystem",
+		.size =		MTDPART_SIZ_FULL,
+		.offset =	0x00140000,
+	}
+};
+
+
+static struct mtd_info *mymtds[2];
+static struct mtd_partition *parsed_parts[2];
+static int nr_parsed_parts[2];
+
+static const char *probes[] = { NULL };
+
+static int __init gumstik_mtd_probe(struct device *dev)
+{
+	int ret = 0, i;
+	
+	gumstik_maps[0].buswidth = 2; 
+
+	for (i = 0; i < 1; i++) {
+		gumstik_maps[i].virt = (unsigned long)ioremap(gumstik_maps[i].phys, WINDOW_SIZE);
+		if (!gumstik_maps[i].virt) {
+			printk(KERN_WARNING "Failed to ioremap %s\n", gumstik_maps[i].name);
+			if (!ret)
+				ret = -ENOMEM;
+			continue;
+		}
+		simple_map_init(&gumstik_maps[i]);
+
+		printk(KERN_NOTICE "Probing %s at physical address 0x%08lx (%d-bit buswidth)\n",
+		       gumstik_maps[i].name, gumstik_maps[i].phys, 
+		       gumstik_maps[i].buswidth * 8);
+
+		mymtds[i] = do_map_probe("cfi_probe", &gumstik_maps[i]);
+		
+		if (!mymtds[i]) {
+			iounmap((void *)gumstik_maps[i].virt);
+			if (!ret)
+				ret = -EIO;
+			continue;
+		}
+		mymtds[i]->owner = THIS_MODULE;
+
+		ret = parse_mtd_partitions(mymtds[i], probes,
+					   &parsed_parts[i], 0);
+
+		if (ret > 0)
+			nr_parsed_parts[i] = ret;
+	}
+
+	if (!mymtds) return ret;
+	
+	for (i = 0; i < 1; i++) {
+		if (!mymtds[i]) {
+			printk(KERN_WARNING "%s is absent. Skipping\n", gumstik_maps[i].name);
+		} else if (nr_parsed_parts[i]) {
+			add_mtd_partitions(mymtds[i], parsed_parts[i], nr_parsed_parts[i]);
+		} else if (!i) {
+			printk("Using static partitions on %s\n", gumstik_maps[i].name);
+			add_mtd_partitions(mymtds[i], gumstik_partitions, ARRAY_SIZE(gumstik_partitions));
+		} else {
+			printk("Registering %s as whole device\n", gumstik_maps[i].name);
+			add_mtd_device(mymtds[i]);
+		}
+	}
+	dev_set_drvdata(dev, mymtds);
+	return 0;
+}
+
+static void __exit gumstik_mtd_remove(void)
+{
+	int i;
+	for (i = 0; i < 1; i++) {
+		if (!mymtds[i])
+			continue;
+
+		if (nr_parsed_parts[i] || !i)
+			del_mtd_partitions(mymtds[i]);
+		else
+			del_mtd_device(mymtds[i]);			
+
+		map_destroy(mymtds[i]);
+		iounmap((void *)gumstik_maps[i].virt);
+
+		if (parsed_parts[i])
+			kfree(parsed_parts[i]);
+	}
+}
+
+static int gumstik_mtd_suspend(struct device *dev, u32 level, u32 state)
+{
+	struct mtd_info *mtd = dev_get_drvdata(dev);
+	if (level == SUSPEND_SAVE_STATE)
+		mtd->suspend(mtd);
+	return 0;
+}
+
+static int gumstik_mtd_resume(struct device *dev, u32 level)
+{
+	struct mtd_info *mtd = dev_get_drvdata(dev);
+	if (level == RESUME_RESTORE_STATE)
+		mtd->resume(mtd);
+	return 0;
+}
+
+static struct platform_device gumstik_mtd_device = {
+	.name		= "flash",
+	.id		= 0,
+};
+
+static struct device_driver gumstik_mtd_driver = {
+	.name		= "flash",
+	.bus		= &platform_bus_type,
+	.probe		= gumstik_mtd_probe,
+#ifdef MODULE
+	.remove		= gumstik_mtd_remove,
+#endif
+	.suspend	= gumstik_mtd_suspend,
+	.resume		= gumstik_mtd_resume,
+};
+
+static int __init gumstik_mtd_init(void)
+{
+	int ret = driver_register(&gumstik_mtd_driver);
+	if (ret == 0) {
+		ret = platform_device_register(&gumstik_mtd_device);
+		if (ret)
+			driver_unregister(&gumstik_mtd_driver);
+	}
+	return ret;
+}
+
+
+static void __exit gumstik_mtd_cleanup(void)
+{
+	platform_device_unregister(&gumstik_mtd_device);
+	driver_unregister(&gumstik_mtd_driver);
+}
+
+module_init(gumstik_mtd_init);
+module_exit(gumstik_mtd_cleanup);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Gumstix, Inc. <gumstix-users@lists.sourceforge.net>");
+MODULE_DESCRIPTION("MTD map driver for The Original Gumstik");
--- a/drivers/usb/gadget/pxa2xx_udc.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/usb/gadget/pxa2xx_udc.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -104,14 +104,20 @@
 
 #endif
 
+#ifdef CONFIG_ARCH_GUMSTIK
+#undef CONFIG_USB_PXA2XX_SMALL
+#endif
+
 #include "pxa2xx_udc.h"
 
 
 #ifdef CONFIG_EMBEDDED
 /* few strings, and little code to use them */
 #undef	DEBUG
+#ifndef CONFIG_ARCH_GUMSTIK
 #undef	UDC_PROC_FILE
 #endif
+#endif
 
 #ifdef	USE_DMA
 static int use_dma = 1;
@@ -1628,6 +1634,33 @@
 
 /*-------------------------------------------------------------------------*/
 
+#ifdef CONFIG_ARCH_GUMSTIK
+#include <asm/arch/gumstik.h>
+
+#define enable_disconnect_irq() \
+        if (machine_is_gumstik()) { enable_irq(GUMSTIK_USB_INTR_IRQ); }
+#define disable_disconnect_irq() \
+        if (machine_is_gumstik()) { disable_irq(GUMSTIK_USB_INTR_IRQ); }
+
+static irqreturn_t
+usb_connection_irq(int irq, void *_dev, struct pt_regs *r)
+{
+        struct pxa2xx_udc       *dev = _dev;
+
+        dev->stats.irqs++;
+	/* 
+	 * Upon connection, disable our IRQ because the main interrupt
+	 * will enable us when it senses a reset.  Let there be balance.
+	 */
+	if (is_usb_connected() && (dev->gadget.speed == USB_SPEED_UNKNOWN)) {
+		disable_disconnect_irq();
+	}
+        return IRQ_HANDLED;
+}
+
+#endif
+
+
 #ifdef CONFIG_ARCH_LUBBOCK
 
 /* Lubbock can report connect or disconnect irqs.  Likely more hardware
@@ -2065,7 +2098,7 @@
 				stop_activity (dev, dev->driver);
 
 			} else {
-				INFO("USB reset\n");
+				DBG(DBG_VERBOSE, "USB reset\n");
 				dev->gadget.speed = USB_SPEED_FULL;
 				LED_CONNECTED_ON;
 				memset(&dev->stats, 0, sizeof dev->stats);
@@ -2466,6 +2499,41 @@
 	}
 #endif
 
+	/* Reset UDCCS register to be able to recover from whatever
+	 * state UDC was previously in. */
+	*dev->ep[ 2].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
+#ifndef CONFIG_USB_PXA2XX_SMALL
+	*dev->ep[ 7].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
+        *dev->ep[12].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
+#endif
+
+	*dev->ep[ 1].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
+		UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
+#ifndef CONFIG_USB_PXA2XX_SMALL
+	*dev->ep[ 6].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
+		UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
+	*dev->ep[11].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
+		UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
+
+	*dev->ep[ 3].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
+		UDCCS_II_TUR | UDCCS_II_TSP;
+	*dev->ep[ 8].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
+		UDCCS_II_TUR | UDCCS_II_TSP;
+	*dev->ep[13].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
+		UDCCS_II_TUR | UDCCS_II_TSP;
+
+	*dev->ep[ 4].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
+	*dev->ep[ 9].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
+	*dev->ep[11].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
+
+	*dev->ep[ 5].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
+		UDCCS_INT_TUR | UDCCS_INT_SST;
+	*dev->ep[10].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
+		UDCCS_INT_TUR | UDCCS_INT_SST;
+	*dev->ep[15].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
+		UDCCS_INT_TUR | UDCCS_INT_SST;
+#endif
+
 	/* other non-static parts of init */
 	dev->dev = _dev;
 	dev->mach = _dev->platform_data;
@@ -2494,6 +2562,21 @@
 	}
 	dev->got_irq = 1;
 
+#ifdef CONFIG_ARCH_GUMSTIK
+        if (machine_is_gumstik()) {
+               retval = request_irq(GUMSTIK_USB_INTR_IRQ,
+                                usb_connection_irq,
+                                SA_INTERRUPT /* OOPSING | SA_SAMPLE_RANDOM */,
+                                driver_name, dev);
+                if (retval != 0) {
+                        printk(KERN_ERR "%s: can't get irq %i, err %d\n",
+                                driver_name, GUMSTIK_USB_INTR_IRQ, retval);
+                        return -EBUSY;
+                }
+                disable_disconnect_irq();
+                dev->got_disc = 1;
+        }
+#endif
 #ifdef CONFIG_ARCH_LUBBOCK
 	if (machine_is_lubbock()) {
 		disable_irq(LUBBOCK_USB_DISC_IRQ);
@@ -2530,6 +2613,10 @@
 		free_irq(LUBBOCK_USB_DISC_IRQ, dev);
 		dev->got_disc = 0;
 	}
+	if (machine_is_gumstik() && dev->got_disc) {
+		free_irq(GUMSTIK_USB_INTR_IRQ, dev);
+		dev->got_disc = 0;
+	}
 	dev_set_drvdata(_dev, 0);
 	the_controller = 0;
 	return 0;
--- a/drivers/i2c/busses/pxa2xx_i2c.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/i2c/busses/pxa2xx_i2c.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -347,9 +347,9 @@
 	.owner      = THIS_MODULE,
     .id         = I2C_ALGO_PXA,
     .algo_data  = &i2c_pxa_data,
-    .dev        = {
+//    .dev        = {
         .name   = "PXA I2C Adapter",
-    },
+//    },
 	.client_register   = i2c_pxa_client_register,
 	.client_unregister = i2c_pxa_client_unregister,
 	.retries           = 2,
--- a/drivers/i2c/algos/i2c-algo-pxa.c	(.../nalm/tags/v2.6.5-gnalm1)	(revision 130)
+++ b/drivers/i2c/algos/i2c-algo-pxa.c	(.../umstix/tags/v2.6.5-gnalm1-gum0)	(revision 130)
@@ -312,7 +312,7 @@
 {
 	struct i2c_algo_pxa_data *adap = i2c_adap->algo_data;
 
-	printk(KERN_INFO"I2C: Adding %s.\n", i2c_adap->dev.name);
+	printk(KERN_INFO"I2C: Adding %s.\n", i2c_adap->name);
 
 	i2c_adap->algo = &i2c_pxa_algorithm;
 
@@ -332,7 +332,7 @@
 
 			if (adap->wait_bus_not_busy()) {
 				printk(KERN_INFO "I2C: scanning bus %s - TIMEOUT.\n",
-						i2c_adap->dev.name);
+						i2c_adap->name);
 				return -EIO;
 			}
 			adap->write_byte(i);
@@ -361,7 +361,7 @@
 
 	MOD_DEC_USE_COUNT;
 
-	printk(KERN_INFO "I2C: Removing %s.\n", i2c_adap->dev.name);
+	printk(KERN_INFO "I2C: Removing %s.\n", i2c_adap->name);
 
 	return 0;
 }
