int wdprobe(int ioaddr, struct device *dev) { int *port, ports[] = {0x300, 0x280, 0x380, 0x240, 0}; if (ioaddr > 0x100) return wdprobe1(ioaddr, dev); for (port = &ports[0]; *port; port++) if (inb(*port + 8) != 0xff && wdprobe1(*port, dev)) return *port; return 0; }
int wd_probe(struct device *dev) { int *port, ports[] = {0x300, 0x280, 0x380, 0x240, 0}; short ioaddr = dev->base_addr; if (ioaddr < 0) return ENXIO; /* Don't probe at all. */ if (ioaddr > 0x100) return ! wdprobe1(ioaddr, dev); for (port = &ports[0]; *port; port++) { if (check_region(*port, 32)) continue; if (inb(*port + 8) != 0xff && inb(*port + 9) != 0xff /* Extra check to avoid soundcard. */ && wdprobe1(*port, dev)) return 0; } dev->base_addr = ioaddr; return ENODEV; }