This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / arch / sh / kernel / cpu / sh2 / setup-sh7619.c
1 /*
2  * SH7619 Setup
3  *
4  *  Copyright (C) 2006  Yoshinori Sato
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        = 0xf8400000,
18                 .flags          = UPF_BOOT_AUTOCONF,
19                 .type           = PORT_SCIF,
20                 .irqs           =  { 88, 89, 91, 90},
21         }, {
22                 .mapbase        = 0xf8410000,
23                 .flags          = UPF_BOOT_AUTOCONF,
24                 .type           = PORT_SCIF,
25                 .irqs           =  { 92, 93, 95, 94},
26         }, {
27                 .mapbase        = 0xf8420000,
28                 .flags          = UPF_BOOT_AUTOCONF,
29                 .type           = PORT_SCIF,
30                 .irqs           =  { 96, 97, 99, 98},
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 *sh7619_devices[] __initdata = {
45         &sci_device,
46 };
47
48 static int __init sh7619_devices_setup(void)
49 {
50         return platform_add_devices(sh7619_devices,
51                                     ARRAY_SIZE(sh7619_devices));
52 }
53 __initcall(sh7619_devices_setup);
54
55 #define INTC_IPRC      0xf8080000UL
56 #define INTC_IPRD      0xf8080002UL
57
58 #define CMI0_IRQ       86
59
60 #define SCIF0_ERI_IRQ  88
61 #define SCIF0_RXI_IRQ  89
62 #define SCIF0_BRI_IRQ  90
63 #define SCIF0_TXI_IRQ  91
64
65 #define SCIF1_ERI_IRQ  92
66 #define SCIF1_RXI_IRQ  93
67 #define SCIF1_BRI_IRQ  94
68 #define SCIF1_TXI_IRQ  95
69
70 #define SCIF2_BRI_IRQ  96
71 #define SCIF2_ERI_IRQ  97
72 #define SCIF2_RXI_IRQ  98
73 #define SCIF2_TXI_IRQ  99
74
75 static struct ipr_data sh7619_ipr_map[] = {
76         { CMI0_IRQ,      INTC_IPRC, 1, 2 },
77         { SCIF0_ERI_IRQ, INTC_IPRD, 3, 3 },
78         { SCIF0_RXI_IRQ, INTC_IPRD, 3, 3 },
79         { SCIF0_BRI_IRQ, INTC_IPRD, 3, 3 },
80         { SCIF0_TXI_IRQ, INTC_IPRD, 3, 3 },
81         { SCIF1_ERI_IRQ, INTC_IPRD, 2, 3 },
82         { SCIF1_RXI_IRQ, INTC_IPRD, 2, 3 },
83         { SCIF1_BRI_IRQ, INTC_IPRD, 2, 3 },
84         { SCIF1_TXI_IRQ, INTC_IPRD, 2, 3 },
85         { SCIF2_ERI_IRQ, INTC_IPRD, 1, 3 },
86         { SCIF2_RXI_IRQ, INTC_IPRD, 1, 3 },
87         { SCIF2_BRI_IRQ, INTC_IPRD, 1, 3 },
88         { SCIF2_TXI_IRQ, INTC_IPRD, 1, 3 },
89 };
90
91 void __init init_IRQ_ipr(void)
92 {
93         make_ipr_irq(sh7619_ipr_map, ARRAY_SIZE(sh7619_ipr_map));
94 }