aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-05-10 11:46:13 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-05-11 12:18:55 -0400
commitc7b87f3d5037a35b5c7bb916ffc826be3fcb208d (patch)
tree57fb9d7bb21965fa0d78b26043cf459ce51a9668 /drivers/scsi
parent129a84de2347002f09721cda3155ccfd19fade40 (diff)
[ARM] ecard: add helper function for setting ecard irq ops
Rather than having every driver fiddle about setting its private IRQ operations and data, provide a helper function to contain this functionality in one place. Arrange to remove the driver-private IRQ operations and data when the device is removed from the driver, and remove the driver private code to do this. This fixes potential problems caused by drivers forgetting to remove these hooks. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/arm/cumana_2.c4
-rw-r--r--drivers/scsi/arm/eesox.c4
-rw-r--r--drivers/scsi/arm/powertec.c4
3 files changed, 6 insertions, 6 deletions
diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c
index 82add77ad131..f51aa3446bc7 100644
--- a/drivers/scsi/arm/cumana_2.c
+++ b/drivers/scsi/arm/cumana_2.c
@@ -450,8 +450,8 @@ cumanascsi2_probe(struct expansion_card *ec, const struct ecard_id *id)
450 450
451 ec->irqaddr = info->base + CUMANASCSI2_STATUS; 451 ec->irqaddr = info->base + CUMANASCSI2_STATUS;
452 ec->irqmask = STATUS_INT; 452 ec->irqmask = STATUS_INT;
453 ec->irq_data = info; 453
454 ec->ops = &cumanascsi_2_ops; 454 ecard_setirq(ec, &cumanascsi_2_ops, info);
455 455
456 ret = fas216_init(host); 456 ret = fas216_init(host);
457 if (ret) 457 if (ret)
diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c
index ed06a8c19ad6..cc5d513aa99a 100644
--- a/drivers/scsi/arm/eesox.c
+++ b/drivers/scsi/arm/eesox.c
@@ -569,8 +569,8 @@ eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
569 569
570 ec->irqaddr = base + EESOX_DMASTAT; 570 ec->irqaddr = base + EESOX_DMASTAT;
571 ec->irqmask = EESOX_STAT_INTR; 571 ec->irqmask = EESOX_STAT_INTR;
572 ec->irq_data = info; 572
573 ec->ops = &eesoxscsi_ops; 573 ecard_setirq(ec, &eesoxscsi_ops, info);
574 574
575 device_create_file(&ec->dev, &dev_attr_bus_term); 575 device_create_file(&ec->dev, &dev_attr_bus_term);
576 576
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c
index 159047a34997..3cbd525b58c5 100644
--- a/drivers/scsi/arm/powertec.c
+++ b/drivers/scsi/arm/powertec.c
@@ -361,8 +361,8 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
361 361
362 ec->irqaddr = base + POWERTEC_INTR_STATUS; 362 ec->irqaddr = base + POWERTEC_INTR_STATUS;
363 ec->irqmask = POWERTEC_INTR_BIT; 363 ec->irqmask = POWERTEC_INTR_BIT;
364 ec->irq_data = info; 364
365 ec->ops = &powertecscsi_ops; 365 ecard_setirq(ec, &powertecscsi_ops, info);
366 366
367 device_create_file(&ec->dev, &dev_attr_bus_term); 367 device_create_file(&ec->dev, &dev_attr_bus_term);
368 368