blob: 7b28d6a476904777a9c183d7f87896c6c0a73450 [file] [log] [blame]
Russell Kinga09e64f2008-08-05 16:14:15 +01001/*
2 * arch/arm/mach-clps711x/include/mach/uncompress.h
3 *
4 * Copyright (C) 2000 Deep Blue Solutions Ltd
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
Alexander Shiyan27723ec2012-05-14 21:46:08 +040020#include <mach/clps711x.h>
Russell Kinga09e64f2008-08-05 16:14:15 +010021
Russell Kinga09e64f2008-08-05 16:14:15 +010022#ifdef CONFIG_DEBUG_CLPS711X_UART2
23#define SYSFLGx SYSFLG2
24#define UARTDRx UARTDR2
25#else
26#define SYSFLGx SYSFLG1
27#define UARTDRx UARTDR1
28#endif
29
Alexander Shiyan304b2c62012-05-06 09:21:57 +040030#define phys_reg(x) (*(volatile u32 *)(CLPS711X_PHYS_BASE + (x)))
31
Russell Kinga09e64f2008-08-05 16:14:15 +010032/*
Alexander Shiyan304b2c62012-05-06 09:21:57 +040033 * The following code assumes the serial port has already been
34 * initialized by the bootloader. If you didn't setup a port in
35 * your bootloader then nothing will appear (which might be desired).
36 *
Russell Kinga09e64f2008-08-05 16:14:15 +010037 * This does not append a newline
38 */
39static inline void putc(int c)
40{
Alexander Shiyan304b2c62012-05-06 09:21:57 +040041 while (phys_reg(SYSFLGx) & SYSFLG_UTXFF)
Russell Kinga09e64f2008-08-05 16:14:15 +010042 barrier();
Alexander Shiyan304b2c62012-05-06 09:21:57 +040043 phys_reg(UARTDRx) = c;
Russell Kinga09e64f2008-08-05 16:14:15 +010044}
45
46static inline void flush(void)
47{
Alexander Shiyan304b2c62012-05-06 09:21:57 +040048 while (phys_reg(SYSFLGx) & SYSFLG_UBUSY)
Russell Kinga09e64f2008-08-05 16:14:15 +010049 barrier();
50}
51
52/*
53 * nothing to do
54 */
55#define arch_decomp_setup()
56
57#define arch_decomp_wdog()