Fixed ESDI hung-up issue when ctrl+alt+del reset
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user