| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * arch/m32r/boot/compressed/m32r_sio.c | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 2003-02-12:	Takeo Takahashi | 
					
						
							| 
									
										
										
										
											2006-12-08 02:35:57 -08:00
										 |  |  |  * 2006-11-30:	OPSPUT support by Kazuhiro Inaoka | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:10 -07:00
										 |  |  | #include <asm/processor.h>
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | static void putc(char c); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static int puts(const char *s) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	char c; | 
					
						
							|  |  |  | 	while ((c = *s++)) putc(c); | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-04 22:27:33 -08:00
										 |  |  | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_OPSPUT)
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #include <asm/m32r.h>
 | 
					
						
							|  |  |  | #include <asm/io.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define USE_FPGA_MAP	0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if USE_FPGA_MAP
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * fpga configuration program uses MMU, and define map as same as | 
					
						
							|  |  |  |  * M32104 uT-Engine board. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define BOOT_SIO0STS	(volatile unsigned short *)(0x02c00000 + 0x20006)
 | 
					
						
							|  |  |  | #define BOOT_SIO0TXB	(volatile unsigned short *)(0x02c00000 + 0x2000c)
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #undef PLD_BASE
 | 
					
						
							| 
									
										
										
										
											2006-12-08 02:35:57 -08:00
										 |  |  | #if defined(CONFIG_PLAT_OPSPUT)
 | 
					
						
							|  |  |  | #define PLD_BASE	0x1cc00000
 | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define PLD_BASE	0xa4c00000
 | 
					
						
							| 
									
										
										
										
											2006-12-08 02:35:57 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define BOOT_SIO0STS	PLD_ESIO0STS
 | 
					
						
							|  |  |  | #define BOOT_SIO0TXB	PLD_ESIO0TXB
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void putc(char c) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:10 -07:00
										 |  |  | 	while ((*BOOT_SIO0STS & 0x3) != 0x3) | 
					
						
							|  |  |  | 		cpu_relax(); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	if (c == '\n') { | 
					
						
							|  |  |  | 		*BOOT_SIO0TXB = '\r'; | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:10 -07:00
										 |  |  | 		while ((*BOOT_SIO0STS & 0x3) != 0x3) | 
					
						
							|  |  |  | 			cpu_relax(); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	*BOOT_SIO0TXB = c; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2008-02-04 22:27:33 -08:00
										 |  |  | #else /* !(CONFIG_PLAT_M32700UT) */
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:10 -07:00
										 |  |  | #if defined(CONFIG_PLAT_MAPPI2)
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define SIO0STS	(volatile unsigned short *)(0xa0efd000 + 14)
 | 
					
						
							|  |  |  | #define SIO0TXB	(volatile unsigned short *)(0xa0efd000 + 30)
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #define SIO0STS	(volatile unsigned short *)(0x00efd000 + 14)
 | 
					
						
							|  |  |  | #define SIO0TXB	(volatile unsigned short *)(0x00efd000 + 30)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void putc(char c) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:10 -07:00
										 |  |  | 	while ((*SIO0STS & 0x1) == 0) | 
					
						
							|  |  |  | 		cpu_relax(); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	if (c == '\n') { | 
					
						
							|  |  |  | 		*SIO0TXB = '\r'; | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:10 -07:00
										 |  |  | 		while ((*SIO0STS & 0x1) == 0) | 
					
						
							|  |  |  | 			cpu_relax(); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	*SIO0TXB = c; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 |