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