2005-04-16 18:20:36 -04:00
|
|
|
/*
|
|
|
|
* linux/include/asm-arm/arch-cl7500/uncompress.h
|
|
|
|
*
|
|
|
|
* Copyright (C) 1999, 2000 Nexus Electronics Ltd.
|
|
|
|
*/
|
|
|
|
#define BASE 0x03010000
|
|
|
|
#define SERBASE (BASE + (0x2f8 << 2))
|
|
|
|
|
2006-03-28 04:24:33 -05:00
|
|
|
static inline void putc(char c)
|
2005-04-16 18:20:36 -04:00
|
|
|
{
|
2006-03-28 04:24:33 -05:00
|
|
|
while (!(*((volatile unsigned int *)(SERBASE + 0x14)) & 0x20))
|
|
|
|
barrier();
|
|
|
|
|
2005-04-16 18:20:36 -04:00
|
|
|
*((volatile unsigned int *)(SERBASE)) = c;
|
|
|
|
}
|
|
|
|
|
2006-03-28 04:24:33 -05:00
|
|
|
static inline void flush(void)
|
2005-04-16 18:20:36 -04:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline__ void arch_decomp_setup(void)
|
|
|
|
{
|
|
|
|
int baud = 3686400 / (9600 * 32);
|
|
|
|
|
|
|
|
*((volatile unsigned int *)(SERBASE + 0xC)) = 0x80;
|
|
|
|
*((volatile unsigned int *)(SERBASE + 0x0)) = baud & 0xff;
|
|
|
|
*((volatile unsigned int *)(SERBASE + 0x4)) = (baud & 0xff00) >> 8;
|
|
|
|
*((volatile unsigned int *)(SERBASE + 0xC)) = 3; /* 8 bits */
|
|
|
|
*((volatile unsigned int *)(SERBASE + 0x10)) = 3; /* DTR, RTS */
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* nothing to do
|
|
|
|
*/
|
|
|
|
#define arch_decomp_wdog()
|