aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/arm/arxescsi.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-05-10 13:40:51 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-05-11 12:19:02 -0400
commit10bdaaa0fad620145cf10e2b573266b2d80b44de (patch)
tree8d3200f5041ab0fdc72e9245ef780310b27a18d8 /drivers/scsi/arm/arxescsi.c
parentc7b87f3d5037a35b5c7bb916ffc826be3fcb208d (diff)
[ARM] ecard: add ecardm_iomap() / ecardm_iounmap()
Add devres ecardm_iomap() and ecardm_iounmap() for Acorn expansion cards. Convert all expansion card drivers to use them. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/scsi/arm/arxescsi.c')
-rw-r--r--drivers/scsi/arm/arxescsi.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/scsi/arm/arxescsi.c b/drivers/scsi/arm/arxescsi.c
index 7e132c5bacf8..2836fe248df9 100644
--- a/drivers/scsi/arm/arxescsi.c
+++ b/drivers/scsi/arm/arxescsi.c
@@ -281,7 +281,6 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
281{ 281{
282 struct Scsi_Host *host; 282 struct Scsi_Host *host;
283 struct arxescsi_info *info; 283 struct arxescsi_info *info;
284 unsigned long resbase, reslen;
285 void __iomem *base; 284 void __iomem *base;
286 int ret; 285 int ret;
287 286
@@ -289,9 +288,7 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
289 if (ret) 288 if (ret)
290 goto out; 289 goto out;
291 290
292 resbase = ecard_resource_start(ec, ECARD_RES_MEMC); 291 base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0);
293 reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
294 base = ioremap(resbase, reslen);
295 if (!base) { 292 if (!base) {
296 ret = -ENOMEM; 293 ret = -ENOMEM;
297 goto out_region; 294 goto out_region;
@@ -300,7 +297,7 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
300 host = scsi_host_alloc(&arxescsi_template, sizeof(struct arxescsi_info)); 297 host = scsi_host_alloc(&arxescsi_template, sizeof(struct arxescsi_info));
301 if (!host) { 298 if (!host) {
302 ret = -ENOMEM; 299 ret = -ENOMEM;
303 goto out_unmap; 300 goto out_region;
304 } 301 }
305 302
306 info = (struct arxescsi_info *)host->hostdata; 303 info = (struct arxescsi_info *)host->hostdata;
@@ -337,8 +334,6 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
337 fas216_release(host); 334 fas216_release(host);
338 out_unregister: 335 out_unregister:
339 scsi_host_put(host); 336 scsi_host_put(host);
340 out_unmap:
341 iounmap(base);
342 out_region: 337 out_region:
343 ecard_release_resources(ec); 338 ecard_release_resources(ec);
344 out: 339 out:
@@ -348,13 +343,10 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
348static void __devexit arxescsi_remove(struct expansion_card *ec) 343static void __devexit arxescsi_remove(struct expansion_card *ec)
349{ 344{
350 struct Scsi_Host *host = ecard_get_drvdata(ec); 345 struct Scsi_Host *host = ecard_get_drvdata(ec);
351 struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata;
352 346
353 ecard_set_drvdata(ec, NULL); 347 ecard_set_drvdata(ec, NULL);
354 fas216_remove(host); 348 fas216_remove(host);
355 349
356 iounmap(info->base);
357
358 fas216_release(host); 350 fas216_release(host);
359 scsi_host_put(host); 351 scsi_host_put(host);
360 ecard_release_resources(ec); 352 ecard_release_resources(ec);