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