diff options
| author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:57 -0400 |
|---|---|---|
| committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:57 -0400 |
| commit | 6f904d015262dfa43eb1cecc00b0998b4c3543f2 (patch) | |
| tree | d12a5818072d04525db6eb2d74668ba03bdead2d /drivers/ide/legacy | |
| parent | 48c3c1072651922ed153bcf0a33ea82cf20df390 (diff) | |
ide: add ide_host_add() helper
Add ide_host_add() helper which does ide_host_alloc()+ide_host_register(),
then convert ide_setup_pci_device[s](), ide_legacy_device_add() and some
host drivers to use it.
While at it:
* Fix ide_setup_pci_device[s](), ide_arm.c, gayle.c, ide-4drives.c,
macide.c, q40ide.c, cmd640.c and cs5520.c to return correct error value.
* -ENOENT -> -ENOMEM in rapide.c, ide-h8300.c, ide-generic.c, au1xxx-ide.c
and pmac.c
* -ENODEV -> -ENOMEM in palm_bk3710.c, ide_platform.c and delkin_cb.c
* -1 -> -ENOMEM in ide-pnp.c
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy')
| -rw-r--r-- | drivers/ide/legacy/buddha.c | 5 | ||||
| -rw-r--r-- | drivers/ide/legacy/gayle.c | 7 | ||||
| -rw-r--r-- | drivers/ide/legacy/ide-4drives.c | 7 | ||||
| -rw-r--r-- | drivers/ide/legacy/ide-cs.c | 8 | ||||
| -rw-r--r-- | drivers/ide/legacy/ide_platform.c | 8 | ||||
| -rw-r--r-- | drivers/ide/legacy/macide.c | 7 | ||||
| -rw-r--r-- | drivers/ide/legacy/q40ide.c | 7 |
7 files changed, 10 insertions, 39 deletions
diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c index 2625667fab4c..7c2afa97f417 100644 --- a/drivers/ide/legacy/buddha.c +++ b/drivers/ide/legacy/buddha.c | |||
| @@ -151,7 +151,6 @@ static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base, | |||
| 151 | static int __init buddha_init(void) | 151 | static int __init buddha_init(void) |
| 152 | { | 152 | { |
| 153 | struct zorro_dev *z = NULL; | 153 | struct zorro_dev *z = NULL; |
| 154 | struct ide_host *host; | ||
| 155 | u_long buddha_board = 0; | 154 | u_long buddha_board = 0; |
| 156 | BuddhaType type; | 155 | BuddhaType type; |
| 157 | int buddha_num_hwifs, i; | 156 | int buddha_num_hwifs, i; |
| @@ -226,9 +225,7 @@ fail_base2: | |||
| 226 | hws[i] = &hw[i]; | 225 | hws[i] = &hw[i]; |
| 227 | } | 226 | } |
| 228 | 227 | ||
| 229 | host = ide_host_alloc(NULL, hws); | 228 | ide_host_add(NULL, hws, NULL); |
| 230 | if (host) | ||
| 231 | ide_host_register(host, NULL, hws); | ||
| 232 | } | 229 | } |
| 233 | 230 | ||
| 234 | return 0; | 231 | return 0; |
diff --git a/drivers/ide/legacy/gayle.c b/drivers/ide/legacy/gayle.c index 13d22bded6b4..dd5c467d8dd0 100644 --- a/drivers/ide/legacy/gayle.c +++ b/drivers/ide/legacy/gayle.c | |||
| @@ -127,7 +127,6 @@ static int __init gayle_init(void) | |||
| 127 | unsigned long phys_base, res_start, res_n; | 127 | unsigned long phys_base, res_start, res_n; |
| 128 | unsigned long base, ctrlport, irqport; | 128 | unsigned long base, ctrlport, irqport; |
| 129 | ide_ack_intr_t *ack_intr; | 129 | ide_ack_intr_t *ack_intr; |
| 130 | struct ide_host *host; | ||
| 131 | int a4000, i; | 130 | int a4000, i; |
| 132 | hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; | 131 | hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; |
| 133 | 132 | ||
| @@ -180,11 +179,7 @@ found: | |||
| 180 | hws[i] = &hw[i]; | 179 | hws[i] = &hw[i]; |
| 181 | } | 180 | } |
| 182 | 181 | ||
| 183 | host = ide_host_alloc(NULL, hws); | 182 | return ide_host_add(NULL, hws, NULL); |
| 184 | if (host) | ||
| 185 | ide_host_register(host, NULL, hws); | ||
| 186 | |||
| 187 | return 0; | ||
| 188 | } | 183 | } |
| 189 | 184 | ||
| 190 | module_init(gayle_init); | 185 | module_init(gayle_init); |
diff --git a/drivers/ide/legacy/ide-4drives.c b/drivers/ide/legacy/ide-4drives.c index 5935153ef2ad..c76d55de6996 100644 --- a/drivers/ide/legacy/ide-4drives.c +++ b/drivers/ide/legacy/ide-4drives.c | |||
| @@ -28,7 +28,6 @@ static const struct ide_port_info ide_4drives_port_info = { | |||
| 28 | 28 | ||
| 29 | static int __init ide_4drives_init(void) | 29 | static int __init ide_4drives_init(void) |
| 30 | { | 30 | { |
| 31 | struct ide_host *host; | ||
| 32 | unsigned long base = 0x1f0, ctl = 0x3f6; | 31 | unsigned long base = 0x1f0, ctl = 0x3f6; |
| 33 | hw_regs_t hw, *hws[] = { &hw, &hw, NULL, NULL }; | 32 | hw_regs_t hw, *hws[] = { &hw, &hw, NULL, NULL }; |
| 34 | 33 | ||
| @@ -54,11 +53,7 @@ static int __init ide_4drives_init(void) | |||
| 54 | hw.irq = 14; | 53 | hw.irq = 14; |
| 55 | hw.chipset = ide_4drives; | 54 | hw.chipset = ide_4drives; |
| 56 | 55 | ||
| 57 | host = ide_host_alloc(&ide_4drives_port_info, hws); | 56 | return ide_host_add(&ide_4drives_port_info, hws, NULL); |
| 58 | if (host) | ||
| 59 | ide_host_register(host, &ide_4drives_port_info, hws); | ||
| 60 | |||
| 61 | return 0; | ||
| 62 | } | 57 | } |
| 63 | 58 | ||
| 64 | module_init(ide_4drives_init); | 59 | module_init(ide_4drives_init); |
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c index 1a4b9e6887fa..21bfac137844 100644 --- a/drivers/ide/legacy/ide-cs.c +++ b/drivers/ide/legacy/ide-cs.c | |||
| @@ -162,7 +162,7 @@ static struct ide_host *idecs_register(unsigned long io, unsigned long ctl, | |||
| 162 | { | 162 | { |
| 163 | struct ide_host *host; | 163 | struct ide_host *host; |
| 164 | ide_hwif_t *hwif; | 164 | ide_hwif_t *hwif; |
| 165 | int i; | 165 | int i, rc; |
| 166 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; | 166 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; |
| 167 | 167 | ||
| 168 | if (!request_region(io, 8, DRV_NAME)) { | 168 | if (!request_region(io, 8, DRV_NAME)) { |
| @@ -184,12 +184,10 @@ static struct ide_host *idecs_register(unsigned long io, unsigned long ctl, | |||
| 184 | hw.chipset = ide_pci; | 184 | hw.chipset = ide_pci; |
| 185 | hw.dev = &handle->dev; | 185 | hw.dev = &handle->dev; |
| 186 | 186 | ||
| 187 | host = ide_host_alloc(&idecs_port_info, hws); | 187 | rc = ide_host_add(&idecs_port_info, hws, &host); |
| 188 | if (host == NULL) | 188 | if (rc) |
| 189 | goto out_release; | 189 | goto out_release; |
| 190 | 190 | ||
| 191 | ide_host_register(host, &idecs_port_info, hws); | ||
| 192 | |||
| 193 | hwif = host->ports[0]; | 191 | hwif = host->ports[0]; |
| 194 | 192 | ||
| 195 | if (hwif->present) | 193 | if (hwif->present) |
diff --git a/drivers/ide/legacy/ide_platform.c b/drivers/ide/legacy/ide_platform.c index 58a942c6a131..051b4ab0f359 100644 --- a/drivers/ide/legacy/ide_platform.c +++ b/drivers/ide/legacy/ide_platform.c | |||
| @@ -99,13 +99,9 @@ static int __devinit plat_ide_probe(struct platform_device *pdev) | |||
| 99 | if (mmio) | 99 | if (mmio) |
| 100 | d.host_flags |= IDE_HFLAG_MMIO; | 100 | d.host_flags |= IDE_HFLAG_MMIO; |
| 101 | 101 | ||
| 102 | host = ide_host_alloc(&d, hws); | 102 | ret = ide_host_add(&d, hws, &host); |
| 103 | if (host == NULL) { | 103 | if (ret) |
| 104 | ret = -ENODEV; | ||
| 105 | goto out; | 104 | goto out; |
| 106 | } | ||
| 107 | |||
| 108 | ide_host_register(host, &d, hws); | ||
| 109 | 105 | ||
| 110 | platform_set_drvdata(pdev, host); | 106 | platform_set_drvdata(pdev, host); |
| 111 | 107 | ||
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c index b49cf8c2b91a..a0bb167980e7 100644 --- a/drivers/ide/legacy/macide.c +++ b/drivers/ide/legacy/macide.c | |||
| @@ -92,7 +92,6 @@ static const char *mac_ide_name[] = | |||
| 92 | static int __init macide_init(void) | 92 | static int __init macide_init(void) |
| 93 | { | 93 | { |
| 94 | ide_ack_intr_t *ack_intr; | 94 | ide_ack_intr_t *ack_intr; |
| 95 | struct ide_host *host; | ||
| 96 | unsigned long base; | 95 | unsigned long base; |
| 97 | int irq; | 96 | int irq; |
| 98 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; | 97 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; |
| @@ -125,11 +124,7 @@ static int __init macide_init(void) | |||
| 125 | 124 | ||
| 126 | macide_setup_ports(&hw, base, irq, ack_intr); | 125 | macide_setup_ports(&hw, base, irq, ack_intr); |
| 127 | 126 | ||
| 128 | host = ide_host_alloc(NULL, hws); | 127 | return ide_host_add(NULL, hws, NULL); |
| 129 | if (host) | ||
| 130 | ide_host_register(host, NULL, hws); | ||
| 131 | |||
| 132 | return 0; | ||
| 133 | } | 128 | } |
| 134 | 129 | ||
| 135 | module_init(macide_init); | 130 | module_init(macide_init); |
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index 8fb4438a6afd..4abd8fc78197 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c | |||
| @@ -131,7 +131,6 @@ static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={ | |||
| 131 | 131 | ||
| 132 | static int __init q40ide_init(void) | 132 | static int __init q40ide_init(void) |
| 133 | { | 133 | { |
| 134 | struct ide_host *host; | ||
| 135 | int i; | 134 | int i; |
| 136 | hw_regs_t hw[Q40IDE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; | 135 | hw_regs_t hw[Q40IDE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; |
| 137 | 136 | ||
| @@ -160,11 +159,7 @@ static int __init q40ide_init(void) | |||
| 160 | hws[i] = &hw[i]; | 159 | hws[i] = &hw[i]; |
| 161 | } | 160 | } |
| 162 | 161 | ||
| 163 | host = ide_host_alloc(&q40ide_port_info, hws); | 162 | return ide_host_add(&q40ide_port_info, hws, NULL); |
| 164 | if (host) | ||
| 165 | ide_host_register(host, &q40ide_port_info, hws); | ||
| 166 | |||
| 167 | return 0; | ||
| 168 | } | 163 | } |
| 169 | 164 | ||
| 170 | module_init(q40ide_init); | 165 | module_init(q40ide_init); |
