1/*
2 * arch/sh/boards/titan/setup.c - Setup for Titan
3 *
4 *  Copyright (C) 2006  Jamie Lenehan
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License.  See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#include <linux/init.h>
11#include <linux/irq.h>
12#include <asm/titan.h>
13#include <asm/io.h>
14
15static struct ipr_data titan_ipr_map[] = {
16	/* IRQ, IPR idx, shift, prio */
17	{ TITAN_IRQ_WAN,   3, 12, 8 },	/* eth0 (WAN) */
18	{ TITAN_IRQ_LAN,   3,  8, 8 },	/* eth1 (LAN) */
19	{ TITAN_IRQ_MPCIA, 3,  4, 8 },	/* mPCI A (top) */
20	{ TITAN_IRQ_USB,   3,  0, 8 },	/* mPCI B (bottom), USB */
21};
22
23static void __init init_titan_irq(void)
24{
25	/* enable individual interrupt mode for externals */
26	ipr_irq_enable_irlm();
27	/* register ipr irqs */
28	make_ipr_irq(titan_ipr_map, ARRAY_SIZE(titan_ipr_map));
29}
30
31struct sh_machine_vector mv_titan __initmv = {
32	.mv_name =	"Titan",
33
34	.mv_inb =	titan_inb,
35	.mv_inw =	titan_inw,
36	.mv_inl =	titan_inl,
37	.mv_outb =	titan_outb,
38	.mv_outw =	titan_outw,
39	.mv_outl =	titan_outl,
40
41	.mv_inb_p =	titan_inb_p,
42	.mv_inw_p =	titan_inw,
43	.mv_inl_p =	titan_inl,
44	.mv_outb_p =	titan_outb_p,
45	.mv_outw_p =	titan_outw,
46	.mv_outl_p =	titan_outl,
47
48	.mv_insl =	titan_insl,
49	.mv_outsl =	titan_outsl,
50
51	.mv_ioport_map = titan_ioport_map,
52
53	.mv_init_irq =	init_titan_irq,
54};
55ALIAS_MV(titan)
56