Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Jul 2003 21:38:38 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 34287 for review
Message-ID:  <200307100438.h6A4ccBQ083975@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=34287

Change 34287 by marcel@marcel_nfs on 2003/07/09 21:38:25

	Implement the attach() and ipend() methods.

Affected files ...

.. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#6 edit

Differences ...

==== //depot/projects/uart/dev/uart/uart_dev_ns8250.c#6 (text+ko) ====

@@ -297,6 +297,7 @@
 struct ns8250_softc {
 	struct uart_softc base;
 	uint8_t		fcr;
+	uint8_t		lcr;
 	uint8_t		mcr;
 };
 
@@ -332,7 +333,18 @@
 static int
 ns8250_bus_attach(struct uart_softc *sc)
 {
+	struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
+	struct uart_bas *bas;
+
+	bas = &sc->sc_bas;
 
+	ns8250->mcr = uart_getreg(bas, REG_MCR);
+	ns8250->lcr = uart_getreg(bas, REG_LCR);
+	ns8250->fcr = FCR_ENABLE | FCR_RX_MEDL;
+	uart_setreg(bas, REG_FCR, ns8250->fcr);
+	uart_setreg(bas, REG_IER,
+	    IER_ERXRDY | IER_ETXRDY | IER_ERLS | IER_EMSC);
+	uart_barrier(bas);
 	return (0);
 }
 
@@ -360,8 +372,29 @@
 static int
 ns8250_bus_ipend(struct uart_softc *sc)
 {
+	struct uart_bas *bas;
+	int ipend;
+	uint8_t iir, lsr;
 
-	return (0);
+	bas = &sc->sc_bas;
+	ipend = 0;
+	iir = uart_getreg(bas, REG_IIR);
+	if (iir == IIR_RLS) {
+		lsr = uart_getreg(bas, REG_LSR);
+		if (lsr & LSR_OE)
+			ipend |= UART_IPEND_OVERRUN;
+		if (lsr & LSR_BI)
+			ipend |= UART_IPEND_BREAK;
+		uart_barrier(bas);
+		iir = uart_getreg(bas, REG_IIR);
+	}
+	if (iir == IIR_RXRDY || iir == IIR_RXTOUT)
+		ipend |= UART_IPEND_RXREADY;
+	if (iir == IIR_TXRDY)
+		ipend |= UART_IPEND_TXIDLE;
+	if (iir == IIR_MLSC)
+		ipend |= UART_IPEND_SIGCHG;
+	return (ipend);
 }
 
 static int



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200307100438.h6A4ccBQ083975>