static int an_pccard_attach(device_t dev) { struct an_softc *sc = device_get_softc(dev); int flags = device_get_flags(dev); int error; error = an_probe(dev); /* 0 is failure for now */ if (error == 0) { error = ENXIO; goto fail; } error = an_alloc_irq(dev, 0, 0); if (error != 0) goto fail; an_alloc_irq(dev, sc->irq_rid, 0); error = an_attach(sc, flags); if (error) goto fail; /* * Must setup the interrupt after the an_attach to prevent racing. */ error = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_NET, NULL, an_intr, sc, &sc->irq_handle); fail: if (error) an_release_resources(dev); return (error); }
static int an_pccard_probe(device_t dev) { int error; error = an_probe(dev); if (error == 0) { device_set_desc(dev, "Aironet PC4500/PC4800"); error = an_alloc_irq(dev, 0, 0); } an_release_resources(dev); return (error); }
static int an_probe_isa(device_t dev) { int error = 0; error = ISA_PNP_PROBE(device_get_parent(dev), dev, an_ids); if (error == ENXIO) return(error); error = an_probe(dev); an_release_resources(dev); if (error == 0) return (ENXIO); error = an_alloc_irq(dev, 0, 0); an_release_resources(dev); if (!error) device_set_desc(dev, "Aironet ISA4500/ISA4800"); return (error); }