1a09e64fbSRussell King /*
2a09e64fbSRussell King  * arch/arm/mach-sa1100/include/mach/uncompress.h
3a09e64fbSRussell King  *
42f82af08SNicolas Pitre  * (C) 1999 Nicolas Pitre <nico@fluxnic.net>
5a09e64fbSRussell King  *
6a09e64fbSRussell King  * Reorganised to be machine independent.
7a09e64fbSRussell King  */
8a09e64fbSRussell King 
9a09e64fbSRussell King #include "hardware.h"
10a09e64fbSRussell King 
11a09e64fbSRussell King /*
12a09e64fbSRussell King  * The following code assumes the serial port has already been
13a09e64fbSRussell King  * initialized by the bootloader.  We search for the first enabled
14a09e64fbSRussell King  * port in the most probable order.  If you didn't setup a port in
15a09e64fbSRussell King  * your bootloader then nothing will appear (which might be desired).
16a09e64fbSRussell King  */
17a09e64fbSRussell King 
18a09e64fbSRussell King #define UART(x)		(*(volatile unsigned long *)(serial_port + (x)))
19a09e64fbSRussell King 
20a09e64fbSRussell King static void putc(int c)
21a09e64fbSRussell King {
22a09e64fbSRussell King 	unsigned long serial_port;
23a09e64fbSRussell King 
24a09e64fbSRussell King 	do {
25a09e64fbSRussell King 		serial_port = _Ser3UTCR0;
26a09e64fbSRussell King 		if (UART(UTCR3) & UTCR3_TXE) break;
27a09e64fbSRussell King 		serial_port = _Ser1UTCR0;
28a09e64fbSRussell King 		if (UART(UTCR3) & UTCR3_TXE) break;
29a09e64fbSRussell King 		serial_port = _Ser2UTCR0;
30a09e64fbSRussell King 		if (UART(UTCR3) & UTCR3_TXE) break;
31a09e64fbSRussell King 		return;
32a09e64fbSRussell King 	} while (0);
33a09e64fbSRussell King 
34a09e64fbSRussell King 	/* wait for space in the UART's transmitter */
35a09e64fbSRussell King 	while (!(UART(UTSR1) & UTSR1_TNF))
36a09e64fbSRussell King 		barrier();
37a09e64fbSRussell King 
38a09e64fbSRussell King 	/* send the character out. */
39a09e64fbSRussell King 	UART(UTDR) = c;
40a09e64fbSRussell King }
41a09e64fbSRussell King 
42a09e64fbSRussell King static inline void flush(void)
43a09e64fbSRussell King {
44a09e64fbSRussell King }
45a09e64fbSRussell King 
46a09e64fbSRussell King /*
47a09e64fbSRussell King  * Nothing to do for these
48a09e64fbSRussell King  */
49a09e64fbSRussell King #define arch_decomp_setup()
50a09e64fbSRussell King #define arch_decomp_wdog()
51