aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/legacy/buddha.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:57 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:57 -0400
commit48c3c1072651922ed153bcf0a33ea82cf20df390 (patch)
tree92ad23e3869e70731eca99394c08a3bf06b8753e /drivers/ide/legacy/buddha.c
parent374e042c3e767ac2e5a40b78529220e0b3de793c (diff)
ide: add struct ide_host (take 3)
* Add struct ide_host which keeps pointers to host's ports. * Add ide_host_alloc[_all]() and ide_host_remove() helpers. * Pass 'struct ide_host *host' instead of 'u8 *idx' to ide_device_add[_all]() and rename it to ide_host_register[_all](). * Convert host drivers and core code to use struct ide_host. * Remove no longer needed ide_find_port(). * Make ide_find_port_slot() static. * Unexport ide_unregister(). v2: * Add missing 'struct ide_host *host' to macide.c. v3: * Fix build problem in pmac.c (s/ide_alloc_host/ide_host_alloc/) (Noticed by Stephen Rothwell). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy/buddha.c')
-rw-r--r--drivers/ide/legacy/buddha.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c
index c61bc6a1db36..2625667fab4c 100644
--- a/drivers/ide/legacy/buddha.c
+++ b/drivers/ide/legacy/buddha.c
@@ -150,18 +150,15 @@ static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base,
150 150
151static int __init buddha_init(void) 151static int __init buddha_init(void)
152{ 152{
153 ide_hwif_t *hwif;
154 int i;
155
156 struct zorro_dev *z = NULL; 153 struct zorro_dev *z = NULL;
154 struct ide_host *host;
157 u_long buddha_board = 0; 155 u_long buddha_board = 0;
158 BuddhaType type; 156 BuddhaType type;
159 int buddha_num_hwifs; 157 int buddha_num_hwifs, i;
160 158
161 while ((z = zorro_find_device(ZORRO_WILDCARD, z))) { 159 while ((z = zorro_find_device(ZORRO_WILDCARD, z))) {
162 unsigned long board; 160 unsigned long board;
163 hw_regs_t hw[MAX_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; 161 hw_regs_t hw[MAX_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL };
164 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
165 162
166 if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) { 163 if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) {
167 buddha_num_hwifs = BUDDHA_NUM_HWIFS; 164 buddha_num_hwifs = BUDDHA_NUM_HWIFS;
@@ -226,16 +223,12 @@ fail_base2:
226 buddha_setup_ports(&hw[i], base, ctl, irq_port, 223 buddha_setup_ports(&hw[i], base, ctl, irq_port,
227 ack_intr); 224 ack_intr);
228 225
229 hwif = ide_find_port(); 226 hws[i] = &hw[i];
230 if (hwif) {
231 hwif->chipset = ide_generic;
232
233 hws[i] = &hw[i];
234 idx[i] = hwif->index;
235 }
236 } 227 }
237 228
238 ide_device_add(idx, NULL, hws); 229 host = ide_host_alloc(NULL, hws);
230 if (host)
231 ide_host_register(host, NULL, hws);
239 } 232 }
240 233
241 return 0; 234 return 0;