4 * Copyright (C) 2006 Yoshinori Sato
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
10 #include <linux/platform_device.h>
11 #include <linux/init.h>
12 #include <linux/serial.h>
15 static struct plat_sci_port sci_platform_data[] = {
17 .mapbase = 0xf8400000,
18 .flags = UPF_BOOT_AUTOCONF,
20 .irqs = { 88, 89, 91, 90},
22 .mapbase = 0xf8410000,
23 .flags = UPF_BOOT_AUTOCONF,
25 .irqs = { 92, 93, 95, 94},
27 .mapbase = 0xf8420000,
28 .flags = UPF_BOOT_AUTOCONF,
30 .irqs = { 96, 97, 99, 98},
36 static struct platform_device sci_device = {
40 .platform_data = sci_platform_data,
44 static struct platform_device *sh7619_devices[] __initdata = {
48 static int __init sh7619_devices_setup(void)
50 return platform_add_devices(sh7619_devices,
51 ARRAY_SIZE(sh7619_devices));
53 __initcall(sh7619_devices_setup);
55 static struct ipr_data sh7619_ipr_map[] = {
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 */
71 static unsigned int ipr_offsets[] = {
72 0xf8080000, /* IPRC */
73 0xf8080002, /* IPRD */
74 0xf8080004, /* IPRE */
75 0xf8080006, /* IPRF */
76 0xf8080008, /* IPRG */
79 /* given the IPR index return the address of the IPR register */
80 unsigned int map_ipridx_to_addr(int idx)
82 if (unlikely(idx >= ARRAY_SIZE(ipr_offsets)))
84 return ipr_offsets[idx];
87 void __init init_IRQ_ipr(void)
89 make_ipr_irq(sh7619_ipr_map, ARRAY_SIZE(sh7619_ipr_map));