]>
git.ipfire.org Git - people/ms/u-boot.git/blob - board/bmw/ns16550.c
3 * originally from linux source (arch/ppc/boot/ns16550.c)
4 * modified to use CONFIG_SYS_ISA_MEM and new defines
10 typedef struct NS16550
*NS16550_t
;
12 const NS16550_t COM_PORTS
[] =
13 { (NS16550_t
) ((CONFIG_SYS_EUMB_ADDR
) + 0x4500),
14 (NS16550_t
) ((CONFIG_SYS_EUMB_ADDR
) + 0x4600) };
16 volatile struct NS16550
*NS16550_init (int chan
, int baud_divisor
)
18 volatile struct NS16550
*com_port
;
20 com_port
= (struct NS16550
*) COM_PORTS
[chan
];
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 */
31 void NS16550_reinit (volatile struct NS16550
*com_port
, int baud_divisor
)
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 */
42 void NS16550_putc (volatile struct NS16550
*com_port
, unsigned char c
)
44 while ((com_port
->lsr
& LSR_THRE
) == 0);
48 unsigned char NS16550_getc (volatile struct NS16550
*com_port
)
50 while ((com_port
->lsr
& LSR_DR
) == 0);
51 return (com_port
->rbr
);
54 int NS16550_tstc (volatile struct NS16550
*com_port
)
56 return ((com_port
->lsr
& LSR_DR
) != 0);