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