Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/arch/arm/mach-footbridge/isa.c | |
3 | * | |
4 | * Copyright (C) 2004 Russell King. | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License version 2 as | |
8 | * published by the Free Software Foundation. | |
9 | */ | |
10 | #include <linux/init.h> | |
11 | #include <linux/serial_8250.h> | |
12 | ||
13 | #include <asm/irq.h> | |
14 | ||
cba774ae RK |
15 | static struct resource rtc_resources[] = { |
16 | [0] = { | |
17 | .start = 0x70, | |
18 | .end = 0x73, | |
19 | .flags = IORESOURCE_IO, | |
20 | }, | |
21 | [1] = { | |
22 | .start = IRQ_ISA_RTC_ALARM, | |
23 | .end = IRQ_ISA_RTC_ALARM, | |
24 | .flags = IORESOURCE_IRQ, | |
25 | } | |
26 | }; | |
27 | ||
28 | static struct platform_device rtc_device = { | |
29 | .name = "rtc_cmos", | |
30 | .id = -1, | |
31 | .resource = rtc_resources, | |
32 | .num_resources = ARRAY_SIZE(rtc_resources), | |
33 | }; | |
34 | ||
35 | static struct resource serial_resources[] = { | |
36 | [0] = { | |
37 | .start = 0x3f8, | |
38 | .end = 0x3ff, | |
39 | .flags = IORESOURCE_IO, | |
40 | }, | |
41 | [1] = { | |
42 | .start = 0x2f8, | |
43 | .end = 0x2ff, | |
44 | .flags = IORESOURCE_IO, | |
45 | }, | |
46 | }; | |
47 | ||
1da177e4 LT |
48 | static struct plat_serial8250_port serial_platform_data[] = { |
49 | { | |
50 | .iobase = 0x3f8, | |
51 | .irq = IRQ_ISA_UART, | |
52 | .uartclk = 1843200, | |
53 | .regshift = 0, | |
54 | .iotype = UPIO_PORT, | |
55 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | |
56 | }, | |
57 | { | |
58 | .iobase = 0x2f8, | |
59 | .irq = IRQ_ISA_UART2, | |
60 | .uartclk = 1843200, | |
61 | .regshift = 0, | |
62 | .iotype = UPIO_PORT, | |
63 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | |
64 | }, | |
65 | { }, | |
66 | }; | |
67 | ||
68 | static struct platform_device serial_device = { | |
69 | .name = "serial8250", | |
6df29deb | 70 | .id = PLAT8250_DEV_PLATFORM, |
1da177e4 LT |
71 | .dev = { |
72 | .platform_data = serial_platform_data, | |
73 | }, | |
cba774ae RK |
74 | .resource = serial_resources, |
75 | .num_resources = ARRAY_SIZE(serial_resources), | |
1da177e4 LT |
76 | }; |
77 | ||
78 | static int __init footbridge_isa_init(void) | |
79 | { | |
cba774ae RK |
80 | int err; |
81 | ||
82 | err = platform_device_register(&rtc_device); | |
83 | if (err) | |
84 | printk(KERN_ERR "Unable to register RTC device: %d\n", err); | |
85 | err = platform_device_register(&serial_device); | |
86 | if (err) | |
87 | printk(KERN_ERR "Unable to register serial device: %d\n", err); | |
88 | return 0; | |
1da177e4 LT |
89 | } |
90 | ||
91 | arch_initcall(footbridge_isa_init); |