Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 40331
b: refs/heads/master
c: 47bcd35
h: refs/heads/master
i:
  40329: 1fd5921
  40327: a6f75c4
v: v3
  • Loading branch information
Alan Cox authored and James Bottomley committed Oct 25, 2006
1 parent 99b9ed2 commit efd001c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ed632da84c51a39fd9c982991e0f26120a035761
refs/heads/master: 47bcd3546d5141e54f15e40a20dc01d7c5f5a473
30 changes: 20 additions & 10 deletions trunk/drivers/scsi/fdomain.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,7 @@ static void __iomem * bios_mem;
static int bios_major;
static int bios_minor;
static int PCI_bus;
static struct pci_dev *PCI_dev;
static int Quantum; /* Quantum board variant */
static int interrupt_level;
static volatile int in_command;
Expand Down Expand Up @@ -812,9 +813,10 @@ static int fdomain_pci_bios_detect( int *irq, int *iobase, struct pci_dev **ret_
PCI_DEVICE_ID_FD_36C70 );
#endif

if ((pdev = pci_find_device(PCI_VENDOR_ID_FD, PCI_DEVICE_ID_FD_36C70, pdev)) == NULL)
if ((pdev = pci_get_device(PCI_VENDOR_ID_FD, PCI_DEVICE_ID_FD_36C70, pdev)) == NULL)
return 0;
if (pci_enable_device(pdev)) return 0;
if (pci_enable_device(pdev))
goto fail;

#if DEBUG_DETECT
printk( "scsi: <fdomain> TMC-3260 detect:"
Expand All @@ -831,7 +833,7 @@ static int fdomain_pci_bios_detect( int *irq, int *iobase, struct pci_dev **ret_
pci_irq = pdev->irq;

if (!request_region( pci_base, 0x10, "fdomain" ))
return 0;
goto fail;

/* Now we have the I/O base address and interrupt from the PCI
configuration registers. */
Expand All @@ -848,17 +850,22 @@ static int fdomain_pci_bios_detect( int *irq, int *iobase, struct pci_dev **ret_
if (!fdomain_is_valid_port(pci_base)) {
printk(KERN_ERR "scsi: <fdomain> PCI card detected, but driver not loaded (invalid port)\n" );
release_region(pci_base, 0x10);
return 0;
goto fail;
}

/* Fill in a few global variables. Ugh. */
bios_major = bios_minor = -1;
PCI_bus = 1;
PCI_dev = pdev;
Quantum = 0;
bios_base = 0;

return 1;
fail:
pci_dev_put(pdev);
return 0;
}

#endif

struct Scsi_Host *__fdomain_16x0_detect(struct scsi_host_template *tpnt )
Expand Down Expand Up @@ -909,8 +916,7 @@ struct Scsi_Host *__fdomain_16x0_detect(struct scsi_host_template *tpnt )
if (setup_called) {
printk(KERN_ERR "scsi: <fdomain> Bad LILO/INSMOD parameters?\n");
}
release_region(port_base, 0x10);
return NULL;
goto fail;
}

if (this_id) {
Expand Down Expand Up @@ -942,8 +948,7 @@ struct Scsi_Host *__fdomain_16x0_detect(struct scsi_host_template *tpnt )
/* Log IRQ with kernel */
if (!interrupt_level) {
printk(KERN_ERR "scsi: <fdomain> Card Detected, but driver not loaded (no IRQ)\n" );
release_region(port_base, 0x10);
return NULL;
goto fail;
} else {
/* Register the IRQ with the kernel */

Expand All @@ -964,11 +969,14 @@ struct Scsi_Host *__fdomain_16x0_detect(struct scsi_host_template *tpnt )
printk(KERN_ERR " Send mail to faith@acm.org\n" );
}
printk(KERN_ERR "scsi: <fdomain> Detected, but driver not loaded (IRQ)\n" );
release_region(port_base, 0x10);
return NULL;
goto fail;
}
}
return shpnt;
fail:
pci_dev_put(pdev);
release_region(port_base, 0x10);
return NULL;
}

static int fdomain_16x0_detect(struct scsi_host_template *tpnt)
Expand Down Expand Up @@ -1714,6 +1722,8 @@ static int fdomain_16x0_release(struct Scsi_Host *shpnt)
free_irq(shpnt->irq, shpnt);
if (shpnt->io_port && shpnt->n_io_port)
release_region(shpnt->io_port, shpnt->n_io_port);
if (PCI_bus)
pci_dev_put(PCI_dev);
return 0;
}

Expand Down

0 comments on commit efd001c

Please sign in to comment.