One thing that's puzzling me about the ppc(4) driver's ISA
routines is that it only checks to see whether or not the device has
an IO error:

(from sys/dev/ppc/ppc_isa.c)

@@ -121,8 +121,8 @@
        parent = device_get_parent(dev);

        error = ISA_PNP_PROBE(parent, dev, lpc_ids);
        if (error == ENXIO)
                return (ENXIO);
        if (error != 0)         /* XXX shall be set after detection */
                device_set_desc(dev, "Parallel port");

    But what about the case where ENOENT is returned :)?

(from sys/isa/isa_common.c)

static int
isa_pnp_probe(device_t dev, device_t child, struct isa_pnp_id *ids)
{
        struct isa_device* idev = DEVTOISA(child);

        if (!idev->id_vendorid)
                return (ENOENT);

        while (ids && ids->ip_id) {
                /*
                 * Really ought to support >1 compat id per device.
                 */
                if (idev->id_logicalid == ids->ip_id
                    || idev->id_compatid == ids->ip_id) {
                        if (ids->ip_desc)
                                device_set_desc(child, ids->ip_desc);
                        return (0);
                }
                ids++;
        }

        return (ENXIO);
}

    Does it make sense for this patch to be applied to ppc(4)? I think
it solves some problems with bogus device.hints files and the ppc
driver, but my eye is a bit untrained for this stuff and I don't have
the experience to say with absolute authority whether or not it's the
case.
Thanks,
-Garrett

Index: sys/dev/ppc/ppc_isa.c
===================================================================
--- sys/dev/ppc/ppc_isa.c       (revision 211309)
+++ sys/dev/ppc/ppc_isa.c       (working copy)
@@ -121,8 +121,8 @@
        parent = device_get_parent(dev);

        error = ISA_PNP_PROBE(parent, dev, lpc_ids);
-       if (error == ENXIO)
-               return (ENXIO);
+       if (error)
+               return (error);
        if (error != 0)         /* XXX shall be set after detection */
                device_set_desc(dev, "Parallel port");
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to