1/* 2 * linux/arch/sh/boards/snapgear/setup.c 3 * 4 * Copyright (C) 2002 David McCullough <davidm@snapgear.com> 5 * Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org> 6 * 7 * Based on files with the following comments: 8 * 9 * Copyright (C) 2000 Kazumoto Kojima 10 * 11 * Modified for 7751 Solution Engine by 12 * Ian da Silva and Jeremy Siegel, 2001. 13 */ 14#include <linux/init.h> 15#include <linux/irq.h> 16#include <linux/interrupt.h> 17#include <linux/timer.h> 18#include <linux/delay.h> 19#include <linux/module.h> 20#include <linux/sched.h> 21#include <asm/machvec.h> 22#include <mach/snapgear.h> 23#include <asm/irq.h> 24#include <asm/io.h> 25#include <cpu/timer.h> 26 27/* 28 * EraseConfig handling functions 29 */ 30 31static irqreturn_t eraseconfig_interrupt(int irq, void *dev_id) 32{ 33 (void)__raw_readb(0xb8000000); /* dummy read */ 34 35 printk("SnapGear: erase switch interrupt!\n"); 36 37 return IRQ_HANDLED; 38} 39 40static int __init eraseconfig_init(void) 41{ 42 printk("SnapGear: EraseConfig init\n"); 43 /* Setup "EraseConfig" switch on external IRQ 0 */ 44 if (request_irq(IRL0_IRQ, eraseconfig_interrupt, IRQF_DISABLED, 45 "Erase Config", NULL)) 46 printk("SnapGear: failed to register IRQ%d for Reset witch\n", 47 IRL0_IRQ); 48 else 49 printk("SnapGear: registered EraseConfig switch on IRQ%d\n", 50 IRL0_IRQ); 51 return(0); 52} 53 54module_init(eraseconfig_init); 55 56/****************************************************************************/ 57/* 58 * Initialize IRQ setting 59 * 60 * IRL0 = erase switch 61 * IRL1 = eth0 62 * IRL2 = eth1 63 * IRL3 = crypto 64 */ 65 66static void __init init_snapgear_IRQ(void) 67{ 68 printk("Setup SnapGear IRQ/IPR ...\n"); 69 /* enable individual interrupt mode for externals */ 70 plat_irq_setup_pins(IRQ_MODE_IRQ); 71} 72 73/* 74 * The Machine Vector 75 */ 76static struct sh_machine_vector mv_snapgear __initmv = { 77 .mv_name = "SnapGear SecureEdge5410", 78 .mv_nr_irqs = 72, 79 80 .mv_inb = snapgear_inb, 81 .mv_inw = snapgear_inw, 82 .mv_inl = snapgear_inl, 83 .mv_outb = snapgear_outb, 84 .mv_outw = snapgear_outw, 85 .mv_outl = snapgear_outl, 86 87 .mv_inb_p = snapgear_inb_p, 88 .mv_inw_p = snapgear_inw, 89 .mv_inl_p = snapgear_inl, 90 .mv_outb_p = snapgear_outb_p, 91 .mv_outw_p = snapgear_outw, 92 .mv_outl_p = snapgear_outl, 93 94 .mv_init_irq = init_snapgear_IRQ, 95}; 96