aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/legacy/buddha.c
diff options
context:
space:
mode:
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;