diff options
author | Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> | 2009-08-28 13:51:37 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2009-08-28 13:51:37 -0400 |
commit | eff443df679ea7e553830db992e2f02707ddbb47 (patch) | |
tree | 37ecad8235a54cef0afb9fddc01a3c66cf97ce21 /arch/arm/mach-omap1/board-ams-delta.c | |
parent | 82dbb9d39f58e3d12b5903764901df5fec759daf (diff) |
OMAP1: AMS_DELTA: add modem support
This patch adds support for modem device found on Amstrad E3 (Delta) board.
Based on earlier patch by Jonathan McDowell, available at
http://the.earth.li/pub/e3/2.6.19/ams-delta-modem.patch.
Modified after Ladislav Michl's arch/arm/mach-omap1/board-voiceblue.c.
This patch is dependent on 8250 driver changes getting accepted upstream:
http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git;a=commit;h=7053133124d5cdf207c1168c7a0c582a18e12ea7
Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap1/board-ams-delta.c')
-rw-r--r-- | arch/arm/mach-omap1/board-ams-delta.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 580773202ea0..42920f9c1a11 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -15,8 +15,11 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/input.h> | 17 | #include <linux/input.h> |
18 | #include <linux/interrupt.h> | ||
18 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
20 | #include <linux/serial_8250.h> | ||
19 | 21 | ||
22 | #include <asm/serial.h> | ||
20 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
21 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
22 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
@@ -230,6 +233,41 @@ static void __init ams_delta_init(void) | |||
230 | platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); | 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 | static void __init ams_delta_map_io(void) | 271 | static void __init ams_delta_map_io(void) |
234 | { | 272 | { |
235 | omap1_map_common_io(); | 273 | omap1_map_common_io(); |