Merge branch 'server-cluster-locking-api' of git://linux-nfs.org/~bfields/linux
[linux-2.6] / arch / mips / jmr3927 / common / puts.c
1 /*
2  *
3  * BRIEF MODULE DESCRIPTION
4  *      Low level uart routines to directly access a TX[34]927 SIO.
5  *
6  * Copyright 2001 MontaVista Software Inc.
7  * Author: MontaVista Software, Inc.
8  *              ahennessy@mvista.com or source@mvista.com
9  *
10  * Copyright (C) 2000-2001 Toshiba Corporation
11  *
12  * Based on arch/mips/au1000/common/puts.c
13  *
14  *  This program is free software; you can redistribute  it and/or modify it
15  *  under  the terms of  the GNU General  Public License as published by the
16  *  Free Software Foundation;  either version 2 of the  License, or (at your
17  *  option) any later version.
18  *
19  *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
20  *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
21  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
22  *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
23  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
25  *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
27  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  *  You should have received a copy of the  GNU General Public License along
31  *  with this program; if not, write  to the Free Software Foundation, Inc.,
32  *  675 Mass Ave, Cambridge, MA 02139, USA.
33  */
34
35 #include <asm/jmr3927/tx3927.h>
36
37 #define TIMEOUT       0xffffff
38
39 void
40 prom_putchar(char c)
41 {
42         int i = 0;
43
44         do {
45             i++;
46             if (i>TIMEOUT)
47                 break;
48         } while (!(tx3927_sioptr(1)->cisr & TXx927_SICISR_TXALS));
49         tx3927_sioptr(1)->tfifo = c;
50         return;
51 }
52
53 void
54 puts(const char *cp)
55 {
56     while (*cp)
57         prom_putchar(*cp++);
58     prom_putchar('\r');
59     prom_putchar('\n');
60 }