summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/uart/uart_dev_ns8250.c51
-rw-r--r--sys/dev/uart/uart_dev_ns8250.h60
2 files changed, 73 insertions, 38 deletions
diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c
index 8eca8f0..1c337ca 100644
--- a/sys/dev/uart/uart_dev_ns8250.c
+++ b/sys/dev/uart/uart_dev_ns8250.c
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
#include <dev/uart/uart.h>
#include <dev/uart/uart_cpu.h>
#include <dev/uart/uart_bus.h>
+#include <dev/uart/uart_dev_ns8250.h>
#include <dev/ic/ns16550.h>
@@ -239,7 +240,7 @@ static void ns8250_putc(struct uart_bas *bas, int);
static int ns8250_rxready(struct uart_bas *bas);
static int ns8250_getc(struct uart_bas *bas, struct mtx *);
-static struct uart_ops uart_ns8250_ops = {
+struct uart_ops uart_ns8250_ops = {
.probe = ns8250_probe,
.init = ns8250_init,
.term = ns8250_term,
@@ -352,32 +353,6 @@ ns8250_getc(struct uart_bas *bas, struct mtx *hwmtx)
return (c);
}
-/*
- * High-level UART interface.
- */
-struct ns8250_softc {
- struct uart_softc base;
- uint8_t fcr;
- uint8_t ier;
- uint8_t mcr;
-
- uint8_t ier_mask;
- uint8_t ier_rxbits;
- uint8_t busy_detect;
-};
-
-static int ns8250_bus_attach(struct uart_softc *);
-static int ns8250_bus_detach(struct uart_softc *);
-static int ns8250_bus_flush(struct uart_softc *, int);
-static int ns8250_bus_getsig(struct uart_softc *);
-static int ns8250_bus_ioctl(struct uart_softc *, int, intptr_t);
-static int ns8250_bus_ipend(struct uart_softc *);
-static int ns8250_bus_param(struct uart_softc *, int, int, int, int);
-static int ns8250_bus_probe(struct uart_softc *);
-static int ns8250_bus_receive(struct uart_softc *);
-static int ns8250_bus_setsig(struct uart_softc *, int);
-static int ns8250_bus_transmit(struct uart_softc *);
-
static kobj_method_t ns8250_methods[] = {
KOBJMETHOD(uart_attach, ns8250_bus_attach),
KOBJMETHOD(uart_detach, ns8250_bus_detach),
@@ -409,7 +384,7 @@ struct uart_class uart_ns8250_class = {
i = (i & s) ? (i & ~s) | d : i; \
}
-static int
+int
ns8250_bus_attach(struct uart_softc *sc)
{
struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
@@ -482,7 +457,7 @@ ns8250_bus_attach(struct uart_softc *sc)
return (0);
}
-static int
+int
ns8250_bus_detach(struct uart_softc *sc)
{
struct ns8250_softc *ns8250;
@@ -498,7 +473,7 @@ ns8250_bus_detach(struct uart_softc *sc)
return (0);
}
-static int
+int
ns8250_bus_flush(struct uart_softc *sc, int what)
{
struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
@@ -518,7 +493,7 @@ ns8250_bus_flush(struct uart_softc *sc, int what)
return (error);
}
-static int
+int
ns8250_bus_getsig(struct uart_softc *sc)
{
uint32_t new, old, sig;
@@ -539,7 +514,7 @@ ns8250_bus_getsig(struct uart_softc *sc)
return (sig);
}
-static int
+int
ns8250_bus_ioctl(struct uart_softc *sc, int request, intptr_t data)
{
struct uart_bas *bas;
@@ -612,7 +587,7 @@ ns8250_bus_ioctl(struct uart_softc *sc, int request, intptr_t data)
return (error);
}
-static int
+int
ns8250_bus_ipend(struct uart_softc *sc)
{
struct uart_bas *bas;
@@ -656,7 +631,7 @@ ns8250_bus_ipend(struct uart_softc *sc)
return (ipend);
}
-static int
+int
ns8250_bus_param(struct uart_softc *sc, int baudrate, int databits,
int stopbits, int parity)
{
@@ -670,7 +645,7 @@ ns8250_bus_param(struct uart_softc *sc, int baudrate, int databits,
return (error);
}
-static int
+int
ns8250_bus_probe(struct uart_softc *sc)
{
struct ns8250_softc *ns8250;
@@ -820,7 +795,7 @@ ns8250_bus_probe(struct uart_softc *sc)
return (0);
}
-static int
+int
ns8250_bus_receive(struct uart_softc *sc)
{
struct uart_bas *bas;
@@ -853,7 +828,7 @@ ns8250_bus_receive(struct uart_softc *sc)
return (0);
}
-static int
+int
ns8250_bus_setsig(struct uart_softc *sc, int sig)
{
struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
@@ -885,7 +860,7 @@ ns8250_bus_setsig(struct uart_softc *sc, int sig)
return (0);
}
-static int
+int
ns8250_bus_transmit(struct uart_softc *sc)
{
struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
diff --git a/sys/dev/uart/uart_dev_ns8250.h b/sys/dev/uart/uart_dev_ns8250.h
new file mode 100644
index 0000000..39f4a0f
--- /dev/null
+++ b/sys/dev/uart/uart_dev_ns8250.h
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2003 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _DEV_UART_DEV_NS8250_H_
+#define _DEV_UART_DEV_NS8250_H_
+
+/*
+ * High-level UART interface.
+ */
+struct ns8250_softc {
+ struct uart_softc base;
+ uint8_t fcr;
+ uint8_t ier;
+ uint8_t mcr;
+
+ uint8_t ier_mask;
+ uint8_t ier_rxbits;
+ uint8_t busy_detect;
+};
+
+extern struct uart_ops uart_ns8250_ops;
+
+int ns8250_bus_attach(struct uart_softc *);
+int ns8250_bus_detach(struct uart_softc *);
+int ns8250_bus_flush(struct uart_softc *, int);
+int ns8250_bus_getsig(struct uart_softc *);
+int ns8250_bus_ioctl(struct uart_softc *, int, intptr_t);
+int ns8250_bus_ipend(struct uart_softc *);
+int ns8250_bus_param(struct uart_softc *, int, int, int, int);
+int ns8250_bus_probe(struct uart_softc *);
+int ns8250_bus_receive(struct uart_softc *);
+int ns8250_bus_setsig(struct uart_softc *, int);
+int ns8250_bus_transmit(struct uart_softc *);
+
+#endif /* _DEV_UART_DEV_NS8250_H_ */
OpenPOWER on IntegriCloud