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 <asm/mach/sysasic.h> 30 31extern struct hw_interrupt_type systemasic_int; 32extern void aica_time_init(void); 33extern int gapspci_init(void); 34extern int systemasic_irq_demux(int); 35 36void *dreamcast_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); 37int dreamcast_consistent_free(struct device *, size_t, void *, dma_addr_t); 38 39static void __init dreamcast_setup(char **cmdline_p) 40{ 41 int i; 42 43 /* Mask all hardware events */ 44 45 /* Acknowledge any previous events */ 46 47 __set_io_port_base(0xa0000000); 48 49 /* Assign all virtual IRQs to the System ASIC int. handler */ 50 for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++) 51 irq_desc[i].chip = &systemasic_int; 52 53 board_time_init = aica_time_init; 54 55#ifdef CONFIG_PCI 56 if (gapspci_init() < 0) 57 printk(KERN_WARNING "GAPSPCI was not detected.\n"); 58#endif 59} 60 61struct sh_machine_vector mv_dreamcast __initmv = { 62 .mv_name = "Sega Dreamcast", 63 .mv_setup = dreamcast_setup, 64 .mv_irq_demux = systemasic_irq_demux, 65 66#ifdef CONFIG_PCI 67 .mv_consistent_alloc = dreamcast_consistent_alloc, 68 .mv_consistent_free = dreamcast_consistent_free, 69#endif 70}; 71ALIAS_MV(dreamcast) 72