static int apdrv_probe(struct pci_dev *dev, const struct pci_device_id *devid)
{
   void *VirtIO;
   int boardno;
   if (pci_enable_device(dev))
      return -EIO;
   VirtIO = ioremap(pci_resource_start(dev, 0), pci_resource_len(dev, 0));
   if (!VirtIO)
      return -EIO;
   if ((boardno = ac_probe_board(dev->resource[0].start,
                (unsigned long)VirtIO)) == -1) {
      printk(KERN_INFO "ac.o: PCI Applicom device doesn't have"
         " correct signature.\n");
      iounmap(VirtIO);
      return -EIO;
   }
   if (request_irq(dev->irq, &ac_interrupt, SA_SHIRQ, 
         "Applicom PCI", dev)) {
      printk(KERN_INFO "Could not allocate IRQ %d for "
         "PCI Applicom device.\n", dev->irq);
      iounmap(VirtIO);
      return -EIO;
   }
   return 0;
}
