18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm/mach-ebsa110/include/mach/uncompress.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 1996,1997,1998 Russell King 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/serial_reg.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#define SERIAL_BASE ((unsigned char *)0xf0000be0) 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci/* 138c2ecf20Sopenharmony_ci * This does not append a newline 148c2ecf20Sopenharmony_ci */ 158c2ecf20Sopenharmony_cistatic inline void putc(int c) 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci unsigned char v, *base = SERIAL_BASE; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci do { 208c2ecf20Sopenharmony_ci v = base[UART_LSR << 2]; 218c2ecf20Sopenharmony_ci barrier(); 228c2ecf20Sopenharmony_ci } while (!(v & UART_LSR_THRE)); 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci base[UART_TX << 2] = c; 258c2ecf20Sopenharmony_ci} 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic inline void flush(void) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci unsigned char v, *base = SERIAL_BASE; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci do { 328c2ecf20Sopenharmony_ci v = base[UART_LSR << 2]; 338c2ecf20Sopenharmony_ci barrier(); 348c2ecf20Sopenharmony_ci } while ((v & (UART_LSR_TEMT|UART_LSR_THRE)) != 358c2ecf20Sopenharmony_ci (UART_LSR_TEMT|UART_LSR_THRE)); 368c2ecf20Sopenharmony_ci} 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci/* 398c2ecf20Sopenharmony_ci * nothing to do 408c2ecf20Sopenharmony_ci */ 418c2ecf20Sopenharmony_ci#define arch_decomp_setup() 42