diff options
| author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-26 16:25:18 -0400 |
|---|---|---|
| committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-26 16:25:18 -0400 |
| commit | d92f1a2829dbe29c644569a3b64a021e4d90005d (patch) | |
| tree | 8390de547df80777f575f633d9a6d2512e4478db | |
| parent | d9b819a025ca1b09dafbe90b5d25ba57a639f048 (diff) | |
ide: manage I/O resources in ide_legacy_init_one()
* Tell IDE layer to not manage resources by setting hwif->mmio flag.
* Use {request,release}_region() for resources management.
* Set ->name field of 'struct ide_port_info' instances in legacy VLB
host drivers and use driver name for resources management.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| -rw-r--r-- | drivers/ide/ide-probe.c | 14 | ||||
| -rw-r--r-- | drivers/ide/legacy/ali14xx.c | 3 | ||||
| -rw-r--r-- | drivers/ide/legacy/dtc2278.c | 3 | ||||
| -rw-r--r-- | drivers/ide/legacy/ht6560b.c | 1 | ||||
| -rw-r--r-- | drivers/ide/legacy/qd65xx.c | 3 | ||||
| -rw-r--r-- | drivers/ide/legacy/umc8672.c | 3 |
6 files changed, 27 insertions, 0 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index e299c80c6a57..670d7f9ccf0e 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -1648,12 +1648,26 @@ static void ide_legacy_init_one(u8 *idx, hw_regs_t *hw, u8 port_no, | |||
| 1648 | irq = 15; | 1648 | irq = 15; |
| 1649 | } | 1649 | } |
| 1650 | 1650 | ||
| 1651 | if (!request_region(base, 8, d->name)) { | ||
| 1652 | printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n", | ||
| 1653 | d->name, base, base + 7); | ||
| 1654 | return; | ||
| 1655 | } | ||
| 1656 | |||
| 1657 | if (!request_region(ctl, 1, d->name)) { | ||
| 1658 | printk(KERN_ERR "%s: I/O resource 0x%lX not free.\n", | ||
| 1659 | d->name, ctl); | ||
| 1660 | release_region(base, 8); | ||
| 1661 | return; | ||
| 1662 | } | ||
| 1663 | |||
| 1651 | ide_std_init_ports(hw, base, ctl); | 1664 | ide_std_init_ports(hw, base, ctl); |
| 1652 | hw->irq = irq; | 1665 | hw->irq = irq; |
| 1653 | 1666 | ||
| 1654 | hwif = ide_find_port_slot(d); | 1667 | hwif = ide_find_port_slot(d); |
| 1655 | if (hwif) { | 1668 | if (hwif) { |
| 1656 | ide_init_port_hw(hwif, hw); | 1669 | ide_init_port_hw(hwif, hw); |
| 1670 | hwif->mmio = 1; | ||
| 1657 | if (config) | 1671 | if (config) |
| 1658 | hwif->config_data = config; | 1672 | hwif->config_data = config; |
| 1659 | idx[port_no] = hwif->index; | 1673 | idx[port_no] = hwif->index; |
diff --git a/drivers/ide/legacy/ali14xx.c b/drivers/ide/legacy/ali14xx.c index 7bfb28edf511..6efbf947c6db 100644 --- a/drivers/ide/legacy/ali14xx.c +++ b/drivers/ide/legacy/ali14xx.c | |||
| @@ -49,6 +49,8 @@ | |||
| 49 | 49 | ||
| 50 | #include <asm/io.h> | 50 | #include <asm/io.h> |
| 51 | 51 | ||
| 52 | #define DRV_NAME "ali14xx" | ||
| 53 | |||
| 52 | /* port addresses for auto-detection */ | 54 | /* port addresses for auto-detection */ |
| 53 | #define ALI_NUM_PORTS 4 | 55 | #define ALI_NUM_PORTS 4 |
| 54 | static const int ports[ALI_NUM_PORTS] __initdata = | 56 | static const int ports[ALI_NUM_PORTS] __initdata = |
| @@ -197,6 +199,7 @@ static const struct ide_port_ops ali14xx_port_ops = { | |||
| 197 | }; | 199 | }; |
| 198 | 200 | ||
| 199 | static const struct ide_port_info ali14xx_port_info = { | 201 | static const struct ide_port_info ali14xx_port_info = { |
| 202 | .name = DRV_NAME, | ||
| 200 | .chipset = ide_ali14xx, | 203 | .chipset = ide_ali14xx, |
| 201 | .port_ops = &ali14xx_port_ops, | 204 | .port_ops = &ali14xx_port_ops, |
| 202 | .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_NO_AUTOTUNE, | 205 | .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_NO_AUTOTUNE, |
diff --git a/drivers/ide/legacy/dtc2278.c b/drivers/ide/legacy/dtc2278.c index 7b5585c1c4c0..f7c4ad1c57c0 100644 --- a/drivers/ide/legacy/dtc2278.c +++ b/drivers/ide/legacy/dtc2278.c | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | 16 | ||
| 17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
| 18 | 18 | ||
| 19 | #define DRV_NAME "dtc2278" | ||
| 20 | |||
| 19 | /* | 21 | /* |
| 20 | * Changing this #undef to #define may solve start up problems in some systems. | 22 | * Changing this #undef to #define may solve start up problems in some systems. |
| 21 | */ | 23 | */ |
| @@ -91,6 +93,7 @@ static const struct ide_port_ops dtc2278_port_ops = { | |||
| 91 | }; | 93 | }; |
| 92 | 94 | ||
| 93 | static const struct ide_port_info dtc2278_port_info __initdata = { | 95 | static const struct ide_port_info dtc2278_port_info __initdata = { |
| 96 | .name = DRV_NAME, | ||
| 94 | .chipset = ide_dtc2278, | 97 | .chipset = ide_dtc2278, |
| 95 | .port_ops = &dtc2278_port_ops, | 98 | .port_ops = &dtc2278_port_ops, |
| 96 | .host_flags = IDE_HFLAG_SERIALIZE | | 99 | .host_flags = IDE_HFLAG_SERIALIZE | |
diff --git a/drivers/ide/legacy/ht6560b.c b/drivers/ide/legacy/ht6560b.c index 558964fc994e..971960ee7c03 100644 --- a/drivers/ide/legacy/ht6560b.c +++ b/drivers/ide/legacy/ht6560b.c | |||
| @@ -335,6 +335,7 @@ static const struct ide_port_ops ht6560b_port_ops = { | |||
| 335 | }; | 335 | }; |
| 336 | 336 | ||
| 337 | static const struct ide_port_info ht6560b_port_info __initdata = { | 337 | static const struct ide_port_info ht6560b_port_info __initdata = { |
| 338 | .name = DRV_NAME, | ||
| 338 | .chipset = ide_ht6560b, | 339 | .chipset = ide_ht6560b, |
| 339 | .port_ops = &ht6560b_port_ops, | 340 | .port_ops = &ht6560b_port_ops, |
| 340 | .host_flags = IDE_HFLAG_SERIALIZE | /* is this needed? */ | 341 | .host_flags = IDE_HFLAG_SERIALIZE | /* is this needed? */ |
diff --git a/drivers/ide/legacy/qd65xx.c b/drivers/ide/legacy/qd65xx.c index 336ef20407f4..15a99aae0cf9 100644 --- a/drivers/ide/legacy/qd65xx.c +++ b/drivers/ide/legacy/qd65xx.c | |||
| @@ -37,6 +37,8 @@ | |||
| 37 | #include <asm/system.h> | 37 | #include <asm/system.h> |
| 38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
| 39 | 39 | ||
| 40 | #define DRV_NAME "qd65xx" | ||
| 41 | |||
| 40 | #include "qd65xx.h" | 42 | #include "qd65xx.h" |
| 41 | 43 | ||
| 42 | /* | 44 | /* |
| @@ -317,6 +319,7 @@ static const struct ide_port_ops qd6580_port_ops = { | |||
| 317 | }; | 319 | }; |
| 318 | 320 | ||
| 319 | static const struct ide_port_info qd65xx_port_info __initdata = { | 321 | static const struct ide_port_info qd65xx_port_info __initdata = { |
| 322 | .name = DRV_NAME, | ||
| 320 | .chipset = ide_qd65xx, | 323 | .chipset = ide_qd65xx, |
| 321 | .host_flags = IDE_HFLAG_IO_32BIT | | 324 | .host_flags = IDE_HFLAG_IO_32BIT | |
| 322 | IDE_HFLAG_NO_DMA | | 325 | IDE_HFLAG_NO_DMA | |
diff --git a/drivers/ide/legacy/umc8672.c b/drivers/ide/legacy/umc8672.c index 95c643a2228a..17d515329fe0 100644 --- a/drivers/ide/legacy/umc8672.c +++ b/drivers/ide/legacy/umc8672.c | |||
| @@ -51,6 +51,8 @@ | |||
| 51 | 51 | ||
| 52 | #include <asm/io.h> | 52 | #include <asm/io.h> |
| 53 | 53 | ||
| 54 | #define DRV_NAME "umc8672" | ||
| 55 | |||
| 54 | /* | 56 | /* |
| 55 | * Default speeds. These can be changed with "auto-tune" and/or hdparm. | 57 | * Default speeds. These can be changed with "auto-tune" and/or hdparm. |
| 56 | */ | 58 | */ |
| @@ -125,6 +127,7 @@ static const struct ide_port_ops umc8672_port_ops = { | |||
| 125 | }; | 127 | }; |
| 126 | 128 | ||
| 127 | static const struct ide_port_info umc8672_port_info __initdata = { | 129 | static const struct ide_port_info umc8672_port_info __initdata = { |
| 130 | .name = DRV_NAME, | ||
| 128 | .chipset = ide_umc8672, | 131 | .chipset = ide_umc8672, |
| 129 | .port_ops = &umc8672_port_ops, | 132 | .port_ops = &umc8672_port_ops, |
| 130 | .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_NO_AUTOTUNE, | 133 | .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_NO_AUTOTUNE, |
