| 
									
										
										
										
											2007-04-30 19:37:19 +01:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Low-level IRQ helper macros for TI DaVinci-based platforms | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 2007 (c) MontaVista Software, Inc. This file is licensed under | 
					
						
							|  |  |  |  * the terms of the GNU General Public License version 2. This program | 
					
						
							|  |  |  |  * is licensed "as is" without any warranty of any kind, whether express | 
					
						
							|  |  |  |  * or implied. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-08-05 16:14:15 +01:00
										 |  |  | #include <mach/irqs.h> | 
					
						
							| 
									
										
										
										
											2007-04-30 19:37:19 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		.macro  get_irqnr_preamble, base, tmp | 
					
						
							| 
									
										
										
										
											2009-04-15 12:40:00 -07:00
										 |  |  | 		ldr \base, =davinci_intc_base | 
					
						
							|  |  |  | 		ldr \base, [\base] | 
					
						
							| 
									
										
										
										
											2007-04-30 19:37:19 +01:00
										 |  |  | 		.endm | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp | 
					
						
							| 
									
										
										
										
											2009-04-15 12:41:40 -07:00
										 |  |  | #if defined(CONFIG_AINTC) && defined(CONFIG_CP_INTC) | 
					
						
							|  |  |  | 		ldr \tmp, =davinci_intc_type | 
					
						
							|  |  |  | 		ldr \tmp, [\tmp] | 
					
						
							|  |  |  | 		cmp \tmp, #DAVINCI_INTC_TYPE_CP_INTC | 
					
						
							|  |  |  | 		beq 1001f | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | #if defined(CONFIG_AINTC) | 
					
						
							| 
									
										
										
										
											2007-04-30 19:37:19 +01:00
										 |  |  | 		ldr \tmp, [\base, #0x14] | 
					
						
							| 
									
										
										
										
											2008-02-11 14:44:07 -07:00
										 |  |  | 		movs \tmp, \tmp, lsr #2 | 
					
						
							| 
									
										
										
										
											2007-04-30 19:37:19 +01:00
										 |  |  | 		sub \irqnr, \tmp, #1 | 
					
						
							| 
									
										
										
										
											2009-04-15 12:41:40 -07:00
										 |  |  | 		b 1002f | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | #if defined(CONFIG_CP_INTC) | 
					
						
							|  |  |  | 1001:		ldr \irqnr, [\base, #0x80] /* get irq number */ | 
					
						
							| 
									
										
										
										
											2012-06-20 23:10:13 +05:30
										 |  |  | 		mov \tmp, \irqnr, lsr #31 | 
					
						
							| 
									
										
										
										
											2009-04-15 12:41:40 -07:00
										 |  |  | 		and \irqnr, \irqnr, #0xff  /* irq is in bits 0-9 */ | 
					
						
							| 
									
										
										
										
											2012-06-20 23:10:13 +05:30
										 |  |  | 		and \tmp, \tmp, #0x1 | 
					
						
							|  |  |  | 		cmp \tmp, #0x1 | 
					
						
							| 
									
										
										
										
											2009-04-15 12:41:40 -07:00
										 |  |  | #endif | 
					
						
							|  |  |  | 1002: | 
					
						
							| 
									
										
										
										
											2007-04-30 19:37:19 +01:00
										 |  |  | 		.endm |