]>
git.ipfire.org Git - u-boot.git/blob - board/bmw/ns16550.c
3 * originally from linux source (arch/ppc/boot/ns16550.c)
4 * modified to use CFG_ISA_MEM and new defines
10 typedef struct NS16550
*NS16550_t
;
12 const NS16550_t COM_PORTS
[] = { (NS16550_t
) ((CFG_EUMB_ADDR
) + 0x4500), (NS16550_t
) ((CFG_EUMB_ADDR
) + 0x4600)};
14 volatile struct NS16550
*
15 NS16550_init(int chan
, int baud_divisor
)
17 volatile struct NS16550
*com_port
;
18 com_port
= (struct NS16550
*) COM_PORTS
[chan
];
20 com_port
->lcr
= LCR_BKSE
; /* Access baud rate */
21 com_port
->dll
= baud_divisor
& 0xff; /* 9600 baud */
22 com_port
->dlm
= (baud_divisor
>> 8) & 0xff;
23 com_port
->lcr
= LCR_8N1
; /* 8 data, 1 stop, no parity */
24 com_port
->mcr
= MCR_RTS
; /* RTS/DTR */
25 com_port
->fcr
= FCR_FIFO_EN
| FCR_RXSR
| FCR_TXSR
; /* Clear & enable FIFOs */
30 NS16550_reinit(volatile struct NS16550
*com_port
, int baud_divisor
)
33 com_port
->lcr
= LCR_BKSE
; /* Access baud rate */
34 com_port
->dll
= baud_divisor
& 0xff; /* 9600 baud */
35 com_port
->dlm
= (baud_divisor
>> 8) & 0xff;
36 com_port
->lcr
= LCR_8N1
; /* 8 data, 1 stop, no parity */
37 com_port
->mcr
= MCR_RTS
; /* RTS/DTR */
38 com_port
->fcr
= FCR_FIFO_EN
| FCR_RXSR
| FCR_TXSR
; /* Clear & enable FIFOs */
41 void NS16550_putc(volatile struct NS16550
*com_port
, unsigned char c
)
43 while ((com_port
->lsr
& LSR_THRE
) == 0) ;
48 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);