blob: 160e0e0ae02f491afe15294dd42f49c04db70309 [file] [log] [blame]
stroese771e05b2004-12-16 18:21:17 +00001/*
2 * (C) Copyright 2001
3 * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
4 *
5 * modified for marvell db64360 eval board by
6 * Ingo Assmus <ingo.assmus@keymile.com>
wdenkefe2a4d2004-12-16 21:44:03 +00007 *
stroese771e05b2004-12-16 18:21:17 +00008 * modified for cpci750 board by
9 * Reinhard Arlt <reinhard.arlt@esd-electronics.com>
10 *
11 * See file CREDITS for list of people who contributed to this
12 * project.
13 *
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License as
16 * published by the Free Software Foundation; either version 2 of
17 * the License, or (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
27 * MA 02111-1307 USA
28 */
29
30/*
31 * serial.c - serial support for esd cpci750 board
32 */
33
34/* supports the MPSC */
35
36#include <common.h>
37#include <command.h>
Marek Vasut619c90b2012-09-13 12:32:56 +020038#include <serial.h>
39#include <linux/compiler.h>
40
stroese771e05b2004-12-16 18:21:17 +000041#include "../../Marvell/include/memory.h"
42#include "serial.h"
43
stroese771e05b2004-12-16 18:21:17 +000044#include "mpsc.h"
45
Wolfgang Denkd87080b2006-03-31 18:32:53 +020046DECLARE_GLOBAL_DATA_PTR;
47
Marek Vasut619c90b2012-09-13 12:32:56 +020048static int cpci750_serial_init(void)
stroese771e05b2004-12-16 18:21:17 +000049{
stroese771e05b2004-12-16 18:21:17 +000050 mpsc_init (gd->baudrate);
51
52 return (0);
53}
54
Marek Vasut619c90b2012-09-13 12:32:56 +020055static void cpci750_serial_putc(const char c)
stroese771e05b2004-12-16 18:21:17 +000056{
57 if (c == '\n')
58 mpsc_putchar ('\r');
59
60 mpsc_putchar (c);
61}
62
Marek Vasut619c90b2012-09-13 12:32:56 +020063static int cpci750_serial_getc(void)
stroese771e05b2004-12-16 18:21:17 +000064{
65 return mpsc_getchar ();
66}
67
Marek Vasut619c90b2012-09-13 12:32:56 +020068static int cpci750_serial_tstc(void)
stroese771e05b2004-12-16 18:21:17 +000069{
70 return mpsc_test_char ();
71}
72
Marek Vasut619c90b2012-09-13 12:32:56 +020073static void cpci750_serial_setbrg(void)
stroese771e05b2004-12-16 18:21:17 +000074{
stroese771e05b2004-12-16 18:21:17 +000075 galbrg_set_baudrate (CONFIG_MPSC_PORT, gd->baudrate);
76}
77
Marek Vasut619c90b2012-09-13 12:32:56 +020078static struct serial_device cpci750_serial_drv = {
79 .name = "cpci750_serial",
80 .start = cpci750_serial_init,
81 .stop = NULL,
82 .setbrg = cpci750_serial_setbrg,
83 .putc = cpci750_serial_putc,
Marek Vasutec3fd682012-10-06 14:07:02 +000084 .puts = default_serial_puts,
Marek Vasut619c90b2012-09-13 12:32:56 +020085 .getc = cpci750_serial_getc,
86 .tstc = cpci750_serial_tstc,
87};
88
89void cpci750_serial_initialize(void)
90{
91 serial_register(&cpci750_serial_drv);
92}
93
94__weak struct serial_device *default_serial_console(void)
95{
96 return &cpci750_serial_drv;
97}
Marek Vasut619c90b2012-09-13 12:32:56 +020098
Jon Loeligerb9307262007-07-09 18:24:55 -050099#if defined(CONFIG_CMD_KGDB)
stroese771e05b2004-12-16 18:21:17 +0000100void kgdb_serial_init (void)
101{
102}
103
104void putDebugChar (int c)
105{
106 serial_putc (c);
107}
108
109void putDebugStr (const char *str)
110{
111 serial_puts (str);
112}
113
114int getDebugChar (void)
115{
116 return serial_getc ();
117}
118
119void kgdb_interruptible (int yes)
120{
121 return;
122}
Jon Loeliger77a31852007-07-10 10:39:10 -0500123#endif