49 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * 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); | ||
|  | } |