int rtii_probe(struct device *parent, void *match, void *aux) { struct isa_attach_args *ia = aux; bus_space_tag_t iot = ia->ia_iot; bus_space_handle_t ioh; struct cfdata *cf = match; int iosize = 1, iobase = ia->ia_iobase; if (!RTII_BASE_VALID(iobase)) { printf("rtii: configured iobase 0x%x invalid\n", iobase); return (0); } if (bus_space_map(iot, iobase, iosize, 0, &ioh)) return (0); if (!rtii_find(iot, ioh, cf->cf_flags)) { bus_space_unmap(iot, ioh, iosize); return (0); } bus_space_unmap(iot, ioh, iosize); ia->ia_iosize = iosize; return (1); }
int rtii_probe(struct device *parent, struct cfdata *cf, void *aux) { struct isa_attach_args *ia = aux; bus_space_tag_t iot = ia->ia_iot; bus_space_handle_t ioh; u_int r; int iosize = 1, iobase; if (ISA_DIRECT_CONFIG(ia)) return 0; if (ia->ia_nio < 1) return 0; iobase = ia->ia_io[0].ir_addr; if (!RTII_BASE_VALID(iobase)) { printf("rtii: configured iobase 0x%x invalid\n", iobase); return 0; } if (bus_space_map(iot, iobase, iosize, 0, &ioh)) return 0; r = rtii_find(iot, ioh); bus_space_unmap(iot, ioh, iosize); if (r != 0) { ia->ia_nio = 1; ia->ia_io[0].ir_size = iosize; ia->ia_niomem = 0; ia->ia_nirq = 0; ia->ia_ndrq = 0; return (1); } return (0); }