Commit | Line | Data |
---|---|---|
7dec62e9 PM |
1 | /* |
2 | * SH7707/SH7709 Setup | |
3 | * | |
4 | * Copyright (C) 2006 Paul Mundt | |
5 | * | |
6 | * This file is subject to the terms and conditions of the GNU General Public | |
7 | * License. See the file "COPYING" in the main directory of this archive | |
8 | * for more details. | |
9 | */ | |
10 | #include <linux/platform_device.h> | |
11 | #include <linux/init.h> | |
12 | #include <linux/serial.h> | |
13 | #include <asm/sci.h> | |
14 | ||
15 | static struct plat_sci_port sci_platform_data[] = { | |
16 | { | |
17 | .mapbase = 0xfffffe80, | |
18 | .flags = UPF_BOOT_AUTOCONF, | |
19 | .type = PORT_SCI, | |
20 | .irqs = { 23, 24, 25, 0 }, | |
21 | }, { | |
22 | .mapbase = 0xa4000150, | |
23 | .flags = UPF_BOOT_AUTOCONF, | |
24 | .type = PORT_SCIF, | |
25 | .irqs = { 56, 57, 59, 58 }, | |
26 | }, { | |
27 | .mapbase = 0xa4000140, | |
28 | .flags = UPF_BOOT_AUTOCONF, | |
29 | .type = PORT_IRDA, | |
30 | .irqs = { 52, 53, 55, 54 }, | |
31 | }, { | |
32 | .flags = 0, | |
33 | } | |
34 | }; | |
35 | ||
36 | static struct platform_device sci_device = { | |
37 | .name = "sh-sci", | |
38 | .id = -1, | |
39 | .dev = { | |
40 | .platform_data = sci_platform_data, | |
41 | }, | |
42 | }; | |
43 | ||
44 | static struct platform_device *sh7709_devices[] __initdata = { | |
45 | &sci_device, | |
46 | }; | |
47 | ||
48 | static int __init sh7709_devices_setup(void) | |
49 | { | |
50 | return platform_add_devices(sh7709_devices, | |
70fe4d87 | 51 | ARRAY_SIZE(sh7709_devices)); |
7dec62e9 PM |
52 | } |
53 | __initcall(sh7709_devices_setup); | |
f725b5ee | 54 | |
70fe4d87 | 55 | #define IPRx(A,N) .addr=A, .shift=N |
f725b5ee TY |
56 | #define IPRA(N) IPRx(0xfffffee2UL,N) |
57 | #define IPRB(N) IPRx(0xfffffee4UL,N) | |
70fe4d87 TY |
58 | #define IPRC(N) IPRx(0xa4000016UL,N) |
59 | #define IPRD(N) IPRx(0xa4000018UL,N) | |
f725b5ee TY |
60 | #define IPRE(N) IPRx(0xa400001aUL,N) |
61 | ||
62 | static struct ipr_data sh7709_ipr_map[] = { | |
70fe4d87 TY |
63 | [16] = { IPRA(12), 2 }, /* TMU TUNI0 */ |
64 | [17] = { IPRA(8), 4 }, /* TMU TUNI1 */ | |
65 | [18 ... 19] = { IPRA(4), 1 }, /* TMU TUNI1 */ | |
66 | [20 ... 22] = { IPRA(0), 2 }, /* RTC CUI */ | |
67 | [23 ... 26] = { IPRB(4), 3 }, /* SCI */ | |
68 | [27] = { IPRB(12), 2 }, /* WDT ITI */ | |
69 | [32] = { IPRC(0), 1 }, /* IRQ 0 */ | |
70 | [33] = { IPRC(4), 1 }, /* IRQ 1 */ | |
71 | [34] = { IPRC(8), 1 }, /* IRQ 2 APM */ | |
72 | [35] = { IPRC(12), 1 }, /* IRQ 3 TOUCHSCREEN */ | |
73 | [36] = { IPRD(0), 1 }, /* IRQ 4 */ | |
74 | [37] = { IPRD(4), 1 }, /* IRQ 5 */ | |
75 | [48 ... 51] = { IPRE(12), 7 }, /* DMA */ | |
76 | [52 ... 55] = { IPRE(8), 3 }, /* IRDA */ | |
77 | [56 ... 59] = { IPRE(4), 3 }, /* SCIF */ | |
f725b5ee TY |
78 | }; |
79 | ||
80 | void __init init_IRQ_ipr() | |
81 | { | |
82 | make_ipr_irq(sh7709_ipr_map, ARRAY_SIZE(sh7709_ipr_map)); | |
83 | } |