Commit 91b91d01 authored by Paul Mundt's avatar Paul Mundt

sh: SH7710VoIPGW board support.

This adds support for the SH7710 VoIP Gateway board.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 49c3f807
......@@ -149,6 +149,13 @@ config SH_HS7751RVOIP
Select HS7751RVOIP if configuring for a Renesas Technology
Sales VoIP board.
config SH_7710VOIPGW
bool "SH7710-VOIP-GW"
select CPU_SUBTYPE_SH7710
help
Select this option to build a kernel for the SH7710 based
VOIP GW.
config SH_RTS7751R2D
bool "RTS7751R2D"
select CPU_SUBTYPE_SH7751R
......@@ -405,6 +412,8 @@ config ISA_DMA_API
menu "Kernel features"
source kernel/Kconfig.hz
config KEXEC
bool "kexec system call (EXPERIMENTAL)"
depends on EXPERIMENTAL
......@@ -461,6 +470,8 @@ config NR_CPUS
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
source "kernel/Kconfig.preempt"
config CPU_HAS_SR_RB
bool "CPU has SR.RB"
depends on CPU_SH3 || CPU_SH4
......
......@@ -103,6 +103,7 @@ machdir-$(CONFIG_SH_RTS7751R2D) := renesas/rts7751r2d
machdir-$(CONFIG_SH_7751_SYSTEMH) := renesas/systemh
machdir-$(CONFIG_SH_EDOSK7705) := renesas/edosk7705
machdir-$(CONFIG_SH_R7780RP) := renesas/r7780rp
machdir-$(CONFIG_SH_7710VOIPGW) := renesas/sh7710voipgw
machdir-$(CONFIG_SH_SH4202_MICRODEV) := superh/microdev
machdir-$(CONFIG_SH_LANDISK) := landisk
machdir-$(CONFIG_SH_TITAN) := titan
......
/*
* Renesas Technology SH7710 VoIP Gateway
*
* Copyright (C) 2006 Ranjit Deshpande
* Kenati Technologies Inc.
*
* May be copied or modified under the terms of the GNU General Public
* License. See linux/COPYING for more information.
*/
#include <linux/init.h>
#include <asm/machvec.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/irq.h>
/*
* Initialize IRQ setting
*/
static void __init sh7710voipgw_init_irq(void)
{
/* Disable all interrupts in IPR registers */
ctrl_outw(0x0, INTC_IPRA);
ctrl_outw(0x0, INTC_IPRB);
ctrl_outw(0x0, INTC_IPRC);
ctrl_outw(0x0, INTC_IPRD);
ctrl_outw(0x0, INTC_IPRE);
ctrl_outw(0x0, INTC_IPRF);
ctrl_outw(0x0, INTC_IPRG);
ctrl_outw(0x0, INTC_IPRH);
ctrl_outw(0x0, INTC_IPRI);
/* Ack all interrupt sources in the IRR0 register */
ctrl_outb(0x3f, INTC_IRR0);
/* Use IRQ0 - IRQ3 as active low interrupt lines i.e. disable
* IRL mode.
*/
ctrl_outw(0x2aa, INTC_ICR1);
/* Now make IPR interrupts */
make_ipr_irq(TIMER2_IRQ, TIMER2_IPR_ADDR,
TIMER2_IPR_POS, TIMER2_PRIORITY);
make_ipr_irq(WDT_IRQ, WDT_IPR_ADDR, WDT_IPR_POS, WDT_PRIORITY);
/* SCIF0 */
make_ipr_irq(SCIF0_ERI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
SCIF0_PRIORITY);
make_ipr_irq(SCIF0_RXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
SCIF0_PRIORITY);
make_ipr_irq(SCIF0_BRI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
SCIF0_PRIORITY);
make_ipr_irq(SCIF0_TXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
SCIF0_PRIORITY);
/* DMAC-1 */
make_ipr_irq(DMTE0_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
make_ipr_irq(DMTE1_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
make_ipr_irq(DMTE2_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
make_ipr_irq(DMTE3_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
/* DMAC-2 */
make_ipr_irq(DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY);
make_ipr_irq(DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY);
/* IPSEC */
make_ipr_irq(IPSEC_IRQ, IPSEC_IPR_ADDR, IPSEC_IPR_POS, IPSEC_PRIORITY);
/* EDMAC */
make_ipr_irq(EDMAC0_IRQ, EDMAC0_IPR_ADDR, EDMAC0_IPR_POS,
EDMAC0_PRIORITY);
make_ipr_irq(EDMAC1_IRQ, EDMAC1_IPR_ADDR, EDMAC1_IPR_POS,
EDMAC1_PRIORITY);
make_ipr_irq(EDMAC2_IRQ, EDMAC2_IPR_ADDR, EDMAC2_IPR_POS,
EDMAC2_PRIORITY);
/* SIOF0 */
make_ipr_irq(SIOF0_ERI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
SIOF0_PRIORITY);
make_ipr_irq(SIOF0_TXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
SIOF0_PRIORITY);
make_ipr_irq(SIOF0_RXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
SIOF0_PRIORITY);
make_ipr_irq(SIOF0_CCI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
SIOF0_PRIORITY);
/* SIOF1 */
make_ipr_irq(SIOF1_ERI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
SIOF1_PRIORITY);
make_ipr_irq(SIOF1_TXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
SIOF1_PRIORITY);
make_ipr_irq(SIOF1_RXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
SIOF1_PRIORITY);
make_ipr_irq(SIOF1_CCI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
SIOF1_PRIORITY);
/* SLIC IRQ's */
make_ipr_irq(IRQ1_IRQ, IRQ1_IPR_ADDR, IRQ1_IPR_POS, IRQ1_PRIORITY);
make_ipr_irq(IRQ2_IRQ, IRQ2_IPR_ADDR, IRQ2_IPR_POS, IRQ2_PRIORITY);
}
/*
* The Machine Vector
*/
struct sh_machine_vector mv_sh7710voipgw __initmv = {
.mv_name = "SH7710 VoIP Gateway",
.mv_nr_irqs = 104,
.mv_init_irq = sh7710voipgw_init_irq,
};
ALIAS_MV(sh7710voipgw)
This diff is collapsed.
......@@ -28,3 +28,4 @@ R7780RP SH_R7780RP
R7780MP SH_R7780MP
TITAN SH_TITAN
SHMIN SH_SHMIN
7710VOIPGW SH_7710VOIPGW
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment