sh: Titan board support.
[linux-2.6.git] / arch / sh / boards / titan / setup.c
1 /*
2  *      Setup for Titan
3  */
4
5 #include <linux/init.h>
6 #include <asm/irq.h>
7 #include <asm/titan.h>
8 #include <asm/io.h>
9
10 extern void __init pcibios_init_platform(void);
11
12 static void __init init_titan_irq(void)
13 {
14         /* enable individual interrupt mode for externals */
15         ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR);
16
17         make_ipr_irq( TITAN_IRQ_WAN,   IRL0_IPR_ADDR, IRL0_IPR_POS, IRL0_PRIORITY); /* PCIRQ0 */
18         make_ipr_irq( TITAN_IRQ_LAN,   IRL1_IPR_ADDR, IRL1_IPR_POS, IRL1_PRIORITY); /* PCIRQ1 */
19         make_ipr_irq( TITAN_IRQ_MPCIA, IRL2_IPR_ADDR, IRL2_IPR_POS, IRL2_PRIORITY); /* PCIRQ2 */
20         make_ipr_irq( TITAN_IRQ_USB,   IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); /* PCIRQ3 */
21 }
22
23 const char *get_system_type(void)
24 {
25         return "Titan";
26 }
27
28 int __init platform_setup(void)
29 {
30         printk("%s Platform Setup\n", get_system_type());
31         return 0;
32 }
33
34 struct sh_machine_vector mv_titan __initmv = {
35         .mv_nr_irqs =   NR_IRQS,
36
37         .mv_inb =       titan_inb,
38         .mv_inw =       titan_inw,
39         .mv_inl =       titan_inl,
40         .mv_outb =      titan_outb,
41         .mv_outw =      titan_outw,
42         .mv_outl =      titan_outl,
43
44         .mv_inb_p =     titan_inb_p,
45         .mv_inw_p =     titan_inw,
46         .mv_inl_p =     titan_inl,
47         .mv_outb_p =    titan_outb_p,
48         .mv_outw_p =    titan_outw,
49         .mv_outl_p =    titan_outl,
50
51         .mv_insl =      titan_insl,
52         .mv_outsl =     titan_outsl,
53
54         .mv_ioremap =   titan_ioremap,
55         .mv_ioport_map = titan_ioport_map,
56
57         .mv_init_irq =  init_titan_irq,
58         .mv_init_pci =  pcibios_init_platform,
59 };
60 ALIAS_MV(titan)