xref: /openbmc/linux/arch/sh/kernel/cpu/sh2/setup-sh7619.c (revision c21b37f6)
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 static struct ipr_data ipr_irq_table[] = {
56 	{ 86, 0,  4, 2 },	/* CMI0 */
57 	{ 88, 1, 12, 3 },	/* SCIF0_ERI */
58 	{ 89, 1, 12, 3 },	/* SCIF0_RXI */
59 	{ 90, 1, 12, 3 },	/* SCIF0_BRI */
60 	{ 91, 1, 12, 3 },	/* SCIF0_TXI */
61 	{ 92, 1,  8, 3 },	/* SCIF1_ERI */
62 	{ 93, 1,  8, 3 },	/* SCIF1_RXI */
63 	{ 94, 1,  8, 3 },	/* SCIF1_BRI */
64 	{ 95, 1,  8, 3 },	/* SCIF1_TXI */
65 	{ 96, 1,  4, 3 },	/* SCIF2_ERI */
66 	{ 97, 1,  4, 3 },	/* SCIF2_RXI */
67 	{ 98, 1,  4, 3 },	/* SCIF2_BRI */
68 	{ 99, 1,  4, 3 },	/* SCIF2_TXI */
69 };
70 
71 static unsigned long ipr_offsets[] = {
72 	0xf8080000,	/* IPRC */
73 	0xf8080002,	/* IPRD */
74 	0xf8080004,	/* IPRE */
75 	0xf8080006,	/* IPRF */
76 	0xf8080008,	/* IPRG */
77 };
78 
79 static struct ipr_desc ipr_irq_desc = {
80 	.ipr_offsets	= ipr_offsets,
81 	.nr_offsets	= ARRAY_SIZE(ipr_offsets),
82 
83 	.ipr_data	= ipr_irq_table,
84 	.nr_irqs	= ARRAY_SIZE(ipr_irq_table),
85 
86 	.chip = {
87 		.name	= "IPR-sh7619",
88 	},
89 };
90 
91 void __init plat_irq_setup(void)
92 {
93 	register_ipr_controller(&ipr_irq_desc);
94 }
95