1 /* 2 * linux/arch/sh/boards/renesas/sdk7780/irq.c 3 * 4 * Renesas Technology Europe SDK7780 Support. 5 * 6 * Copyright (C) 2008 Nicholas Beck <nbeck@mpc-data.co.uk> 7 * 8 * This file is subject to the terms and conditions of the GNU General Public 9 * License. See the file "COPYING" in the main directory of this archive 10 * for more details. 11 */ 12 #include <linux/init.h> 13 #include <linux/irq.h> 14 #include <linux/io.h> 15 #include <mach/sdk7780.h> 16 17 enum { 18 UNUSED = 0, 19 /* board specific interrupt sources */ 20 SMC91C111, /* Ethernet controller */ 21 }; 22 23 static struct intc_vect fpga_vectors[] __initdata = { 24 INTC_IRQ(SMC91C111, IRQ_ETHERNET), 25 }; 26 27 static struct intc_mask_reg fpga_mask_registers[] __initdata = { 28 { 0, FPGA_IRQ0MR, 16, 29 { 0, 0, 0, 0, 0, 0, 0, 0, 30 0, 0, 0, SMC91C111, 0, 0, 0, 0 } }, 31 }; 32 33 static DECLARE_INTC_DESC(fpga_intc_desc, "sdk7780-irq", fpga_vectors, 34 NULL, fpga_mask_registers, NULL, NULL); 35 36 void __init init_sdk7780_IRQ(void) 37 { 38 printk(KERN_INFO "Using SDK7780 interrupt controller.\n"); 39 40 __raw_writew(0xFFFF, FPGA_IRQ0MR); 41 /* Setup IRL 0-3 */ 42 __raw_writew(0x0003, FPGA_IMSR); 43 plat_irq_setup_pins(IRQ_MODE_IRL3210); 44 45 register_intc_controller(&fpga_intc_desc); 46 } 47