|
Lines 182-194
static void ide_detach(dev_link_t *link)
Link Here
|
| 182 |
|
182 |
|
| 183 |
} /* ide_detach */ |
183 |
} /* ide_detach */ |
| 184 |
|
184 |
|
| 185 |
static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq) |
185 |
static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq, struct pcmcia_device *handle) |
| 186 |
{ |
186 |
{ |
| 187 |
hw_regs_t hw; |
187 |
hw_regs_t hw; |
| 188 |
memset(&hw, 0, sizeof(hw)); |
188 |
memset(&hw, 0, sizeof(hw)); |
| 189 |
ide_init_hwif_ports(&hw, io, ctl, NULL); |
189 |
ide_std_init_ports(&hw, io, ctl); |
| 190 |
hw.irq = irq; |
190 |
hw.irq = irq; |
| 191 |
hw.chipset = ide_pci; |
191 |
hw.chipset = ide_pci; |
|
|
192 |
hw.dev = &handle->dev; |
| 192 |
return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); |
193 |
return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); |
| 193 |
} |
194 |
} |
| 194 |
|
195 |
|
|
Lines 328-339
static void ide_config(dev_link_t *link)
Link Here
|
| 328 |
|
329 |
|
| 329 |
/* retry registration in case device is still spinning up */ |
330 |
/* retry registration in case device is still spinning up */ |
| 330 |
for (hd = -1, i = 0; i < 10; i++) { |
331 |
for (hd = -1, i = 0; i < 10; i++) { |
| 331 |
hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ); |
332 |
hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, handle); |
| 332 |
if (hd >= 0) break; |
333 |
if (hd >= 0) break; |
| 333 |
if (link->io.NumPorts1 == 0x20) { |
334 |
if (link->io.NumPorts1 == 0x20) { |
| 334 |
outb(0x02, ctl_base + 0x10); |
335 |
outb(0x02, ctl_base + 0x10); |
| 335 |
hd = idecs_register(io_base + 0x10, ctl_base + 0x10, |
336 |
hd = idecs_register(io_base + 0x10, ctl_base + 0x10, |
| 336 |
link->irq.AssignedIRQ); |
337 |
link->irq.AssignedIRQ, handle); |
| 337 |
if (hd >= 0) { |
338 |
if (hd >= 0) { |
| 338 |
io_base += 0x10; |
339 |
io_base += 0x10; |
| 339 |
ctl_base += 0x10; |
340 |
ctl_base += 0x10; |