/* * Set up the interrupt priorities * * Copyright 2004-2009 Analog Devices Inc. * 2003 Bas Vermeulen <bas@buyways.nl> * 2002 Arcturus Networks Inc. MaTed <mated@sympatico.ca> * 2000-2001 Lineo, Inc. D. Jefff Dionne <jeff@lineo.ca> * 1999 D. Jeff Dionne <jeff@uclinux.org> * 1996 Roman Zippel * * Licensed under the GPL-2 */#include <linux/module.h>#include <linux/kernel_stat.h>#include <linux/seq_file.h>#include <linux/irq.h>#include <linux/sched.h>#include <linux/syscore_ops.h>#include <asm/delay.h>#ifdef CONFIG_IPIPE#include <linux/ipipe.h>#endif#include <asm/traps.h>#include <asm/blackfin.h>#include <asm/gpio.h>#include <asm/irq_handler.h>#include <asm/dpmc.h>#ifndef CONFIG_BF60x# define SIC_SYSIRQ(irq) (irq - (IRQ_CORETMR + 1))#else# define SIC_SYSIRQ(irq) ((irq) - IVG15)#endif/* * NOTES: * - we have separated the physical Hardware interrupt from the * levels that the LINUX kernel sees (see the description in irq.h) * - */#ifndef CONFIG_SMP/* Initialize this to an actual value to force it into the .data * section so that we know it is properly initialized at entry into * the kernel but before bss is initialized to zero (which is where * it would live otherwise). The 0x1f magic represents the IRQs we * cannot actually mask out in hardware. */unsigned long bfin_irq_flags =0x1f;EXPORT_SYMBOL(bfin_irq_flags);#endif#ifdef CONFIG_PMunsigned long bfin_sic_iwr[3];/* Up to 3 SIC_IWRx registers */unsigned vr_wakeup;#endif#ifndef CONFIG_BF60xstatic struct ivgx {/* irq number for request_irq, available in mach-bf5xx/irq.h */unsigned int irqno;/* corresponding bit in the SIC_ISR register */unsigned int isrflag;} ivg_table[NR_PERI_INTS];static struct ivg_slice {/* position of first irq in ivg_table for given ivg */struct ivgx *ifirst;struct ivgx *