2 * Renesas Technology SH7710 VoIP Gateway
4 * Copyright (C) 2006 Ranjit Deshpande
5 * Kenati Technologies Inc.
7 * May be copied or modified under the terms of the GNU General Public
8 * License. See linux/COPYING for more information.
10 #include <linux/init.h>
11 #include <asm/machvec.h>
15 static struct ipr_data sh7710voipgw_ipr_map
[] = {
16 { TIMER2_IRQ
, TIMER2_IPR_ADDR
, TIMER2_IPR_POS
, TIMER2_PRIORITY
},
17 { WDT_IRQ
, WDT_IPR_ADDR
, WDT_IPR_POS
, WDT_PRIORITY
},
20 { SCIF0_ERI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
, SCIF0_PRIORITY
},
21 { SCIF0_RXI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
, SCIF0_PRIORITY
},
22 { SCIF0_BRI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
, SCIF0_PRIORITY
},
23 { SCIF0_TXI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
, SCIF0_PRIORITY
},
26 { DMTE0_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
},
27 { DMTE1_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
},
28 { DMTE2_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
},
29 { DMTE3_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
},
32 { DMTE4_IRQ
, DMA2_IPR_ADDR
, DMA2_IPR_POS
, DMA2_PRIORITY
},
33 { DMTE4_IRQ
, DMA2_IPR_ADDR
, DMA2_IPR_POS
, DMA2_PRIORITY
},
36 { IPSEC_IRQ
, IPSEC_IPR_ADDR
, IPSEC_IPR_POS
, IPSEC_PRIORITY
},
39 { EDMAC0_IRQ
, EDMAC0_IPR_ADDR
, EDMAC0_IPR_POS
, EDMAC0_PRIORITY
},
40 { EDMAC1_IRQ
, EDMAC1_IPR_ADDR
, EDMAC1_IPR_POS
, EDMAC1_PRIORITY
},
41 { EDMAC2_IRQ
, EDMAC2_IPR_ADDR
, EDMAC2_IPR_POS
, EDMAC2_PRIORITY
},
44 { SIOF0_ERI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
, SIOF0_PRIORITY
},
45 { SIOF0_TXI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
, SIOF0_PRIORITY
},
46 { SIOF0_RXI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
, SIOF0_PRIORITY
},
47 { SIOF0_CCI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
, SIOF0_PRIORITY
},
50 { SIOF1_ERI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
, SIOF1_PRIORITY
},
51 { SIOF1_TXI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
, SIOF1_PRIORITY
},
52 { SIOF1_RXI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
, SIOF1_PRIORITY
},
53 { SIOF1_CCI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
, SIOF1_PRIORITY
},
56 { IRQ1_IRQ
, IRQ1_IPR_ADDR
, IRQ1_IPR_POS
, IRQ1_PRIORITY
},
57 { IRQ2_IRQ
, IRQ2_IPR_ADDR
, IRQ2_IPR_POS
, IRQ2_PRIORITY
},
61 * Initialize IRQ setting
63 static void __init
sh7710voipgw_init_irq(void)
65 /* Disable all interrupts in IPR registers */
66 ctrl_outw(0x0, INTC_IPRA
);
67 ctrl_outw(0x0, INTC_IPRB
);
68 ctrl_outw(0x0, INTC_IPRC
);
69 ctrl_outw(0x0, INTC_IPRD
);
70 ctrl_outw(0x0, INTC_IPRE
);
71 ctrl_outw(0x0, INTC_IPRF
);
72 ctrl_outw(0x0, INTC_IPRG
);
73 ctrl_outw(0x0, INTC_IPRH
);
74 ctrl_outw(0x0, INTC_IPRI
);
76 /* Ack all interrupt sources in the IRR0 register */
77 ctrl_outb(0x3f, INTC_IRR0
);
79 /* Use IRQ0 - IRQ3 as active low interrupt lines i.e. disable
82 ctrl_outw(0x2aa, INTC_ICR1
);
84 make_ipr_irq(sh7710voipgw_ipr_map
, ARRAY_SIZE(sh7710voipgw_ipr_map
));
90 static struct sh_machine_vector mv_sh7710voipgw __initmv
= {
91 .mv_name
= "SH7710 VoIP Gateway",
93 .mv_init_irq
= sh7710voipgw_init_irq
,