|  | /* | 
|  | * arch/m32r/boot/compressed/m32r_sio.c | 
|  | * | 
|  | * 2003-02-12:	Takeo Takahashi | 
|  | * | 
|  | */ | 
|  |  | 
|  | #include <linux/config.h> | 
|  |  | 
|  | static void putc(char c); | 
|  |  | 
|  | static int puts(const char *s) | 
|  | { | 
|  | char c; | 
|  | while ((c = *s++)) putc(c); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | #if defined(CONFIG_PLAT_M32700UT_Alpha) || defined(CONFIG_PLAT_M32700UT) | 
|  | #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 | 
|  | #define PLD_BASE	0xa4c00000 | 
|  | #define BOOT_SIO0STS	PLD_ESIO0STS | 
|  | #define BOOT_SIO0TXB	PLD_ESIO0TXB | 
|  | #endif | 
|  |  | 
|  | static void putc(char c) | 
|  | { | 
|  |  | 
|  | while ((*BOOT_SIO0STS & 0x3) != 0x3) ; | 
|  | if (c == '\n') { | 
|  | *BOOT_SIO0TXB = '\r'; | 
|  | while ((*BOOT_SIO0STS & 0x3) != 0x3) ; | 
|  | } | 
|  | *BOOT_SIO0TXB = c; | 
|  | } | 
|  | #else | 
|  | #define SIO0STS	(volatile unsigned short *)(0xa0efd000 + 14) | 
|  | #define SIO0TXB	(volatile unsigned short *)(0xa0efd000 + 30) | 
|  |  | 
|  | static void putc(char c) | 
|  | { | 
|  |  | 
|  | while ((*SIO0STS & 0x1) == 0) ; | 
|  | if (c == '\n') { | 
|  | *SIO0TXB = '\r'; | 
|  | while ((*SIO0STS & 0x1) == 0) ; | 
|  | } | 
|  | *SIO0TXB = c; | 
|  | } | 
|  | #endif |