hc
2023-10-25 6c2073b7aa40e29d0eca7d571dd7bc590c7ecaa7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
 *  This program is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License version 2 as published
 *  by the Free Software Foundation.
 *
 *  Copyright (C) 2010 John Crispin <john@phrozen.org>
 */
 
#include <linux/cpu.h>
#include <lantiq_soc.h>
#include <asm/setup.h>
 
#define ASC_BUF        1024
#define LTQ_ASC_FSTAT    ((u32 *)(LTQ_EARLY_ASC + 0x0048))
#ifdef __BIG_ENDIAN
#define LTQ_ASC_TBUF    ((u32 *)(LTQ_EARLY_ASC + 0x0020 + 3))
#else
#define LTQ_ASC_TBUF    ((u32 *)(LTQ_EARLY_ASC + 0x0020))
#endif
#define TXMASK        0x3F00
#define TXOFFSET    8
 
void prom_putchar(char c)
{
   unsigned long flags;
 
   local_irq_save(flags);
   do { } while ((ltq_r32(LTQ_ASC_FSTAT) & TXMASK) >> TXOFFSET);
   if (c == '\n')
       ltq_w8('\r', LTQ_ASC_TBUF);
   ltq_w8(c, LTQ_ASC_TBUF);
   local_irq_restore(flags);
}