| 
									
										
										
										
											2009-01-20 14:15:18 +08:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * arch/arm/mach-mmp/include/mach/uncompress.h | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/serial_reg.h>
 | 
					
						
							|  |  |  | #include <mach/addr-map.h>
 | 
					
						
							| 
									
										
										
										
											2010-01-12 08:54:50 +08:00
										 |  |  | #include <asm/mach-types.h>
 | 
					
						
							| 
									
										
										
										
											2009-01-20 14:15:18 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define UART1_BASE	(APB_PHYS_BASE + 0x36000)
 | 
					
						
							|  |  |  | #define UART2_BASE	(APB_PHYS_BASE + 0x17000)
 | 
					
						
							|  |  |  | #define UART3_BASE	(APB_PHYS_BASE + 0x18000)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-28 17:00:17 -04:00
										 |  |  | volatile unsigned long *UART; | 
					
						
							| 
									
										
										
										
											2010-01-12 08:54:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 14:15:18 +08:00
										 |  |  | static inline void putc(char c) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* UART enabled? */ | 
					
						
							|  |  |  | 	if (!(UART[UART_IER] & UART_IER_UUE)) | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	while (!(UART[UART_LSR] & UART_LSR_THRE)) | 
					
						
							|  |  |  | 		barrier(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	UART[UART_TX] = c; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * This does not append a newline | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | static inline void flush(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-12 08:54:50 +08:00
										 |  |  | static inline void arch_decomp_setup(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2010-03-22 09:39:58 +08:00
										 |  |  | 	/* default to UART2 */ | 
					
						
							|  |  |  | 	UART = (unsigned long *)UART2_BASE; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-12 08:54:50 +08:00
										 |  |  | 	if (machine_is_avengers_lite()) | 
					
						
							|  |  |  | 		UART = (unsigned long *)UART3_BASE; | 
					
						
							|  |  |  | } |