|
15 | 15 | #include <linux/kernel.h>
|
16 | 16 | #include <linux/init.h>
|
17 | 17 | #include <linux/input.h>
|
| 18 | +#include <linux/interrupt.h> |
18 | 19 | #include <linux/platform_device.h>
|
| 20 | +#include <linux/serial_8250.h> |
19 | 21 |
|
| 22 | +#include <asm/serial.h> |
20 | 23 | #include <mach/hardware.h>
|
21 | 24 | #include <asm/mach-types.h>
|
22 | 25 | #include <asm/mach/arch.h>
|
@@ -230,6 +233,41 @@ static void __init ams_delta_init(void)
|
230 | 233 | platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
|
231 | 234 | }
|
232 | 235 |
|
| 236 | +static struct plat_serial8250_port ams_delta_modem_ports[] = { |
| 237 | + { |
| 238 | + .membase = (void *) AMS_DELTA_MODEM_VIRT, |
| 239 | + .mapbase = AMS_DELTA_MODEM_PHYS, |
| 240 | + .irq = -EINVAL, /* changed later */ |
| 241 | + .flags = UPF_BOOT_AUTOCONF, |
| 242 | + .irqflags = IRQF_TRIGGER_RISING, |
| 243 | + .iotype = UPIO_MEM, |
| 244 | + .regshift = 1, |
| 245 | + .uartclk = BASE_BAUD * 16, |
| 246 | + }, |
| 247 | + { }, |
| 248 | +}; |
| 249 | + |
| 250 | +static struct platform_device ams_delta_modem_device = { |
| 251 | + .name = "serial8250", |
| 252 | + .id = PLAT8250_DEV_PLATFORM1, |
| 253 | + .dev = { |
| 254 | + .platform_data = ams_delta_modem_ports, |
| 255 | + }, |
| 256 | +}; |
| 257 | + |
| 258 | +static int __init ams_delta_modem_init(void) |
| 259 | +{ |
| 260 | + omap_cfg_reg(M14_1510_GPIO2); |
| 261 | + ams_delta_modem_ports[0].irq = gpio_to_irq(2); |
| 262 | + |
| 263 | + ams_delta_latch2_write( |
| 264 | + AMS_DELTA_LATCH2_MODEM_NRESET | AMS_DELTA_LATCH2_MODEM_CODEC, |
| 265 | + AMS_DELTA_LATCH2_MODEM_NRESET | AMS_DELTA_LATCH2_MODEM_CODEC); |
| 266 | + |
| 267 | + return platform_device_register(&ams_delta_modem_device); |
| 268 | +} |
| 269 | +arch_initcall(ams_delta_modem_init); |
| 270 | + |
233 | 271 | static void __init ams_delta_map_io(void)
|
234 | 272 | {
|
235 | 273 | omap1_map_common_io();
|
|
0 commit comments