aboutsummaryrefslogtreecommitdiff
path: root/hw/ide.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-12-28 18:27:10 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-12-28 18:27:10 +0000
commit6e6b73631301d41e8b18de4d35937bc78b0117f3 (patch)
tree486b45bbe8c6cceb18161b7bbec986324fc33492 /hw/ide.c
parentb4e237aae774a6dd3de2c3db9f87012d48ab6716 (diff)
downloadqemu-6e6b73631301d41e8b18de4d35937bc78b0117f3.zip
qemu-6e6b73631301d41e8b18de4d35937bc78b0117f3.tar.gz
qemu-6e6b73631301d41e8b18de4d35937bc78b0117f3.tar.bz2
Register reset handlers
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6136 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/ide.c')
-rw-r--r--hw/ide.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/hw/ide.c b/hw/ide.c
index 69ab773..813aca9 100644
--- a/hw/ide.c
+++ b/hw/ide.c
@@ -3084,6 +3084,15 @@ static void cmd646_set_irq(void *opaque, int channel, int level)
cmd646_update_irq(d);
}
+static void cmd646_reset(void *opaque)
+{
+ PCIIDEState *d = opaque;
+ unsigned int i;
+
+ for (i = 0; i < 2; i++)
+ ide_dma_cancel(&d->bmdma[i]);
+}
+
/* CMD646 PCI IDE controller */
void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
int secondary_ide_enabled)
@@ -3135,6 +3144,9 @@ void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
irq = qemu_allocate_irqs(cmd646_set_irq, d, 2);
ide_init2(&d->ide_if[0], hd_table[0], hd_table[1], irq[0]);
ide_init2(&d->ide_if[2], hd_table[2], hd_table[3], irq[1]);
+
+ qemu_register_reset(cmd646_reset, d);
+ cmd646_reset(d);
}
static void pci_ide_save(QEMUFile* f, void *opaque)
@@ -3405,6 +3417,14 @@ static CPUReadMemoryFunc *pmac_ide_read[] = {
pmac_ide_readl,
};
+static void pmac_ide_reset(void *opaque)
+{
+ IDEState *s = (IDEState *)opaque;
+
+ ide_reset(&s[0]);
+ ide_reset(&s[1]);
+}
+
/* hd_table must contain 4 block drivers */
/* PowerMac uses memory mapped registers, not I/O. Return the memory
I/O index to access the ide. */
@@ -3418,6 +3438,8 @@ int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq)
pmac_ide_memory = cpu_register_io_memory(0, pmac_ide_read,
pmac_ide_write, &ide_if[0]);
+ qemu_register_reset(pmac_ide_reset, &ide_if[0]);
+ pmac_ide_reset(&ide_if[0]);
return pmac_ide_memory;
}