summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorray <ray@FreeBSD.org>2013-06-29 23:48:08 +0000
committerray <ray@FreeBSD.org>2013-06-29 23:48:08 +0000
commit4050245570c8670761c4817e97620d1ba5181f36 (patch)
tree856dd2503714c260a19647922d4a50eb04ab3e6c
parent657d0f0fb6d5e3d99ebeca0adf6acbf4ac780ebf (diff)
downloadFreeBSD-src-4050245570c8670761c4817e97620d1ba5181f36.zip
FreeBSD-src-4050245570c8670761c4817e97620d1ba5181f36.tar.gz
Teach UART to attach Exynos/s3/s5 class driver.
Submitted by: Ruslan Bukin <br@bsdpad.com> Reviewed by: gonzo
-rw-r--r--sys/dev/uart/uart.h1
-rw-r--r--sys/dev/uart/uart_bus_fdt.c2
-rw-r--r--sys/dev/uart/uart_cpu_fdt.c2
-rw-r--r--sys/dev/uart/uart_subr.c1
4 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/uart/uart.h b/sys/dev/uart/uart.h
index 772793f..fb0f699 100644
--- a/sys/dev/uart/uart.h
+++ b/sys/dev/uart/uart.h
@@ -67,6 +67,7 @@ struct uart_class;
extern struct uart_class uart_imx_class __attribute__((weak));
extern struct uart_class uart_ns8250_class __attribute__((weak));
extern struct uart_class uart_quicc_class __attribute__((weak));
+extern struct uart_class uart_s3c2410_class __attribute__((weak));
extern struct uart_class uart_sab82532_class __attribute__((weak));
extern struct uart_class uart_sbbc_class __attribute__((weak));
extern struct uart_class uart_z8530_class __attribute__((weak));
diff --git a/sys/dev/uart/uart_bus_fdt.c b/sys/dev/uart/uart_bus_fdt.c
index d7b6017..4f6ac9b 100644
--- a/sys/dev/uart/uart_bus_fdt.c
+++ b/sys/dev/uart/uart_bus_fdt.c
@@ -109,6 +109,8 @@ uart_fdt_probe(device_t dev)
sc->sc_class = &uart_imx_class;
else if (ofw_bus_is_compatible(dev, "arm,pl011"))
sc->sc_class = &uart_pl011_class;
+ else if (ofw_bus_is_compatible(dev, "exynos"))
+ sc->sc_class = &uart_s3c2410_class;
else if (ofw_bus_is_compatible(dev, "cadence,uart"))
sc->sc_class = &uart_cdnc_class;
else
diff --git a/sys/dev/uart/uart_cpu_fdt.c b/sys/dev/uart/uart_cpu_fdt.c
index 52d5f00..0052388 100644
--- a/sys/dev/uart/uart_cpu_fdt.c
+++ b/sys/dev/uart/uart_cpu_fdt.c
@@ -149,6 +149,8 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
class = &uart_ns8250_class;
if (fdt_is_compatible(node, "arm,pl011"))
class = &uart_pl011_class;
+ if (fdt_is_compatible(node, "exynos"))
+ class = &uart_s3c2410_class;
if (fdt_is_compatible(node, "cadence,uart"))
class = &uart_cdnc_class;
diff --git a/sys/dev/uart/uart_subr.c b/sys/dev/uart/uart_subr.c
index acbf3b4..0277b21 100644
--- a/sys/dev/uart/uart_subr.c
+++ b/sys/dev/uart/uart_subr.c
@@ -54,6 +54,7 @@ static struct uart_class *uart_classes[] = {
&uart_z8530_class,
#if defined(__arm__)
&uart_lpc_class,
+ &uart_s3c2410_class,
#endif
};
static size_t uart_nclasses = sizeof(uart_classes) / sizeof(uart_classes[0]);
OpenPOWER on IntegriCloud