uart_dev_ns8250.c (158849) | uart_dev_ns8250.c (166100) |
---|---|
1/*- 2 * Copyright (c) 2003 Marcel Moolenaar 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 11 unchanged lines hidden (view full) --- 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2003 Marcel Moolenaar 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 11 unchanged lines hidden (view full) --- 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/dev/uart/uart_dev_ns8250.c 158849 2006-05-23 06:04:45Z benno $"); | 28__FBSDID("$FreeBSD: head/sys/dev/uart/uart_dev_ns8250.c 166100 2007-01-18 22:01:19Z marius $"); |
29 30#include <sys/param.h> 31#include <sys/systm.h> 32#include <sys/bus.h> 33#include <sys/conf.h> 34#include <machine/bus.h> 35 36#include <dev/uart/uart.h> --- 175 unchanged lines hidden (view full) --- 212 213/* 214 * Low-level UART interface. 215 */ 216static int ns8250_probe(struct uart_bas *bas); 217static void ns8250_init(struct uart_bas *bas, int, int, int, int); 218static void ns8250_term(struct uart_bas *bas); 219static void ns8250_putc(struct uart_bas *bas, int); | 29 30#include <sys/param.h> 31#include <sys/systm.h> 32#include <sys/bus.h> 33#include <sys/conf.h> 34#include <machine/bus.h> 35 36#include <dev/uart/uart.h> --- 175 unchanged lines hidden (view full) --- 212 213/* 214 * Low-level UART interface. 215 */ 216static int ns8250_probe(struct uart_bas *bas); 217static void ns8250_init(struct uart_bas *bas, int, int, int, int); 218static void ns8250_term(struct uart_bas *bas); 219static void ns8250_putc(struct uart_bas *bas, int); |
220static int ns8250_poll(struct uart_bas *bas); | 220static int ns8250_rxready(struct uart_bas *bas); |
221static int ns8250_getc(struct uart_bas *bas, struct mtx *); 222 223struct uart_ops uart_ns8250_ops = { 224 .probe = ns8250_probe, 225 .init = ns8250_init, 226 .term = ns8250_term, 227 .putc = ns8250_putc, | 221static int ns8250_getc(struct uart_bas *bas, struct mtx *); 222 223struct uart_ops uart_ns8250_ops = { 224 .probe = ns8250_probe, 225 .init = ns8250_init, 226 .term = ns8250_term, 227 .putc = ns8250_putc, |
228 .poll = ns8250_poll, | 228 .rxready = ns8250_rxready, |
229 .getc = ns8250_getc, 230}; 231 232static int 233ns8250_probe(struct uart_bas *bas) 234{ 235 u_char val; 236 --- 57 unchanged lines hidden (view full) --- 294 uart_setreg(bas, REG_DATA, c); 295 uart_barrier(bas); 296 limit = 40; 297 while ((uart_getreg(bas, REG_LSR) & LSR_TEMT) == 0 && --limit) 298 DELAY(delay); 299} 300 301static int | 229 .getc = ns8250_getc, 230}; 231 232static int 233ns8250_probe(struct uart_bas *bas) 234{ 235 u_char val; 236 --- 57 unchanged lines hidden (view full) --- 294 uart_setreg(bas, REG_DATA, c); 295 uart_barrier(bas); 296 limit = 40; 297 while ((uart_getreg(bas, REG_LSR) & LSR_TEMT) == 0 && --limit) 298 DELAY(delay); 299} 300 301static int |
302ns8250_poll(struct uart_bas *bas) | 302ns8250_rxready(struct uart_bas *bas) |
303{ 304 | 303{ 304 |
305 if (uart_getreg(bas, REG_LSR) & LSR_RXRDY) 306 return (uart_getreg(bas, REG_DATA)); 307 return (-1); | 305 return ((uart_getreg(bas, REG_LSR) & LSR_RXRDY) != 0 ? 1 : 0); |
308} 309 310static int 311ns8250_getc(struct uart_bas *bas, struct mtx *hwmtx) 312{ 313 int c, delay; 314 315 uart_lock(hwmtx); --- 507 unchanged lines hidden --- | 306} 307 308static int 309ns8250_getc(struct uart_bas *bas, struct mtx *hwmtx) 310{ 311 int c, delay; 312 313 uart_lock(hwmtx); --- 507 unchanged lines hidden --- |