diff --git a/src/disk/hdc_esdi_mca.c b/src/disk/hdc_esdi_mca.c index 047089a1e..bdb037fee 100644 --- a/src/disk/hdc_esdi_mca.c +++ b/src/disk/hdc_esdi_mca.c @@ -1259,9 +1259,12 @@ esdi_mca_feedb(void *priv) static void esdi_reset(void* priv) { esdi_t* dev = (esdi_t*)priv; - dev->in_reset = 1; - esdi_mca_set_callback(dev, ESDI_TIME * 50); - dev->status = STATUS_BUSY; + pclog("esdi reset %d %x\n", dev->in_reset, dev->status); + if (!dev->in_reset) { + dev->in_reset = 1; + esdi_mca_set_callback(dev, ESDI_TIME * 50); + dev->status = STATUS_BUSY; + } } static void * @@ -1272,6 +1275,7 @@ esdi_init(UNUSED(const device_t *info)) uint8_t c; uint8_t i; + pclog("esdi init\n"); dev = malloc(sizeof(esdi_t)); if (dev == NULL) return (NULL); @@ -1334,9 +1338,9 @@ esdi_init(UNUSED(const device_t *info)) /* The slot number of this controller is fixed by the planar. IBM PS/55 5551-T assigns it #5. */ int slotno = device_get_config_int("in_esdi_slot"); if (slotno) - mca_add_to_slot(esdi_mca_read, esdi_integrated_mca_write, esdi_mca_feedb, NULL, dev, slotno - 1); + mca_add_to_slot(esdi_mca_read, esdi_integrated_mca_write, esdi_mca_feedb, esdi_reset, dev, slotno - 1); else - mca_add(esdi_mca_read, esdi_integrated_mca_write, esdi_mca_feedb, NULL, dev); + mca_add(esdi_mca_read, esdi_integrated_mca_write, esdi_mca_feedb, esdi_reset, dev); } else mca_add(esdi_mca_read, esdi_mca_write, esdi_mca_feedb, NULL, dev); @@ -1348,6 +1352,7 @@ esdi_init(UNUSED(const device_t *info)) /* Set the reply timer. */ timer_add(&dev->timer, esdi_callback, dev, 0); + pclog("esdi init finish\n"); return dev; }