aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/arm
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:50 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:50 -0400
commitc97c6aca75fd5f718056fde7cff798b8cbdb07c0 (patch)
tree275635f3afb9d3a1f1f9ea5cebe08b5f327fc92c /drivers/ide/arm
parent51d87ed0aab98999bebaf891b99730e15502a592 (diff)
ide: pass hw_regs_t-s to ide_device_add[_all]() (take 3)
* Add 'hw_regs_t **hws' argument to ide_device_add[_all]() and convert host drivers + ide_legacy_init_one() + ide_setup_pci_device[s]() to use it instead of calling ide_init_port_hw() directly. [ However if host has > 1 port we must still set hwif->chipset to hint consecutive ide_find_port() call that the previous slot is occupied. ] * Unexport ide_init_port_hw(). v2: * Use defines instead of hard-coded values in buddha.c, gayle.c and q40ide.c. (Suggested by Geert Uytterhoeven) * Better patch description. v3: * Fix build problem in ide-cs.c. (Noticed by Stephen Rothwell) There should be no functional changes caused by this patch. Cc: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/arm')
-rw-r--r--drivers/ide/arm/icside.c13
-rw-r--r--drivers/ide/arm/ide_arm.c5
-rw-r--r--drivers/ide/arm/palm_bk3710.c6
-rw-r--r--drivers/ide/arm/rapide.c5
4 files changed, 12 insertions, 17 deletions
diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c
index 52f58c885783..850fe9342a1f 100644
--- a/drivers/ide/arm/icside.c
+++ b/drivers/ide/arm/icside.c
@@ -442,8 +442,8 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
442{ 442{
443 ide_hwif_t *hwif; 443 ide_hwif_t *hwif;
444 void __iomem *base; 444 void __iomem *base;
445 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
445 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 446 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
446 hw_regs_t hw;
447 447
448 base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); 448 base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0);
449 if (!base) 449 if (!base)
@@ -467,7 +467,6 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
467 if (!hwif) 467 if (!hwif)
468 return -ENODEV; 468 return -ENODEV;
469 469
470 ide_init_port_hw(hwif, &hw);
471 default_hwif_mmiops(hwif); 470 default_hwif_mmiops(hwif);
472 471
473 state->hwif[0] = hwif; 472 state->hwif[0] = hwif;
@@ -476,7 +475,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
476 475
477 idx[0] = hwif->index; 476 idx[0] = hwif->index;
478 477
479 ide_device_add(idx, NULL); 478 ide_device_add(idx, NULL, hws);
480 479
481 return 0; 480 return 0;
482} 481}
@@ -497,9 +496,9 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
497 void __iomem *ioc_base, *easi_base; 496 void __iomem *ioc_base, *easi_base;
498 unsigned int sel = 0; 497 unsigned int sel = 0;
499 int ret; 498 int ret;
499 hw_regs_t hw[2], *hws[] = { &hw[0], NULL, NULL, NULL };
500 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 500 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
501 struct ide_port_info d = icside_v6_port_info; 501 struct ide_port_info d = icside_v6_port_info;
502 hw_regs_t hw[2];
503 502
504 ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); 503 ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0);
505 if (!ioc_base) { 504 if (!ioc_base) {
@@ -545,16 +544,16 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
545 if (hwif == NULL) 544 if (hwif == NULL)
546 return -ENODEV; 545 return -ENODEV;
547 546
548 ide_init_port_hw(hwif, &hw[0]); 547 hwif->chipset = ide_acorn;
549 default_hwif_mmiops(hwif); 548 default_hwif_mmiops(hwif);
550 549
551 idx[0] = hwif->index; 550 idx[0] = hwif->index;
552 551
553 mate = ide_find_port(); 552 mate = ide_find_port();
554 if (mate) { 553 if (mate) {
555 ide_init_port_hw(mate, &hw[1]);
556 default_hwif_mmiops(mate); 554 default_hwif_mmiops(mate);
557 555
556 hws[1] = &hw[1];
558 idx[1] = mate->index; 557 idx[1] = mate->index;
559 } 558 }
560 559
@@ -569,7 +568,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
569 d.dma_ops = NULL; 568 d.dma_ops = NULL;
570 } 569 }
571 570
572 ide_device_add(idx, &d); 571 ide_device_add(idx, &d, hws);
573 572
574 return 0; 573 return 0;
575 574
diff --git a/drivers/ide/arm/ide_arm.c b/drivers/ide/arm/ide_arm.c
index 2f311da4c963..e9831bbd988a 100644
--- a/drivers/ide/arm/ide_arm.c
+++ b/drivers/ide/arm/ide_arm.c
@@ -29,8 +29,8 @@
29static int __init ide_arm_init(void) 29static int __init ide_arm_init(void)
30{ 30{
31 ide_hwif_t *hwif; 31 ide_hwif_t *hwif;
32 hw_regs_t hw;
33 unsigned long base = IDE_ARM_IO, ctl = IDE_ARM_IO + 0x206; 32 unsigned long base = IDE_ARM_IO, ctl = IDE_ARM_IO + 0x206;
33 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
34 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 34 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
35 35
36 if (!request_region(base, 8, DRV_NAME)) { 36 if (!request_region(base, 8, DRV_NAME)) {
@@ -53,10 +53,9 @@ static int __init ide_arm_init(void)
53 53
54 hwif = ide_find_port(); 54 hwif = ide_find_port();
55 if (hwif) { 55 if (hwif) {
56 ide_init_port_hw(hwif, &hw);
57 idx[0] = hwif->index; 56 idx[0] = hwif->index;
58 57
59 ide_device_add(idx, NULL); 58 ide_device_add(idx, NULL, hws);
60 } 59 }
61 60
62 return 0; 61 return 0;
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c
index c79b85b6e4a3..023c10753f15 100644
--- a/drivers/ide/arm/palm_bk3710.c
+++ b/drivers/ide/arm/palm_bk3710.c
@@ -351,7 +351,7 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
351 ide_hwif_t *hwif; 351 ide_hwif_t *hwif;
352 unsigned long base, rate; 352 unsigned long base, rate;
353 int i; 353 int i;
354 hw_regs_t hw; 354 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
355 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 355 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
356 356
357 clk = clk_get(NULL, "IDECLK"); 357 clk = clk_get(NULL, "IDECLK");
@@ -400,13 +400,11 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
400 400
401 i = hwif->index; 401 i = hwif->index;
402 402
403 ide_init_port_hw(hwif, &hw);
404
405 default_hwif_mmiops(hwif); 403 default_hwif_mmiops(hwif);
406 404
407 idx[0] = i; 405 idx[0] = i;
408 406
409 ide_device_add(idx, &palm_bk3710_port_info); 407 ide_device_add(idx, &palm_bk3710_port_info, hws);
410 408
411 return 0; 409 return 0;
412out: 410out:
diff --git a/drivers/ide/arm/rapide.c b/drivers/ide/arm/rapide.c
index 43057e0303c8..01896f6e8acf 100644
--- a/drivers/ide/arm/rapide.c
+++ b/drivers/ide/arm/rapide.c
@@ -35,8 +35,8 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id)
35 ide_hwif_t *hwif; 35 ide_hwif_t *hwif;
36 void __iomem *base; 36 void __iomem *base;
37 int ret; 37 int ret;
38 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
38 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 39 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
39 hw_regs_t hw;
40 40
41 ret = ecard_request_resources(ec); 41 ret = ecard_request_resources(ec);
42 if (ret) 42 if (ret)
@@ -59,12 +59,11 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id)
59 goto release; 59 goto release;
60 } 60 }
61 61
62 ide_init_port_hw(hwif, &hw);
63 default_hwif_mmiops(hwif); 62 default_hwif_mmiops(hwif);
64 63
65 idx[0] = hwif->index; 64 idx[0] = hwif->index;
66 65
67 ide_device_add(idx, &rapide_port_info); 66 ide_device_add(idx, &rapide_port_info, hws);
68 67
69 ecard_set_drvdata(ec, hwif); 68 ecard_set_drvdata(ec, hwif);
70 goto out; 69 goto out;