Check for generic ns16550 after all other types. A device may be compatible

with 16550 but also have a more specific/capable driver earlier in the list.
This commit is contained in:
Ian Lepore 2013-08-21 04:05:06 +00:00
parent 2640fb93f5
commit d081029a4f

View file

@ -101,9 +101,7 @@ uart_fdt_probe(device_t dev)
int err;
sc = device_get_softc(dev);
if (ofw_bus_is_compatible(dev, "ns16550"))
sc->sc_class = &uart_ns8250_class;
else if (ofw_bus_is_compatible(dev, "lpc,uart"))
if (ofw_bus_is_compatible(dev, "lpc,uart"))
sc->sc_class = &uart_lpc_class;
else if (ofw_bus_is_compatible(dev, "fsl,imx-uart"))
sc->sc_class = &uart_imx_class;
@ -113,6 +111,8 @@ uart_fdt_probe(device_t dev)
sc->sc_class = &uart_s3c2410_class;
else if (ofw_bus_is_compatible(dev, "cadence,uart"))
sc->sc_class = &uart_cdnc_class;
else if (ofw_bus_is_compatible(dev, "ns16550"))
sc->sc_class = &uart_ns8250_class;
else
return (ENXIO);