aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/arm/powertec.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/arm/powertec.c')
-rw-r--r--drivers/scsi/arm/powertec.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c
index 159047a34997..d9a546d1917c 100644
--- a/drivers/scsi/arm/powertec.c
+++ b/drivers/scsi/arm/powertec.c
@@ -313,7 +313,6 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
313{ 313{
314 struct Scsi_Host *host; 314 struct Scsi_Host *host;
315 struct powertec_info *info; 315 struct powertec_info *info;
316 unsigned long resbase, reslen;
317 void __iomem *base; 316 void __iomem *base;
318 int ret; 317 int ret;
319 318
@@ -321,9 +320,7 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
321 if (ret) 320 if (ret)
322 goto out; 321 goto out;
323 322
324 resbase = ecard_resource_start(ec, ECARD_RES_IOCFAST); 323 base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0);
325 reslen = ecard_resource_len(ec, ECARD_RES_IOCFAST);
326 base = ioremap(resbase, reslen);
327 if (!base) { 324 if (!base) {
328 ret = -ENOMEM; 325 ret = -ENOMEM;
329 goto out_region; 326 goto out_region;
@@ -333,7 +330,7 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
333 sizeof (struct powertec_info)); 330 sizeof (struct powertec_info));
334 if (!host) { 331 if (!host) {
335 ret = -ENOMEM; 332 ret = -ENOMEM;
336 goto out_unmap; 333 goto out_region;
337 } 334 }
338 335
339 ecard_set_drvdata(ec, host); 336 ecard_set_drvdata(ec, host);
@@ -361,8 +358,8 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
361 358
362 ec->irqaddr = base + POWERTEC_INTR_STATUS; 359 ec->irqaddr = base + POWERTEC_INTR_STATUS;
363 ec->irqmask = POWERTEC_INTR_BIT; 360 ec->irqmask = POWERTEC_INTR_BIT;
364 ec->irq_data = info; 361
365 ec->ops = &powertecscsi_ops; 362 ecard_setirq(ec, &powertecscsi_ops, info);
366 363
367 device_create_file(&ec->dev, &dev_attr_bus_term); 364 device_create_file(&ec->dev, &dev_attr_bus_term);
368 365
@@ -404,9 +401,6 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
404 device_remove_file(&ec->dev, &dev_attr_bus_term); 401 device_remove_file(&ec->dev, &dev_attr_bus_term);
405 scsi_host_put(host); 402 scsi_host_put(host);
406 403
407 out_unmap:
408 iounmap(base);
409
410 out_region: 404 out_region:
411 ecard_release_resources(ec); 405 ecard_release_resources(ec);
412 406
@@ -428,8 +422,6 @@ static void __devexit powertecscsi_remove(struct expansion_card *ec)
428 free_dma(info->info.scsi.dma); 422 free_dma(info->info.scsi.dma);
429 free_irq(ec->irq, info); 423 free_irq(ec->irq, info);
430 424
431 iounmap(info->base);
432
433 fas216_release(host); 425 fas216_release(host);
434 scsi_host_put(host); 426 scsi_host_put(host);
435 ecard_release_resources(ec); 427 ecard_release_resources(ec);