~ubuntu-branches/ubuntu/maverick/u-boot-omap3/maverick

« back to all changes in this revision

Viewing changes to board/bmw/ns16550.c

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2010-03-22 15:06:23 UTC
  • Revision ID: james.westby@ubuntu.com-20100322150623-i21g8rgiyl5dohag
Tags: upstream-2010.3git20100315
ImportĀ upstreamĀ versionĀ 2010.3git20100315

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * COM1 NS16550 support
 
3
 * originally from linux source (arch/ppc/boot/ns16550.c)
 
4
 * modified to use CONFIG_SYS_ISA_MEM and new defines
 
5
 */
 
6
 
 
7
#include <config.h>
 
8
#include "ns16550.h"
 
9
 
 
10
typedef struct NS16550 *NS16550_t;
 
11
 
 
12
const NS16550_t COM_PORTS[] =
 
13
        { (NS16550_t) ((CONFIG_SYS_EUMB_ADDR) + 0x4500),
 
14
(NS16550_t) ((CONFIG_SYS_EUMB_ADDR) + 0x4600) };
 
15
 
 
16
volatile struct NS16550 *NS16550_init (int chan, int baud_divisor)
 
17
{
 
18
        volatile struct NS16550 *com_port;
 
19
 
 
20
        com_port = (struct NS16550 *) COM_PORTS[chan];
 
21
        com_port->ier = 0x00;
 
22
        com_port->lcr = LCR_BKSE;       /* Access baud rate */
 
23
        com_port->dll = baud_divisor & 0xff;    /* 9600 baud */
 
24
        com_port->dlm = (baud_divisor >> 8) & 0xff;
 
25
        com_port->lcr = LCR_8N1;        /* 8 data, 1 stop, no parity */
 
26
        com_port->mcr = MCR_RTS;        /* RTS/DTR */
 
27
        com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;      /* Clear & enable FIFOs */
 
28
        return (com_port);
 
29
}
 
30
 
 
31
void NS16550_reinit (volatile struct NS16550 *com_port, int baud_divisor)
 
32
{
 
33
        com_port->ier = 0x00;
 
34
        com_port->lcr = LCR_BKSE;       /* Access baud rate */
 
35
        com_port->dll = baud_divisor & 0xff;    /* 9600 baud */
 
36
        com_port->dlm = (baud_divisor >> 8) & 0xff;
 
37
        com_port->lcr = LCR_8N1;        /* 8 data, 1 stop, no parity */
 
38
        com_port->mcr = MCR_RTS;        /* RTS/DTR */
 
39
        com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;      /* Clear & enable FIFOs */
 
40
}
 
41
 
 
42
void NS16550_putc (volatile struct NS16550 *com_port, unsigned char c)
 
43
{
 
44
        while ((com_port->lsr & LSR_THRE) == 0);
 
45
        com_port->thr = c;
 
46
}
 
47
 
 
48
unsigned char NS16550_getc (volatile struct NS16550 *com_port)
 
49
{
 
50
        while ((com_port->lsr & LSR_DR) == 0);
 
51
        return (com_port->rbr);
 
52
}
 
53
 
 
54
int NS16550_tstc (volatile struct NS16550 *com_port)
 
55
{
 
56
        return ((com_port->lsr & LSR_DR) != 0);
 
57
}