unsigned long base;
unsigned char irq;
- while ((pci_dev = pci_find_device
+ while ((pci_dev = pci_get_device
(DT3155_VENDORID, DT3155_DEVICEID, pci_dev)) != NULL)
{
pci_index ++;
"for %d devices\n"
"DT3155: Please change MAXBOARDS in dt3155.h\n",
pci_index, MAXBOARDS);
- return DT_3155_FAILURE;
+ goto err;
}
/* Now, just go out and make sure that this/these device(s) is/are
(u_int *) &base)))
{
printk("DT3155: Was not able to find device \n");
- return DT_3155_FAILURE;
+ goto err;
}
DT_3155_DEBUG_MSG("DT3155: Base address 0 for device is %lx \n", base);
if ( !dt3155_lbase[pci_index-1] )
{
printk("DT3155: Unable to remap control registers\n");
- return DT_3155_FAILURE;
+ goto err;
}
if ( (error = pci_read_config_byte( pci_dev, PCI_INTERRUPT_LINE, &irq)) )
{
printk("DT3155: Was not able to find device \n");
- return DT_3155_FAILURE;
+ goto err;
}
DT_3155_DEBUG_MSG("DT3155: IRQ is %d \n",irq);
ndevices = pci_index;
return DT_3155_SUCCESS;
+
+err:
+ pci_dev_put(pci_dev);
+ return DT_3155_FAILURE;
}
u_long allocatorAddr = 0;