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/pci | |
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/pci')
-rw-r--r-- | drivers/ide/pci/cmd640.c | 7 | ||||
-rw-r--r-- | drivers/ide/pci/cs5520.c | 7 | ||||
-rw-r--r-- | drivers/ide/pci/delkin_cb.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/scc_pata.c | 10 |
4 files changed, 9 insertions, 23 deletions
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c index 013697b8cef4..e6c62006ca1a 100644 --- a/drivers/ide/pci/cmd640.c +++ b/drivers/ide/pci/cmd640.c | |||
@@ -709,7 +709,6 @@ static int cmd640x_init_one(unsigned long base, unsigned long ctl) | |||
709 | */ | 709 | */ |
710 | static int __init cmd640x_init(void) | 710 | static int __init cmd640x_init(void) |
711 | { | 711 | { |
712 | struct ide_host *host; | ||
713 | int second_port_cmd640 = 0, rc; | 712 | int second_port_cmd640 = 0, rc; |
714 | const char *bus_type, *port2; | 713 | const char *bus_type, *port2; |
715 | u8 b, cfr; | 714 | u8 b, cfr; |
@@ -829,11 +828,7 @@ static int __init cmd640x_init(void) | |||
829 | cmd640_dump_regs(); | 828 | cmd640_dump_regs(); |
830 | #endif | 829 | #endif |
831 | 830 | ||
832 | host = ide_host_alloc(&cmd640_port_info, hws); | 831 | return ide_host_add(&cmd640_port_info, hws, NULL); |
833 | if (host) | ||
834 | ide_host_register(host, &cmd640_port_info, hws); | ||
835 | |||
836 | return 1; | ||
837 | } | 832 | } |
838 | 833 | ||
839 | module_param_named(probe_vlb, cmd640_vlb, bool, 0); | 834 | module_param_named(probe_vlb, cmd640_vlb, bool, 0); |
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c index b8ec06d22c61..b03d8ae947e6 100644 --- a/drivers/ide/pci/cs5520.c +++ b/drivers/ide/pci/cs5520.c | |||
@@ -114,7 +114,6 @@ static const struct ide_port_info cyrix_chipsets[] __devinitdata = { | |||
114 | 114 | ||
115 | static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id) | 115 | static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id) |
116 | { | 116 | { |
117 | struct ide_host *host; | ||
118 | const struct ide_port_info *d = &cyrix_chipsets[id->driver_data]; | 117 | const struct ide_port_info *d = &cyrix_chipsets[id->driver_data]; |
119 | hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL }; | 118 | hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL }; |
120 | 119 | ||
@@ -140,11 +139,7 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic | |||
140 | 139 | ||
141 | ide_pci_setup_ports(dev, d, 14, &hw[0], &hws[0]); | 140 | ide_pci_setup_ports(dev, d, 14, &hw[0], &hws[0]); |
142 | 141 | ||
143 | host = ide_host_alloc(d, hws); | 142 | return ide_host_add(d, hws, NULL); |
144 | if (host) | ||
145 | ide_host_register(host, d, hws); | ||
146 | |||
147 | return 0; | ||
148 | } | 143 | } |
149 | 144 | ||
150 | static const struct pci_device_id cs5520_pci_tbl[] = { | 145 | static const struct pci_device_id cs5520_pci_tbl[] = { |
diff --git a/drivers/ide/pci/delkin_cb.c b/drivers/ide/pci/delkin_cb.c index 5eb9d9325184..f84bfb4f600f 100644 --- a/drivers/ide/pci/delkin_cb.c +++ b/drivers/ide/pci/delkin_cb.c | |||
@@ -86,12 +86,10 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) | |||
86 | hw.dev = &dev->dev; | 86 | hw.dev = &dev->dev; |
87 | hw.chipset = ide_pci; /* this enables IRQ sharing */ | 87 | hw.chipset = ide_pci; /* this enables IRQ sharing */ |
88 | 88 | ||
89 | host = ide_host_alloc(&delkin_cb_port_info, hws); | 89 | rc = ide_host_add(&delkin_cb_port_info, hws, &host); |
90 | if (host == NULL) | 90 | if (rc) |
91 | goto out_disable; | 91 | goto out_disable; |
92 | 92 | ||
93 | ide_host_register(host, &delkin_cb_port_info, hws); | ||
94 | |||
95 | pci_set_drvdata(dev, host); | 93 | pci_set_drvdata(dev, host); |
96 | 94 | ||
97 | return 0; | 95 | return 0; |
@@ -99,7 +97,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) | |||
99 | out_disable: | 97 | out_disable: |
100 | pci_release_regions(dev); | 98 | pci_release_regions(dev); |
101 | pci_disable_device(dev); | 99 | pci_disable_device(dev); |
102 | return -ENODEV; | 100 | return rc; |
103 | } | 101 | } |
104 | 102 | ||
105 | static void | 103 | static void |
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index d5e2ba6bacd6..94a7ab864236 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
@@ -588,7 +588,7 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev, | |||
588 | struct scc_ports *ports = pci_get_drvdata(dev); | 588 | struct scc_ports *ports = pci_get_drvdata(dev); |
589 | struct ide_host *host; | 589 | struct ide_host *host; |
590 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; | 590 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; |
591 | int i; | 591 | int i, rc; |
592 | 592 | ||
593 | memset(&hw, 0, sizeof(hw)); | 593 | memset(&hw, 0, sizeof(hw)); |
594 | for (i = 0; i <= 8; i++) | 594 | for (i = 0; i <= 8; i++) |
@@ -597,11 +597,9 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev, | |||
597 | hw.dev = &dev->dev; | 597 | hw.dev = &dev->dev; |
598 | hw.chipset = ide_pci; | 598 | hw.chipset = ide_pci; |
599 | 599 | ||
600 | host = ide_host_alloc(d, hws); | 600 | rc = ide_host_add(d, hws, &host); |
601 | if (host == NULL) | 601 | if (rc) |
602 | return -ENOMEM; | 602 | return rc; |
603 | |||
604 | ide_host_register(host, d, hws); | ||
605 | 603 | ||
606 | ports->host = host; | 604 | ports->host = host; |
607 | 605 | ||