aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/arm/icside.c
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/icside.c
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/icside.c')
-rw-r--r--drivers/ide/arm/icside.c13
1 files changed, 6 insertions, 7 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