1 /* 2 * arch/sh/boards/dreamcast/setup.c 3 * 4 * Hardware support for the Sega Dreamcast. 5 * 6 * Copyright (c) 2001, 2002 M. R. Brown <mrbrown@linuxdc.org> 7 * Copyright (c) 2002, 2003, 2004 Paul Mundt <lethal@linux-sh.org> 8 * 9 * This file is part of the LinuxDC project (www.linuxdc.org) 10 * 11 * Released under the terms of the GNU GPL v2.0. 12 * 13 * This file originally bore the message (with enclosed-$): 14 * Id: setup_dc.c,v 1.5 2001/05/24 05:09:16 mrbrown Exp 15 * SEGA Dreamcast support 16 */ 17 18 #include <linux/sched.h> 19 #include <linux/kernel.h> 20 #include <linux/param.h> 21 #include <linux/interrupt.h> 22 #include <linux/init.h> 23 #include <linux/irq.h> 24 #include <linux/device.h> 25 #include <asm/io.h> 26 #include <asm/irq.h> 27 #include <asm/rtc.h> 28 #include <asm/machvec.h> 29 #include <mach/sysasic.h> 30 31 extern struct hw_interrupt_type systemasic_int; 32 extern void aica_time_init(void); 33 extern int gapspci_init(void); 34 extern int systemasic_irq_demux(int); 35 36 static void __init dreamcast_setup(char **cmdline_p) 37 { 38 int i; 39 40 /* Mask all hardware events */ 41 /* XXX */ 42 43 /* Acknowledge any previous events */ 44 /* XXX */ 45 46 __set_io_port_base(0xa0000000); 47 48 /* Assign all virtual IRQs to the System ASIC int. handler */ 49 for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++) 50 irq_desc[i].chip = &systemasic_int; 51 52 board_time_init = aica_time_init; 53 54 #ifdef CONFIG_PCI 55 if (gapspci_init() < 0) 56 printk(KERN_WARNING "GAPSPCI was not detected.\n"); 57 #endif 58 } 59 60 static struct sh_machine_vector mv_dreamcast __initmv = { 61 .mv_name = "Sega Dreamcast", 62 .mv_setup = dreamcast_setup, 63 .mv_irq_demux = systemasic_irq_demux, 64 }; 65