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