git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
scsi
/
nsp32.c
diff --git
a/drivers/scsi/nsp32.c
b/drivers/scsi/nsp32.c
index
a279ebb
..
7c13f6f
100644
(file)
--- a/
drivers/scsi/nsp32.c
+++ b/
drivers/scsi/nsp32.c
@@
-38,6
+38,7
@@
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/ctype.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/ctype.h>
+#include <linux/dma-mapping.h>
#include <asm/dma.h>
#include <asm/system.h>
#include <asm/dma.h>
#include <asm/system.h>
@@
-255,7
+256,7
@@
static void nsp32_sack_negate (nsp32_hw_data *);
static void nsp32_do_bus_reset(nsp32_hw_data *);
/* hardware interrupt handler */
static void nsp32_do_bus_reset(nsp32_hw_data *);
/* hardware interrupt handler */
-static irqreturn_t do_nsp32_isr(int, void *
, struct pt_regs *
);
+static irqreturn_t do_nsp32_isr(int, void *);
/* initialize hardware */
static int nsp32hw_init(nsp32_hw_data *);
/* initialize hardware */
static int nsp32hw_init(nsp32_hw_data *);
@@
-1200,7
+1201,7
@@
static int nsp32hw_init(nsp32_hw_data *data)
/* interrupt routine */
/* interrupt routine */
-static irqreturn_t do_nsp32_isr(int irq, void *dev_id
, struct pt_regs *regs
)
+static irqreturn_t do_nsp32_isr(int irq, void *dev_id)
{
nsp32_hw_data *data = dev_id;
unsigned int base = data->BaseAddress;
{
nsp32_hw_data *data = dev_id;
unsigned int base = data->BaseAddress;
@@
-1635,7
+1636,7
@@
static void nsp32_scsi_done(struct scsi_cmnd *SCpnt)
if (SCpnt->use_sg) {
pci_unmap_sg(data->Pci,
if (SCpnt->use_sg) {
pci_unmap_sg(data->Pci,
- (struct scatterlist *)SCpnt->buffer,
+ (struct scatterlist *)SCpnt->
request_
buffer,
SCpnt->use_sg, SCpnt->sc_data_direction);
} else {
pci_unmap_single(data->Pci,
SCpnt->use_sg, SCpnt->sc_data_direction);
} else {
pci_unmap_single(data->Pci,
@@
-2776,7
+2777,7
@@
static int nsp32_detect(struct scsi_host_template *sht)
/*
* setup DMA
*/
/*
* setup DMA
*/
- if (pci_set_dma_mask(PCIDEV,
0xffffffffUL
) != 0) {
+ if (pci_set_dma_mask(PCIDEV,
DMA_32BIT_MASK
) != 0) {
nsp32_msg (KERN_ERR, "failed to set PCI DMA mask");
goto scsi_unregister;
}
nsp32_msg (KERN_ERR, "failed to set PCI DMA mask");
goto scsi_unregister;
}
@@
-2865,8
+2866,7
@@
static int nsp32_detect(struct scsi_host_template *sht)
*/
nsp32_do_bus_reset(data);
*/
nsp32_do_bus_reset(data);
- ret = request_irq(host->irq, do_nsp32_isr,
- SA_SHIRQ | SA_SAMPLE_RANDOM, "nsp32", data);
+ ret = request_irq(host->irq, do_nsp32_isr, IRQF_SHARED, "nsp32", data);
if (ret < 0) {
nsp32_msg(KERN_ERR, "Unable to allocate IRQ for NinjaSCSI32 "
"SCSI PCI controller. Interrupt: %d", host->irq);
if (ret < 0) {
nsp32_msg(KERN_ERR, "Unable to allocate IRQ for NinjaSCSI32 "
"SCSI PCI controller. Interrupt: %d", host->irq);
@@
-2885,12
+2885,19
@@
static int nsp32_detect(struct scsi_host_template *sht)
}
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
}
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,73))
- scsi_add_host (host, &PCIDEV->dev);
+ ret = scsi_add_host(host, &PCIDEV->dev);
+ if (ret) {
+ nsp32_msg(KERN_ERR, "failed to add scsi host");
+ goto free_region;
+ }
scsi_scan_host(host);
#endif
pci_set_drvdata(PCIDEV, host);
return DETECT_OK;
scsi_scan_host(host);
#endif
pci_set_drvdata(PCIDEV, host);
return DETECT_OK;
+ free_region:
+ release_region(host->io_port, host->n_io_port);
+
free_irq:
free_irq(host->irq, data);
free_irq:
free_irq(host->irq, data);
@@
-3574,7
+3581,7
@@
static struct pci_driver nsp32_driver = {
*/
static int __init init_nsp32(void) {
nsp32_msg(KERN_INFO, "loading...");
*/
static int __init init_nsp32(void) {
nsp32_msg(KERN_INFO, "loading...");
- return pci_
module_init
(&nsp32_driver);
+ return pci_
register_driver
(&nsp32_driver);
}
static void __exit exit_nsp32(void) {
}
static void __exit exit_nsp32(void) {