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>
17 * Initialize IRQ setting
19 static void __init
sh7710voipgw_init_irq(void)
21 /* Disable all interrupts in IPR registers */
22 ctrl_outw(0x0, INTC_IPRA
);
23 ctrl_outw(0x0, INTC_IPRB
);
24 ctrl_outw(0x0, INTC_IPRC
);
25 ctrl_outw(0x0, INTC_IPRD
);
26 ctrl_outw(0x0, INTC_IPRE
);
27 ctrl_outw(0x0, INTC_IPRF
);
28 ctrl_outw(0x0, INTC_IPRG
);
29 ctrl_outw(0x0, INTC_IPRH
);
30 ctrl_outw(0x0, INTC_IPRI
);
32 /* Ack all interrupt sources in the IRR0 register */
33 ctrl_outb(0x3f, INTC_IRR0
);
35 /* Use IRQ0 - IRQ3 as active low interrupt lines i.e. disable
38 ctrl_outw(0x2aa, INTC_ICR1
);
40 /* Now make IPR interrupts */
41 make_ipr_irq(TIMER2_IRQ
, TIMER2_IPR_ADDR
,
42 TIMER2_IPR_POS
, TIMER2_PRIORITY
);
43 make_ipr_irq(WDT_IRQ
, WDT_IPR_ADDR
, WDT_IPR_POS
, WDT_PRIORITY
);
46 make_ipr_irq(SCIF0_ERI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
,
48 make_ipr_irq(SCIF0_RXI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
,
50 make_ipr_irq(SCIF0_BRI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
,
52 make_ipr_irq(SCIF0_TXI_IRQ
, SCIF0_IPR_ADDR
, SCIF0_IPR_POS
,
56 make_ipr_irq(DMTE0_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
);
57 make_ipr_irq(DMTE1_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
);
58 make_ipr_irq(DMTE2_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
);
59 make_ipr_irq(DMTE3_IRQ
, DMA_IPR_ADDR
, DMA_IPR_POS
, DMA_PRIORITY
);
62 make_ipr_irq(DMTE4_IRQ
, DMA2_IPR_ADDR
, DMA2_IPR_POS
, DMA2_PRIORITY
);
63 make_ipr_irq(DMTE4_IRQ
, DMA2_IPR_ADDR
, DMA2_IPR_POS
, DMA2_PRIORITY
);
66 make_ipr_irq(IPSEC_IRQ
, IPSEC_IPR_ADDR
, IPSEC_IPR_POS
, IPSEC_PRIORITY
);
69 make_ipr_irq(EDMAC0_IRQ
, EDMAC0_IPR_ADDR
, EDMAC0_IPR_POS
,
71 make_ipr_irq(EDMAC1_IRQ
, EDMAC1_IPR_ADDR
, EDMAC1_IPR_POS
,
73 make_ipr_irq(EDMAC2_IRQ
, EDMAC2_IPR_ADDR
, EDMAC2_IPR_POS
,
77 make_ipr_irq(SIOF0_ERI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
,
79 make_ipr_irq(SIOF0_TXI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
,
81 make_ipr_irq(SIOF0_RXI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
,
83 make_ipr_irq(SIOF0_CCI_IRQ
, SIOF0_IPR_ADDR
, SIOF0_IPR_POS
,
87 make_ipr_irq(SIOF1_ERI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
,
89 make_ipr_irq(SIOF1_TXI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
,
91 make_ipr_irq(SIOF1_RXI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
,
93 make_ipr_irq(SIOF1_CCI_IRQ
, SIOF1_IPR_ADDR
, SIOF1_IPR_POS
,
97 make_ipr_irq(IRQ1_IRQ
, IRQ1_IPR_ADDR
, IRQ1_IPR_POS
, IRQ1_PRIORITY
);
98 make_ipr_irq(IRQ2_IRQ
, IRQ2_IPR_ADDR
, IRQ2_IPR_POS
, IRQ2_PRIORITY
);
104 struct sh_machine_vector mv_sh7710voipgw __initmv
= {
105 .mv_name
= "SH7710 VoIP Gateway",
107 .mv_init_irq
= sh7710voipgw_init_irq
,
109 ALIAS_MV(sh7710voipgw
)