diff -ruN linux-2.6.15/arch/arm/configs/E3_defconfig linux-2.6.15-e3/arch/arm/configs/E3_defconfig
--- linux-2.6.15/arch/arm/configs/E3_defconfig	2006-02-22 16:57:32.238244051 +0000
+++ linux-2.6.15-e3/arch/arm/configs/E3_defconfig	2006-02-22 17:13:23.144003083 +0000
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.15-omap1-omap2
-# Sun Feb 19 11:25:08 2006
+# Wed Feb 22 17:13:23 2006
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
@@ -140,7 +140,8 @@
 # CONFIG_MACH_OMAP_INNOVATOR is not set
 # CONFIG_MACH_VOICEBLUE is not set
 # CONFIG_MACH_OMAP_PALMTE is not set
-CONFIG_MACH_OMAP_GENERIC=y
+CONFIG_MACH_AMS_DELTA=y
+# CONFIG_MACH_OMAP_GENERIC is not set
 
 #
 # OMAP CPU Speed
diff -ruN linux-2.6.15/arch/arm/mach-omap1/board-ams-delta.c linux-2.6.15-e3/arch/arm/mach-omap1/board-ams-delta.c
--- linux-2.6.15/arch/arm/mach-omap1/board-ams-delta.c	1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.15-e3/arch/arm/mach-omap1/board-ams-delta.c	2006-02-22 14:15:45.351695476 +0000
@@ -0,0 +1,120 @@
+/*
+ * linux/arch/arm/mach-omap1/board-ams-delta.c
+ *
+ * Modified from board-generic.c
+ *
+ * Board specific inits for the Amstrad E3 (codename Delta) videophone
+ *
+ * Copyright (C) 2006 Jonathan McDowell <noodles@earth.li>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/usb.h>
+#include <asm/arch/board.h>
+#include <asm/arch/common.h>
+
+static void __init ams_delta_init_irq(void)
+{
+	printk("ams_delta_init_irq\n");
+	omap1_init_common_hw();
+	omap_init_irq();
+}
+
+static struct mtd_partition ams_delta_nor_partitions[] = {
+	/* The NOR flash just contains PBL */
+	{
+		.name		= "pbl",
+		.offset		= 0,
+		.size		= SZ_128K,
+		.mask_flags	= MTD_WRITEABLE, /* force read-only */
+	}
+};
+
+static struct flash_platform_data ams_delta_nor_data = {
+	.map_name	= "jedec_probe",
+	.width		= 2,
+	.parts		= ams_delta_nor_partitions,
+	.nr_parts	= ARRAY_SIZE(ams_delta_nor_partitions)
+};
+
+static struct resource ams_delta_nor_resource = {
+	.flags		= IORESOURCE_MEM,
+};
+
+static struct platform_device ams_delta_nor_device = {
+	.name		= "omapflash",
+	.id		= 0,
+	.dev		= {
+		.platform_data	= &ams_delta_nor_data,
+	},
+	.num_resources	= 1,
+	.resource	= &ams_delta_nor_resource,
+};
+
+static struct platform_device *ams_delta_devices[] __initdata = {
+	&ams_delta_nor_device,
+};
+
+static struct omap_usb_config ams_delta_usb_config __initdata = {
+	.register_host	= 1,
+	.register_dev	= 1,
+	.hmc_mode	= 16,
+	.pins[0]	= 3,
+};
+
+static struct omap_uart_config ams_delta_uart_config __initdata = {
+	.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
+};
+
+static struct omap_board_config_kernel ams_delta_config[] = {
+	{ OMAP_TAG_USB,         &ams_delta_usb_config },
+	{ OMAP_TAG_UART,	&ams_delta_uart_config },
+};
+
+static void __init ams_delta_init(void)
+{
+	ams_delta_nor_resource.end = ams_delta_nor_resource.start =
+			omap_cs0_phys();
+	ams_delta_nor_resource.end += SZ_128K - 1;
+
+	platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
+
+	omap_board_config = ams_delta_config;
+	omap_board_config_size = ARRAY_SIZE(ams_delta_config);
+	omap_serial_init();
+}
+
+static void __init ams_delta_map_io(void)
+{
+	omap1_map_common_io();
+}
+
+MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
+	/* Maintainer: Mark Underwood <basicmark@yahoo.com> */
+	.phys_ram	= 0x10000000,
+	.phys_io	= 0xfff00000,
+	.io_pg_offst	= ((0xfef00000) >> 18) & 0xfffc,
+	.boot_params	= 0x10000100,
+	.map_io		= ams_delta_map_io,
+	.init_irq	= ams_delta_init_irq,
+	.init_machine	= ams_delta_init,
+	.timer		= &omap_timer,
+MACHINE_END
diff -ruN linux-2.6.15/arch/arm/mach-omap1/Kconfig linux-2.6.15-e3/arch/arm/mach-omap1/Kconfig
--- linux-2.6.15/arch/arm/mach-omap1/Kconfig	2006-02-22 16:57:32.322247033 +0000
+++ linux-2.6.15-e3/arch/arm/mach-omap1/Kconfig	2006-02-22 12:57:40.481572898 +0000
@@ -79,6 +79,13 @@
           informations.
           Say Y here if you have such a PDA, say NO otherwise.
 
