• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/m32r/boot/compressed/
1/*
2 * arch/m32r/boot/compressed/m32r_sio.c
3 *
4 * 2003-02-12:	Takeo Takahashi
5 * 2006-11-30:	OPSPUT support by Kazuhiro Inaoka
6 *
7 */
8
9#include <asm/processor.h>
10
11static void putc(char c);
12
13static int puts(const char *s)
14{
15	char c;
16	while ((c = *s++)) putc(c);
17	return 0;
18}
19
20#if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_OPSPUT)
21#include <asm/m32r.h>
22#include <asm/io.h>
23
24#define USE_FPGA_MAP	0
25
26#if USE_FPGA_MAP
27/*
28 * fpga configuration program uses MMU, and define map as same as
29 * M32104 uT-Engine board.
30 */
31#define BOOT_SIO0STS	(volatile unsigned short *)(0x02c00000 + 0x20006)
32#define BOOT_SIO0TXB	(volatile unsigned short *)(0x02c00000 + 0x2000c)
33#else
34#undef PLD_BASE
35#if defined(CONFIG_PLAT_OPSPUT)
36#define PLD_BASE	0x1cc00000
37#else
38#define PLD_BASE	0xa4c00000
39#endif
40#define BOOT_SIO0STS	PLD_ESIO0STS
41#define BOOT_SIO0TXB	PLD_ESIO0TXB
42#endif
43
44static void putc(char c)
45{
46	while ((*BOOT_SIO0STS & 0x3) != 0x3)
47		cpu_relax();
48	if (c == '\n') {
49		*BOOT_SIO0TXB = '\r';
50		while ((*BOOT_SIO0STS & 0x3) != 0x3)
51			cpu_relax();
52	}
53	*BOOT_SIO0TXB = c;
54}
55#else /* !(CONFIG_PLAT_M32700UT) */
56#if defined(CONFIG_PLAT_MAPPI2)
57#define SIO0STS	(volatile unsigned short *)(0xa0efd000 + 14)
58#define SIO0TXB	(volatile unsigned short *)(0xa0efd000 + 30)
59#else
60#define SIO0STS	(volatile unsigned short *)(0x00efd000 + 14)
61#define SIO0TXB	(volatile unsigned short *)(0x00efd000 + 30)
62#endif
63
64static void putc(char c)
65{
66	while ((*SIO0STS & 0x1) == 0)
67		cpu_relax();
68	if (c == '\n') {
69		*SIO0TXB = '\r';
70		while ((*SIO0STS & 0x1) == 0)
71			cpu_relax();
72	}
73	*SIO0TXB = c;
74}
75#endif
76