diff -rupN -X linux-2.6.16-omap2/Documentation/dontdiff linux-2.6.16-e3-02/arch/arm/mach-omap1/board-ams-delta.c linux-2.6.16-e3-03/arch/arm/mach-omap1/board-ams-delta.c
--- linux-2.6.16-e3-02/arch/arm/mach-omap1/board-ams-delta.c	2006-04-06 18:04:05.792953250 +0100
+++ linux-2.6.16-e3-03/arch/arm/mach-omap1/board-ams-delta.c	2006-04-06 22:19:02.988968250 +0100
@@ -16,8 +16,11 @@
 #include <linux/init.h>
 #include <linux/input.h>
 #include <linux/platform_device.h>
+#include <linux/serial.h>
+#include <linux/serial_core.h>
 
 #include <asm/hardware.h>
+#include <asm/serial.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
@@ -124,6 +127,8 @@ static void __init ams_delta_init_irq(vo
 	omap1_init_common_hw();
 	omap_init_irq();
 	omap_gpio_init();
+	/* Set IRQ triggering for modem. */
+	set_irq_type(OMAP_GPIO_IRQ(2), IRQT_RISING);
 }
 
 static struct map_desc ams_delta_io_desc[] __initdata = {
@@ -211,6 +216,17 @@ static struct platform_device *ams_delta
 	&ams_delta_lcd_device,
 };
 
+static struct uart_port ams_delta_modem_port = {
+	.membase	= (void *) AMS_DELTA_MODEM_VIRT,
+	.mapbase	= AMS_DELTA_MODEM_PHYS,
+	.irq		= OMAP_GPIO_IRQ(2),
+	.flags		= UPF_BOOT_AUTOCONF,
+	.iotype		= UPIO_MEM,
+	.regshift	= 1,
+	.uartclk	= BASE_BAUD * 16,
+	.line		= 1
+};
+
 static void __init ams_delta_init(void)
 {
 	iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc));
@@ -220,9 +236,12 @@ static void __init ams_delta_init(void)
 	omap_serial_init();
 
 	/* Clear latch2 (NAND, LCD, modem enable) */
-	ams_delta_latch2_write(~0, 0);
+	ams_delta_latch2_write(~0, AMS_DELTA_LATCH2_MODEM_NRESET |
+					AMS_DELTA_LATCH2_MODEM_CODEC);
 
 	platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
+
+	early_serial_setup(&ams_delta_modem_port);
 }
 
 static void __init ams_delta_map_io(void)

