Date: Fri, 13 Dec 2013 22:48:01 +0000 (UTC) From: Ian Lepore <ian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r259357 - stable/10/sys/dev/uart Message-ID: <201312132248.rBDMm1Mw059438@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ian Date: Fri Dec 13 22:48:01 2013 New Revision: 259357 URL: http://svnweb.freebsd.org/changeset/base/259357 Log: MFC r257556: Arrange for uart_cpu_fdt's probe() routine to use the same table of compat strings as uart_bus_fdt's probe(). Modified: stable/10/sys/dev/uart/uart.h stable/10/sys/dev/uart/uart_bus_fdt.c stable/10/sys/dev/uart/uart_cpu_fdt.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/uart/uart.h ============================================================================== --- stable/10/sys/dev/uart/uart.h Fri Dec 13 22:46:10 2013 (r259356) +++ stable/10/sys/dev/uart/uart.h Fri Dec 13 22:48:01 2013 (r259357) @@ -76,6 +76,11 @@ extern struct uart_class uart_pl011_clas extern struct uart_class uart_cdnc_class __attribute__((weak)); extern struct uart_class uart_ti8250_class __attribute__((weak)); +#ifdef FDT +struct ofw_compat_data; +extern const struct ofw_compat_data *uart_fdt_compat_data; +#endif + #ifdef PC98 struct uart_class *uart_pc98_getdev(u_long port); #endif Modified: stable/10/sys/dev/uart/uart_bus_fdt.c ============================================================================== --- stable/10/sys/dev/uart/uart_bus_fdt.c Fri Dec 13 22:46:10 2013 (r259356) +++ stable/10/sys/dev/uart/uart_bus_fdt.c Fri Dec 13 22:48:01 2013 (r259357) @@ -30,6 +30,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_platform.h" + #include <sys/param.h> #include <sys/bus.h> #include <sys/kernel.h> @@ -85,6 +87,9 @@ static struct ofw_compat_data compat_dat {NULL, (uintptr_t)NULL}, }; +/* Export the compat_data table for use by the uart_cpu_fdt.c probe routine. */ +const struct ofw_compat_data *uart_fdt_compat_data = compat_data; + static int uart_fdt_get_clock(phandle_t node, pcell_t *cell) { Modified: stable/10/sys/dev/uart/uart_cpu_fdt.c ============================================================================== --- stable/10/sys/dev/uart/uart_cpu_fdt.c Fri Dec 13 22:46:10 2013 (r259356) +++ stable/10/sys/dev/uart/uart_cpu_fdt.c Fri Dec 13 22:48:01 2013 (r259357) @@ -30,6 +30,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_platform.h" + #include <sys/param.h> #include <sys/bus.h> #include <sys/kernel.h> @@ -93,6 +95,7 @@ int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { char buf[64]; + const struct ofw_compat_data *cd; struct uart_class *class; phandle_t node, chosen; pcell_t shift, br, rclk; @@ -139,22 +142,13 @@ uart_cpu_getdev(int devtype, struct uart /* * Finalize configuration. */ - if (fdt_is_compatible(node, "fsl,imx-uart")) - class = &uart_imx_class; - else if (fdt_is_compatible(node, "quicc")) - class = &uart_quicc_class; - else if (fdt_is_compatible(node, "lpc")) - class = &uart_lpc_class; - else if (fdt_is_compatible(node, "arm,pl011")) - class = &uart_pl011_class; - else if (fdt_is_compatible(node, "exynos")) - class = &uart_s3c2410_class; - else if (fdt_is_compatible(node, "cadence,uart")) - class = &uart_cdnc_class; - else if (fdt_is_compatible(node, "ti,ns16550")) - class = &uart_ti8250_class; - else if (fdt_is_compatible(node, "ns16550")) - class = &uart_ns8250_class; + for (cd = uart_fdt_compat_data; cd->ocd_str != NULL; ++cd) { + if (fdt_is_compatible(node, cd->ocd_str)) + break; + } + if (cd->ocd_str == NULL) + return (ENXIO); + class = (struct uart_class *)cd->ocd_data; di->bas.chan = 0; di->bas.regshft = (u_int)shift;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312132248.rBDMm1Mw059438>