| 
									
										
										
										
											2011-11-08 10:33:03 -08:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2007 Google, Inc. | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:04 -08:00
										 |  |  |  * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  |  * Author: Brian Swetland <swetland@google.com>
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This software is licensed under the terms of the GNU General Public | 
					
						
							|  |  |  |  * License version 2, as published by the Free Software Foundation, and | 
					
						
							|  |  |  |  * may be copied, distributed, and modified under those terms. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-05 16:14:15 +01:00
										 |  |  | #include <mach/hardware.h> | 
					
						
							|  |  |  | #include <mach/msm_iomap.h> | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-31 22:55:46 -04:00
										 |  |  | 	.macro	addruart, rp, rv, tmp | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:03 -08:00
										 |  |  | #ifdef MSM_DEBUG_UART_PHYS | 
					
						
							| 
									
										
										
										
											2010-07-06 18:30:06 +08:00
										 |  |  | 	ldr	\rp, =MSM_DEBUG_UART_PHYS | 
					
						
							|  |  |  | 	ldr	\rv, =MSM_DEBUG_UART_BASE | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:03 -08:00
										 |  |  | #endif | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  | 	.endm | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:04 -08:00
										 |  |  | 	.macro	senduart, rd, rx | 
					
						
							|  |  |  | #ifdef CONFIG_MSM_HAS_DEBUG_UART_HS | 
					
						
							|  |  |  | 	@ Write the 1 character to UARTDM_TF
 | 
					
						
							|  |  |  | 	str	\rd, [\rx, #0x70] | 
					
						
							|  |  |  | #else | 
					
						
							| 
									
										
										
										
											2008-09-10 14:00:53 -07:00
										 |  |  | 	teq	\rx, #0 | 
					
						
							|  |  |  | 	strne	\rd, [\rx, #0x0C] | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:04 -08:00
										 |  |  | #endif | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  | 	.endm | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:04 -08:00
										 |  |  | 	.macro	waituart, rd, rx | 
					
						
							|  |  |  | #ifdef CONFIG_MSM_HAS_DEBUG_UART_HS | 
					
						
							|  |  |  | 	@ check for TX_EMT in UARTDM_SR
 | 
					
						
							|  |  |  | 	ldr	\rd, [\rx, #0x08] | 
					
						
							|  |  |  | 	tst	\rd, #0x08 | 
					
						
							|  |  |  | 	bne	1002f | 
					
						
							|  |  |  | 	@ wait for TXREADY in UARTDM_ISR
 | 
					
						
							|  |  |  | 1001:	ldr	\rd, [\rx, #0x14] | 
					
						
							|  |  |  | 	tst	\rd, #0x80 | 
					
						
							|  |  |  | 	beq 	1001b | 
					
						
							|  |  |  | 1002: | 
					
						
							|  |  |  | 	@ Clear TX_READY by writing to the UARTDM_CR register
 | 
					
						
							|  |  |  | 	mov	\rd, #0x300 | 
					
						
							|  |  |  | 	str	\rd, [\rx, #0x10] | 
					
						
							|  |  |  | 	@ Write 0x1 to NCF register
 | 
					
						
							|  |  |  | 	mov 	\rd, #0x1 | 
					
						
							|  |  |  | 	str	\rd, [\rx, #0x40] | 
					
						
							|  |  |  | 	@ UARTDM reg. Read to induce delay
 | 
					
						
							|  |  |  | 	ldr	\rd, [\rx, #0x08] | 
					
						
							|  |  |  | #else | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  | 	@ wait for TX_READY
 | 
					
						
							| 
									
										
										
										
											2009-11-02 11:48:29 +01:00
										 |  |  | 1001:	ldr	\rd, [\rx, #0x08] | 
					
						
							| 
									
										
										
										
											2007-11-26 04:11:43 -08:00
										 |  |  | 	tst	\rd, #0x04 | 
					
						
							| 
									
										
										
										
											2009-11-02 11:48:29 +01:00
										 |  |  | 	beq	1001b | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:04 -08:00
										 |  |  | #endif | 
					
						
							| 
									
										
										
										
											2009-11-02 11:48:29 +01:00
										 |  |  | 	.endm | 
					
						
							| 
									
										
										
										
											2010-10-27 15:25:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-08 10:33:04 -08:00
										 |  |  | 	.macro	busyuart, rd, rx | 
					
						
							| 
									
										
										
										
											2010-10-27 15:25:59 -07:00
										 |  |  | 	.endm |