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 | |
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')
-rw-r--r-- | drivers/ide/arm/icside.c | 13 | ||||
-rw-r--r-- | drivers/ide/arm/ide_arm.c | 5 | ||||
-rw-r--r-- | drivers/ide/arm/palm_bk3710.c | 6 | ||||
-rw-r--r-- | drivers/ide/arm/rapide.c | 5 |
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 @@ | |||
29 | static int __init ide_arm_init(void) | 29 | static 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; |
412 | out: | 410 | out: |
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; |