| 
									
										
										
										
											2008-08-05 16:14:15 +01:00
										 |  |  | /* arch/arm/mach-imx/include/mach/debug-macro.S | 
					
						
							| 
									
										
										
										
											2008-07-05 10:02:51 +02:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Debugging macro include header | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Copyright (C) 1994-1999 Russell King | 
					
						
							|  |  |  |  *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify
 | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License version 2 as | 
					
						
							|  |  |  |  * published by the Free Software Foundation. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-10-08 13:44:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-12 19:03:53 +08:00
										 |  |  | #include "imx-uart.h" | 
					
						
							| 
									
										
										
										
											2011-08-05 09:32:41 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-09-16 20:50:45 +08:00
										 |  |  | /* | 
					
						
							|  |  |  |  * FIXME: This is a copy of IMX_IO_P2V in hardware.h, and needs to | 
					
						
							|  |  |  |  * stay sync with that.  It's hard to maintain, and should be fixed | 
					
						
							|  |  |  |  * globally for multi-platform build to use a fixed virtual address | 
					
						
							|  |  |  |  * for low-level debug uart port across platforms. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define IMX_IO_P2V(x)	(						\ | 
					
						
							|  |  |  | 			(((x) & 0x80000000) >> 7) |			\ | 
					
						
							|  |  |  | 			(0xf4000000 +					\ | 
					
						
							|  |  |  | 			(((x) & 0x50000000) >> 6) +			\ | 
					
						
							|  |  |  | 			(((x) & 0x0b000000) >> 4) +			\ | 
					
						
							|  |  |  | 			(((x) & 0x000fffff)))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define UART_VADDR	IMX_IO_P2V(UART_PADDR) | 
					
						
							| 
									
										
										
										
											2010-10-26 09:42:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-31 22:55:46 -04:00
										 |  |  | 		.macro	addruart, rp, rv, tmp | 
					
						
							| 
									
										
										
										
											2010-07-06 18:30:06 +08:00
										 |  |  | 		ldr	\rp, =UART_PADDR	@ physical
 | 
					
						
							|  |  |  | 		ldr	\rv, =UART_VADDR	@ virtual
 | 
					
						
							| 
									
										
										
										
											2008-07-05 10:02:51 +02:00
										 |  |  | 		.endm | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		.macro	senduart,rd,rx | 
					
						
							|  |  |  | 		str	\rd, [\rx, #0x40]	@ TXDATA
 | 
					
						
							|  |  |  | 		.endm | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		.macro	waituart,rd,rx | 
					
						
							|  |  |  | 		.endm | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		.macro	busyuart,rd,rx | 
					
						
							|  |  |  | 1002:		ldr	\rd, [\rx, #0x98]	@ SR2
 | 
					
						
							|  |  |  | 		tst	\rd, #1 << 3		@ TXDC
 | 
					
						
							|  |  |  | 		beq	1002b			@ wait until transmit done
 | 
					
						
							|  |  |  | 		.endm |