Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: multiple vectors per irq - sh7710.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

+21 -48
+21 -48
arch/sh/kernel/cpu/sh3/setup-sh7710.c
··· 1 1 /* 2 2 * SH3 Setup code for SH7710, SH7712 3 3 * 4 - * Copyright (C) 2006, 2007 Paul Mundt 4 + * Copyright (C) 2006 - 2009 Paul Mundt 5 5 * Copyright (C) 2007 Nobuhiro Iwamatsu 6 6 * 7 7 * This file is subject to the terms and conditions of the GNU General Public ··· 20 20 21 21 /* interrupt sources */ 22 22 IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, 23 - DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3, 24 - SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, 25 - SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, 26 - DMAC_DEI4, DMAC_DEI5, 27 - IPSEC, 23 + DMAC1, SCIF0, SCIF1, DMAC2, IPSEC, 28 24 EDMAC0, EDMAC1, EDMAC2, 29 - SIOF0_ERI, SIOF0_TXI, SIOF0_RXI, SIOF0_CCI, 30 - SIOF1_ERI, SIOF1_TXI, SIOF1_RXI, SIOF1_CCI, 31 - TMU0, TMU1, TMU2, 32 - RTC_ATI, RTC_PRI, RTC_CUI, 33 - WDT, 34 - REF, 25 + SIOF0, SIOF1, 35 26 36 - /* interrupt groups */ 37 - RTC, DMAC1, SCIF0, SCIF1, DMAC2, SIOF0, SIOF1, 27 + TMU0, TMU1, TMU2, 28 + RTC, WDT, REF, 38 29 }; 39 30 40 31 static struct intc_vect vectors[] __initdata = { 41 32 /* IRQ0->5 are handled in setup-sh3.c */ 42 - INTC_VECT(DMAC_DEI0, 0x800), INTC_VECT(DMAC_DEI1, 0x820), 43 - INTC_VECT(DMAC_DEI2, 0x840), INTC_VECT(DMAC_DEI3, 0x860), 44 - INTC_VECT(SCIF0_ERI, 0x880), INTC_VECT(SCIF0_RXI, 0x8a0), 45 - INTC_VECT(SCIF0_BRI, 0x8c0), INTC_VECT(SCIF0_TXI, 0x8e0), 46 - INTC_VECT(SCIF1_ERI, 0x900), INTC_VECT(SCIF1_RXI, 0x920), 47 - INTC_VECT(SCIF1_BRI, 0x940), INTC_VECT(SCIF1_TXI, 0x960), 48 - INTC_VECT(DMAC_DEI4, 0xb80), INTC_VECT(DMAC_DEI5, 0xba0), 33 + INTC_VECT(DMAC1, 0x800), INTC_VECT(DMAC1, 0x820), 34 + INTC_VECT(DMAC1, 0x840), INTC_VECT(DMAC1, 0x860), 35 + INTC_VECT(SCIF0, 0x880), INTC_VECT(SCIF0, 0x8a0), 36 + INTC_VECT(SCIF0, 0x8c0), INTC_VECT(SCIF0, 0x8e0), 37 + INTC_VECT(SCIF1, 0x900), INTC_VECT(SCIF1, 0x920), 38 + INTC_VECT(SCIF1, 0x940), INTC_VECT(SCIF1, 0x960), 39 + INTC_VECT(DMAC2, 0xb80), INTC_VECT(DMAC2, 0xba0), 49 40 #ifdef CONFIG_CPU_SUBTYPE_SH7710 50 41 INTC_VECT(IPSEC, 0xbe0), 51 42 #endif 52 43 INTC_VECT(EDMAC0, 0xc00), INTC_VECT(EDMAC1, 0xc20), 53 44 INTC_VECT(EDMAC2, 0xc40), 54 - INTC_VECT(SIOF0_ERI, 0xe00), INTC_VECT(SIOF0_TXI, 0xe20), 55 - INTC_VECT(SIOF0_RXI, 0xe40), INTC_VECT(SIOF0_CCI, 0xe60), 56 - INTC_VECT(SIOF1_ERI, 0xe80), INTC_VECT(SIOF1_TXI, 0xea0), 57 - INTC_VECT(SIOF1_RXI, 0xec0), INTC_VECT(SIOF1_CCI, 0xee0), 45 + INTC_VECT(SIOF0, 0xe00), INTC_VECT(SIOF0, 0xe20), 46 + INTC_VECT(SIOF0, 0xe40), INTC_VECT(SIOF0, 0xe60), 47 + INTC_VECT(SIOF1, 0xe80), INTC_VECT(SIOF1, 0xea0), 48 + INTC_VECT(SIOF1, 0xec0), INTC_VECT(SIOF1, 0xee0), 58 49 INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), 59 50 INTC_VECT(TMU2, 0x440), 60 - INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), 61 - INTC_VECT(RTC_CUI, 0x4c0), 51 + INTC_VECT(RTC, 0x480), INTC_VECT(RTC, 0x4a0), 52 + INTC_VECT(RTC, 0x4c0), 62 53 INTC_VECT(WDT, 0x560), 63 54 INTC_VECT(REF, 0x580), 64 - }; 65 - 66 - static struct intc_group groups[] __initdata = { 67 - INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), 68 - INTC_GROUP(DMAC1, DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3), 69 - INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), 70 - INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), 71 - INTC_GROUP(DMAC2, DMAC_DEI4, DMAC_DEI5), 72 - INTC_GROUP(SIOF0, SIOF0_ERI, SIOF0_TXI, SIOF0_RXI, SIOF0_CCI), 73 - INTC_GROUP(SIOF1, SIOF1_ERI, SIOF1_TXI, SIOF1_RXI, SIOF1_CCI), 74 55 }; 75 56 76 57 static struct intc_prio_reg prio_registers[] __initdata = { ··· 66 85 { 0xa4080006, 0, 16, 4, /* IPRI */ { 0, 0, SIOF1 } }, 67 86 }; 68 87 69 - static DECLARE_INTC_DESC(intc_desc, "sh7710", vectors, groups, 88 + static DECLARE_INTC_DESC(intc_desc, "sh7710", vectors, NULL, 70 89 NULL, prio_registers, NULL); 71 90 72 91 static struct resource rtc_resources[] = { ··· 78 97 [1] = { 79 98 .start = 20, 80 99 .flags = IORESOURCE_IRQ, 81 - }, 82 - [2] = { 83 - .start = 21, 84 - .flags = IORESOURCE_IRQ, 85 - }, 86 - [3] = { 87 - .start = 22, 88 - .flags = IORESOURCE_IRQ, 89 100 }, 90 101 }; 91 102 ··· 100 127 .mapbase = 0xa4400000, 101 128 .flags = UPF_BOOT_AUTOCONF, 102 129 .type = PORT_SCIF, 103 - .irqs = { 52, 53, 55, 54 }, 130 + .irqs = { 52, 52, 52, 52 }, 104 131 }, { 105 132 .mapbase = 0xa4410000, 106 133 .flags = UPF_BOOT_AUTOCONF, 107 134 .type = PORT_SCIF, 108 - .irqs = { 56, 57, 59, 58 }, 135 + .irqs = { 56, 56, 56, 56 }, 109 136 }, { 110 137 111 138 .flags = 0,