+config MACH_AMS_DELTA
+	bool "Amstrad E3 (Delta)"
+	depends on ARCH_OMAP1 && ARCH_OMAP15XX
+	help
+	  Support for the Amstrad E3 (codename Delta) videophone. Say Y here
+	  if you have such a device.
+
 config MACH_OMAP_GENERIC
 	bool "Generic OMAP board"
 	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX)
diff -ruN linux-2.6.15/arch/arm/mach-omap1/Makefile linux-2.6.15-e3/arch/arm/mach-omap1/Makefile
--- linux-2.6.15/arch/arm/mach-omap1/Makefile	2006-02-22 16:57:32.322247033 +0000
+++ linux-2.6.15-e3/arch/arm/mach-omap1/Makefile	2006-02-22 12:58:25.163159182 +0000
@@ -20,6 +20,7 @@
 obj-$(CONFIG_MACH_OMAP_OSK)		+= board-osk.o
 obj-$(CONFIG_MACH_OMAP_H3)		+= board-h3.o
 obj-$(CONFIG_MACH_VOICEBLUE)		+= board-voiceblue.o
+obj-$(CONFIG_MACH_AMS_DELTA)		+= board-ams-delta.o
 obj-$(CONFIG_MACH_OMAP_PALMTE)		+= board-palmte.o
 
 ifeq ($(CONFIG_ARCH_OMAP15XX),y)
diff -ruN linux-2.6.15/drivers/mtd/chips/jedec_probe.c linux-2.6.15-e3/drivers/mtd/chips/jedec_probe.c
--- linux-2.6.15/drivers/mtd/chips/jedec_probe.c	2006-01-03 03:21:10.000000000 +0000
+++ linux-2.6.15-e3/drivers/mtd/chips/jedec_probe.c	2006-02-22 15:19:19.648263494 +0000
@@ -63,6 +63,7 @@
 /* Atmel */
 #define AT49BV512	0x0003
 #define AT29LV512	0x003d
+#define AT49LV1024	0x0087
 #define AT49BV16X	0x00C0
 #define AT49BV16XT	0x00C2
 #define AT49BV32X	0x00C8
@@ -566,7 +567,22 @@
 			ERASEINFO(0x80,256),
 			ERASEINFO(0x80,256)
 		}
+
+	}, {
+		.mfr_id		= MANUFACTURER_ATMEL,
+		.dev_id		= AT49LV1024,
+		.name		= "Atmel AT49LV1024",
+		.uaddr		= {
+			[0] = MTD_UADDR_0x5555_0x2AAA,  /* x8 */
+		},
+		.DevSize	= SIZE_128KiB,
+		.CmdSet		= P_ID_AMD_STD,
+		.NumEraseRegions= 1,
+		.regions	= {
+			ERASEINFO(0x20000,1)
+		}
 	}, {
+
 		.mfr_id		= MANUFACTURER_ATMEL,
 		.dev_id		= AT49BV16X,
 		.name		= "Atmel AT49BV16X",
