mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 18:11:56 +00:00
sh: add sh4-202 INTC tables
This patch adds INTC tables for sh4-202 with support for HUDI, TMU0, TMU1, TMU2, RTC, SCIF and WDT. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
5f8a29ba39
commit
67d889bd82
@ -2,6 +2,7 @@
|
||||
* SH4-202 Setup
|
||||
*
|
||||
* Copyright (C) 2006 Paul Mundt
|
||||
* Copyright (C) 2009 Magnus Damm
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
@ -12,6 +13,7 @@
|
||||
#include <linux/serial.h>
|
||||
#include <linux/serial_sci.h>
|
||||
#include <linux/sh_timer.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
static struct plat_sci_port sci_platform_data[] = {
|
||||
{
|
||||
@ -150,7 +152,59 @@ void __init plat_early_device_setup(void)
|
||||
ARRAY_SIZE(sh4202_early_devices));
|
||||
}
|
||||
|
||||
enum {
|
||||
UNUSED = 0,
|
||||
|
||||
/* interrupt sources */
|
||||
IRL0, IRL1, IRL2, IRL3, /* only IRLM mode supported */
|
||||
HUDI, TMU0, TMU1, TMU2, RTC, SCIF, WDT,
|
||||
};
|
||||
|
||||
static struct intc_vect vectors[] __initdata = {
|
||||
INTC_VECT(HUDI, 0x600),
|
||||
INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420),
|
||||
INTC_VECT(TMU2, 0x440), INTC_VECT(TMU2, 0x460),
|
||||
INTC_VECT(RTC, 0x480), INTC_VECT(RTC, 0x4a0),
|
||||
INTC_VECT(RTC, 0x4c0),
|
||||
INTC_VECT(SCIF, 0x700), INTC_VECT(SCIF, 0x720),
|
||||
INTC_VECT(SCIF, 0x740), INTC_VECT(SCIF, 0x760),
|
||||
INTC_VECT(WDT, 0x560),
|
||||
};
|
||||
|
||||
static struct intc_prio_reg prio_registers[] __initdata = {
|
||||
{ 0xffd00004, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } },
|
||||
{ 0xffd00008, 0, 16, 4, /* IPRB */ { WDT, 0, 0, 0 } },
|
||||
{ 0xffd0000c, 0, 16, 4, /* IPRC */ { 0, 0, SCIF, HUDI } },
|
||||
{ 0xffd00010, 0, 16, 4, /* IPRD */ { IRL0, IRL1, IRL2, IRL3 } },
|
||||
};
|
||||
|
||||
static DECLARE_INTC_DESC(intc_desc, "sh4-202", vectors, NULL,
|
||||
NULL, prio_registers, NULL);
|
||||
|
||||
static struct intc_vect vectors_irlm[] __initdata = {
|
||||
INTC_VECT(IRL0, 0x240), INTC_VECT(IRL1, 0x2a0),
|
||||
INTC_VECT(IRL2, 0x300), INTC_VECT(IRL3, 0x360),
|
||||
};
|
||||
|
||||
static DECLARE_INTC_DESC(intc_desc_irlm, "sh4-202_irlm", vectors_irlm, NULL,
|
||||
NULL, prio_registers, NULL);
|
||||
|
||||
void __init plat_irq_setup(void)
|
||||
{
|
||||
/* do nothing - all IRL interrupts are handled by the board code */
|
||||
register_intc_controller(&intc_desc);
|
||||
}
|
||||
|
||||
#define INTC_ICR 0xffd00000UL
|
||||
#define INTC_ICR_IRLM (1<<7)
|
||||
|
||||
void __init plat_irq_setup_pins(int mode)
|
||||
{
|
||||
switch (mode) {
|
||||
case IRQ_MODE_IRQ: /* individual interrupt mode for IRL3-0 */
|
||||
ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR);
|
||||
register_intc_controller(&intc_desc_irlm);
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user