xref: /linux/arch/sh/kernel/cpu/sh2/setup-sh7619.c (revision b454cc6636d254fbf6049b73e9560aee76fb04a3)
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 }
95