1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* |
3 | * linux/arch/arm/mach-footbridge/isa.c |
4 | * |
5 | * Copyright (C) 2004 Russell King. |
6 | */ |
7 | #include <linux/init.h> |
8 | #include <linux/serial_8250.h> |
9 | |
10 | #include <asm/irq.h> |
11 | #include <asm/hardware/dec21285.h> |
12 | |
13 | #include "common.h" |
14 | |
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 | |
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" , |
70 | .id = PLAT8250_DEV_PLATFORM, |
71 | .dev = { |
72 | .platform_data = serial_platform_data, |
73 | }, |
74 | .resource = serial_resources, |
75 | .num_resources = ARRAY_SIZE(serial_resources), |
76 | }; |
77 | |
78 | static int __init (void) |
79 | { |
80 | int err = 0; |
81 | |
82 | /* Personal server doesn't have RTC */ |
83 | isa_rtc_init(); |
84 | err = platform_device_register(&rtc_device); |
85 | if (err) |
86 | printk(KERN_ERR "Unable to register RTC device: %d\n" , err); |
87 | |
88 | err = platform_device_register(&serial_device); |
89 | if (err) |
90 | printk(KERN_ERR "Unable to register serial device: %d\n" , err); |
91 | return 0; |
92 | } |
93 | |
94 | arch_initcall(footbridge_isa_init); |
95 | |