|  | /* | 
|  | * SDK7786 FPGA IRQ Controller Support. | 
|  | * | 
|  | * Copyright (C) 2010  Matt Fleming | 
|  | * Copyright (C) 2010  Paul Mundt | 
|  | * | 
|  | * This file is subject to the terms and conditions of the GNU General Public | 
|  | * License.  See the file "COPYING" in the main directory of this archive | 
|  | * for more details. | 
|  | */ | 
|  | #include <linux/irq.h> | 
|  | #include <mach/fpga.h> | 
|  | #include <mach/irq.h> | 
|  |  | 
|  | enum { | 
|  | ATA_IRQ_BIT		= 1, | 
|  | SPI_BUSY_BIT		= 2, | 
|  | LIRQ5_BIT		= 3, | 
|  | LIRQ6_BIT		= 4, | 
|  | LIRQ7_BIT		= 5, | 
|  | LIRQ8_BIT		= 6, | 
|  | KEY_IRQ_BIT		= 7, | 
|  | PEN_IRQ_BIT		= 8, | 
|  | ETH_IRQ_BIT		= 9, | 
|  | RTC_ALARM_BIT		= 10, | 
|  | CRYSTAL_FAIL_BIT	= 12, | 
|  | ETH_PME_BIT		= 14, | 
|  | }; | 
|  |  | 
|  | void __init sdk7786_init_irq(void) | 
|  | { | 
|  | unsigned int tmp; | 
|  |  | 
|  | /* Enable priority encoding for all IRLs */ | 
|  | fpga_write_reg(fpga_read_reg(INTMSR) | 0x0303, INTMSR); | 
|  |  | 
|  | /* Clear FPGA interrupt status registers */ | 
|  | fpga_write_reg(0x0000, INTASR); | 
|  | fpga_write_reg(0x0000, INTBSR); | 
|  |  | 
|  | /* Unmask FPGA interrupts */ | 
|  | tmp = fpga_read_reg(INTAMR); | 
|  | tmp &= ~(1 << ETH_IRQ_BIT); | 
|  | fpga_write_reg(tmp, INTAMR); | 
|  |  | 
|  | plat_irq_setup_pins(IRQ_MODE_IRL7654_MASK); | 
|  | plat_irq_setup_pins(IRQ_MODE_IRL3210_MASK); | 
|  | } |