| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * | 
|  | 3 | * By Dustin McIntire (dustin@sensoria.com) (c)2001 | 
|  | 4 | * | 
|  | 5 | * Setup and IRQ handling code for the HD64465 companion chip. | 
|  | 6 | * by Greg Banks <gbanks@pocketpenguins.com> | 
|  | 7 | * Copyright (c) 2000 PocketPenguins Inc | 
|  | 8 | * | 
|  | 9 | * Derived from setup_hd64465.c which bore the message: | 
|  | 10 | * Greg Banks <gbanks@pocketpenguins.com> | 
|  | 11 | * Copyright (c) 2000 PocketPenguins Inc and | 
|  | 12 | * Copyright (C) 2000 YAEGASHI Takeshi | 
|  | 13 | * and setup_cqreek.c which bore message: | 
|  | 14 | * Copyright (C) 2000  Niibe Yutaka | 
|  | 15 | * | 
|  | 16 | * May be copied or modified under the terms of the GNU General Public | 
|  | 17 | * License.  See linux/COPYING for more information. | 
|  | 18 | * | 
|  | 19 | * Setup functions for a Hitachi Big Sur Evaluation Board. | 
|  | 20 | * | 
|  | 21 | */ | 
|  | 22 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 23 | #include <linux/sched.h> | 
|  | 24 | #include <linux/module.h> | 
|  | 25 | #include <linux/kernel.h> | 
|  | 26 | #include <linux/param.h> | 
|  | 27 | #include <linux/ioport.h> | 
|  | 28 | #include <linux/interrupt.h> | 
|  | 29 | #include <linux/init.h> | 
|  | 30 | #include <linux/irq.h> | 
|  | 31 | #include <linux/bitops.h> | 
|  | 32 |  | 
|  | 33 | #include <asm/io.h> | 
|  | 34 | #include <asm/irq.h> | 
|  | 35 | #include <asm/machvec.h> | 
|  | 36 | #include <asm/bigsur/io.h> | 
|  | 37 | #include <asm/hd64465/hd64465.h> | 
|  | 38 | #include <asm/bigsur/bigsur.h> | 
|  | 39 |  | 
|  | 40 | /*===========================================================*/ | 
|  | 41 | //		Big Sur Init Routines | 
|  | 42 | /*===========================================================*/ | 
|  | 43 |  | 
| Paul Mundt | 2c7834a | 2006-09-27 18:17:31 +0900 | [diff] [blame] | 44 | static void __init bigsur_setup(char **cmdline_p) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 45 | { | 
|  | 46 | /* Mask all 2nd level IRQ's */ | 
|  | 47 | outb(-1,BIGSUR_IMR0); | 
|  | 48 | outb(-1,BIGSUR_IMR1); | 
|  | 49 | outb(-1,BIGSUR_IMR2); | 
|  | 50 | outb(-1,BIGSUR_IMR3); | 
|  | 51 |  | 
|  | 52 | /* Mask 1st level interrupts */ | 
|  | 53 | outb(-1,BIGSUR_IRLMR0); | 
|  | 54 | outb(-1,BIGSUR_IRLMR1); | 
|  | 55 |  | 
|  | 56 | #if defined (CONFIG_HD64465) && defined (CONFIG_SERIAL) | 
|  | 57 | /* remap IO ports for first ISA serial port to HD64465 UART */ | 
|  | 58 | bigsur_port_map(0x3f8, 8, CONFIG_HD64465_IOBASE + 0x8000, 1); | 
|  | 59 | #endif /* CONFIG_HD64465 && CONFIG_SERIAL */ | 
|  | 60 | /* TODO: setup IDE registers */ | 
|  | 61 | bigsur_port_map(BIGSUR_IDECTL_IOPORT, 2, BIGSUR_ICTL, 8); | 
|  | 62 | /* Setup the Ethernet port to BIGSUR_ETHER_IOPORT */ | 
|  | 63 | bigsur_port_map(BIGSUR_ETHER_IOPORT, 16, BIGSUR_ETHR+BIGSUR_ETHER_IOPORT, 0); | 
|  | 64 | /* set page to 1 */ | 
|  | 65 | outw(1, BIGSUR_ETHR+0xe); | 
|  | 66 | /* set the IO port to BIGSUR_ETHER_IOPORT */ | 
|  | 67 | outw(BIGSUR_ETHER_IOPORT<<3, BIGSUR_ETHR+0x2); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 68 | } | 
|  | 69 |  | 
| Paul Mundt | 2c7834a | 2006-09-27 18:17:31 +0900 | [diff] [blame] | 70 | /* | 
|  | 71 | * The Machine Vector | 
|  | 72 | */ | 
|  | 73 | extern void heartbeat_bigsur(void); | 
|  | 74 | extern void init_bigsur_IRQ(void); | 
|  | 75 |  | 
|  | 76 | struct sh_machine_vector mv_bigsur __initmv = { | 
|  | 77 | .mv_name		= "Big Sur", | 
|  | 78 | .mv_setup		= bigsur_setup, | 
|  | 79 |  | 
|  | 80 | .mv_isa_port2addr	= bigsur_isa_port2addr, | 
|  | 81 | .mv_irq_demux       	= bigsur_irq_demux, | 
|  | 82 |  | 
|  | 83 | .mv_init_irq		= init_bigsur_IRQ, | 
|  | 84 | #ifdef CONFIG_HEARTBEAT | 
|  | 85 | .mv_heartbeat		= heartbeat_bigsur, | 
|  | 86 | #endif | 
|  | 87 | }; | 
|  | 88 | ALIAS_MV(bigsur) |