1*b2441318SGreg 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 Bergmannstatic 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 Kingstatic 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