diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:50 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:50 -0400 |
commit | c97c6aca75fd5f718056fde7cff798b8cbdb07c0 (patch) | |
tree | 275635f3afb9d3a1f1f9ea5cebe08b5f327fc92c /drivers/ide/arm/icside.c | |
parent | 51d87ed0aab98999bebaf891b99730e15502a592 (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.c | 13 |
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 | ||