xref: /openbmc/linux/arch/sh/kernel/cpu/sh2/setup-sh7619.c (revision 780a1568886a2f5df9bf11b72ba0624c80db5b3b)
19d4436a6SYoshinori Sato /*
29d4436a6SYoshinori Sato  * SH7619 Setup
39d4436a6SYoshinori Sato  *
49d4436a6SYoshinori Sato  *  Copyright (C) 2006  Yoshinori Sato
59d4436a6SYoshinori Sato  *
69d4436a6SYoshinori Sato  * This file is subject to the terms and conditions of the GNU General Public
79d4436a6SYoshinori Sato  * License.  See the file "COPYING" in the main directory of this archive
89d4436a6SYoshinori Sato  * for more details.
99d4436a6SYoshinori Sato  */
109d4436a6SYoshinori Sato #include <linux/platform_device.h>
119d4436a6SYoshinori Sato #include <linux/init.h>
129d4436a6SYoshinori Sato #include <linux/serial.h>
139d4436a6SYoshinori Sato #include <asm/sci.h>
149d4436a6SYoshinori Sato 
159d4436a6SYoshinori Sato static struct plat_sci_port sci_platform_data[] = {
169d4436a6SYoshinori Sato 	{
179d4436a6SYoshinori Sato 		.mapbase	= 0xf8400000,
189d4436a6SYoshinori Sato 		.flags		= UPF_BOOT_AUTOCONF,
199d4436a6SYoshinori Sato 		.type		= PORT_SCIF,
209d4436a6SYoshinori Sato 		.irqs		=  { 88, 89, 91, 90},
219d4436a6SYoshinori Sato 	}, {
229d4436a6SYoshinori Sato 		.mapbase	= 0xf8410000,
239d4436a6SYoshinori Sato 		.flags		= UPF_BOOT_AUTOCONF,
249d4436a6SYoshinori Sato 		.type		= PORT_SCIF,
259d4436a6SYoshinori Sato 		.irqs		=  { 92, 93, 95, 94},
269d4436a6SYoshinori Sato 	}, {
279d4436a6SYoshinori Sato 		.mapbase	= 0xf8420000,
289d4436a6SYoshinori Sato 		.flags		= UPF_BOOT_AUTOCONF,
299d4436a6SYoshinori Sato 		.type		= PORT_SCIF,
309d4436a6SYoshinori Sato 		.irqs		=  { 96, 97, 99, 98},
319d4436a6SYoshinori Sato 	}, {
329d4436a6SYoshinori Sato 		.flags = 0,
339d4436a6SYoshinori Sato 	}
349d4436a6SYoshinori Sato };
359d4436a6SYoshinori Sato 
369d4436a6SYoshinori Sato static struct platform_device sci_device = {
379d4436a6SYoshinori Sato 	.name		= "sh-sci",
389d4436a6SYoshinori Sato 	.id		= -1,
399d4436a6SYoshinori Sato 	.dev		= {
409d4436a6SYoshinori Sato 		.platform_data	= sci_platform_data,
419d4436a6SYoshinori Sato 	},
429d4436a6SYoshinori Sato };
439d4436a6SYoshinori Sato 
449d4436a6SYoshinori Sato static struct platform_device *sh7619_devices[] __initdata = {
459d4436a6SYoshinori Sato 	&sci_device,
469d4436a6SYoshinori Sato };
479d4436a6SYoshinori Sato 
489d4436a6SYoshinori Sato static int __init sh7619_devices_setup(void)
499d4436a6SYoshinori Sato {
509d4436a6SYoshinori Sato 	return platform_add_devices(sh7619_devices,
519d4436a6SYoshinori Sato 				    ARRAY_SIZE(sh7619_devices));
529d4436a6SYoshinori Sato }
539d4436a6SYoshinori Sato __initcall(sh7619_devices_setup);
54*780a1568SYoshinori Sato 
55*780a1568SYoshinori Sato #define INTC_IPRC      0xf8080000UL
56*780a1568SYoshinori Sato #define INTC_IPRD      0xf8080002UL
57*780a1568SYoshinori Sato 
58*780a1568SYoshinori Sato #define CMI0_IRQ       86
59*780a1568SYoshinori Sato 
60*780a1568SYoshinori Sato #define SCIF0_ERI_IRQ  88
61*780a1568SYoshinori Sato #define SCIF0_RXI_IRQ  89
62*780a1568SYoshinori Sato #define SCIF0_BRI_IRQ  90
63*780a1568SYoshinori Sato #define SCIF0_TXI_IRQ  91
64*780a1568SYoshinori Sato 
65*780a1568SYoshinori Sato #define SCIF1_ERI_IRQ  92
66*780a1568SYoshinori Sato #define SCIF1_RXI_IRQ  93
67*780a1568SYoshinori Sato #define SCIF1_BRI_IRQ  94
68*780a1568SYoshinori Sato #define SCIF1_TXI_IRQ  95
69*780a1568SYoshinori Sato 
70*780a1568SYoshinori Sato #define SCIF2_BRI_IRQ  96
71*780a1568SYoshinori Sato #define SCIF2_ERI_IRQ  97
72*780a1568SYoshinori Sato #define SCIF2_RXI_IRQ  98
73*780a1568SYoshinori Sato #define SCIF2_TXI_IRQ  99
74*780a1568SYoshinori Sato 
75*780a1568SYoshinori Sato static struct ipr_data sh7619_ipr_map[] = {
76*780a1568SYoshinori Sato 	{ CMI0_IRQ,      INTC_IPRC, 1, 2 },
77*780a1568SYoshinori Sato 	{ SCIF0_ERI_IRQ, INTC_IPRD, 3, 3 },
78*780a1568SYoshinori Sato 	{ SCIF0_RXI_IRQ, INTC_IPRD, 3, 3 },
79*780a1568SYoshinori Sato 	{ SCIF0_BRI_IRQ, INTC_IPRD, 3, 3 },
80*780a1568SYoshinori Sato 	{ SCIF0_TXI_IRQ, INTC_IPRD, 3, 3 },
81*780a1568SYoshinori Sato 	{ SCIF1_ERI_IRQ, INTC_IPRD, 2, 3 },
82*780a1568SYoshinori Sato 	{ SCIF1_RXI_IRQ, INTC_IPRD, 2, 3 },
83*780a1568SYoshinori Sato 	{ SCIF1_BRI_IRQ, INTC_IPRD, 2, 3 },
84*780a1568SYoshinori Sato 	{ SCIF1_TXI_IRQ, INTC_IPRD, 2, 3 },
85*780a1568SYoshinori Sato 	{ SCIF2_ERI_IRQ, INTC_IPRD, 1, 3 },
86*780a1568SYoshinori Sato 	{ SCIF2_RXI_IRQ, INTC_IPRD, 1, 3 },
87*780a1568SYoshinori Sato 	{ SCIF2_BRI_IRQ, INTC_IPRD, 1, 3 },
88*780a1568SYoshinori Sato 	{ SCIF2_TXI_IRQ, INTC_IPRD, 1, 3 },
89*780a1568SYoshinori Sato };
90*780a1568SYoshinori Sato 
91*780a1568SYoshinori Sato void __init init_IRQ_ipr(void)
92*780a1568SYoshinori Sato {
93*780a1568SYoshinori Sato 	make_ipr_irq(sh7619_ipr_map, ARRAY_SIZE(sh7619_ipr_map));
94*780a1568SYoshinori Sato }
95