diff options
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide.c | 1 | ||||
-rw-r--r-- | drivers/ide/legacy/ide-cs.c | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 9fe19808d815..8af179b531c3 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -803,6 +803,7 @@ found: | |||
803 | hwif->irq = hw->irq; | 803 | hwif->irq = hw->irq; |
804 | hwif->noprobe = 0; | 804 | hwif->noprobe = 0; |
805 | hwif->chipset = hw->chipset; | 805 | hwif->chipset = hw->chipset; |
806 | hwif->gendev.parent = hw->dev; | ||
806 | 807 | ||
807 | if (!initializing) { | 808 | if (!initializing) { |
808 | probe_hwif_init_with_fixup(hwif, fixup); | 809 | probe_hwif_init_with_fixup(hwif, fixup); |
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c index 1dafffa7e513..ef79805218e4 100644 --- a/drivers/ide/legacy/ide-cs.c +++ b/drivers/ide/legacy/ide-cs.c | |||
@@ -182,13 +182,14 @@ static void ide_detach(dev_link_t *link) | |||
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_init_hwif_ports(&hw, io, ctl, NULL); |
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 | ||
@@ -327,12 +328,12 @@ static void ide_config(dev_link_t *link) | |||
327 | 328 | ||
328 | /* retry registration in case device is still spinning up */ | 329 | /* retry registration in case device is still spinning up */ |
329 | for (hd = -1, i = 0; i < 10; i++) { | 330 | for (hd = -1, i = 0; i < 10; i++) { |
330 | hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ); | 331 | hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, handle); |
331 | if (hd >= 0) break; | 332 | if (hd >= 0) break; |
332 | if (link->io.NumPorts1 == 0x20) { | 333 | if (link->io.NumPorts1 == 0x20) { |
333 | outb(0x02, ctl_base + 0x10); | 334 | outb(0x02, ctl_base + 0x10); |
334 | hd = idecs_register(io_base + 0x10, ctl_base + 0x10, | 335 | hd = idecs_register(io_base + 0x10, ctl_base + 0x10, |
335 | link->irq.AssignedIRQ); | 336 | link->irq.AssignedIRQ, handle); |
336 | if (hd >= 0) { | 337 | if (hd >= 0) { |
337 | io_base += 0x10; | 338 | io_base += 0x10; |
338 | ctl_base += 0x10; | 339 | ctl_base += 0x10; |