Fixed the IDE BusMaster IRQ fix.
This commit is contained in:
@@ -370,13 +370,15 @@ void
|
|||||||
sff_bus_master_set_irq(int channel, void *priv)
|
sff_bus_master_set_irq(int channel, void *priv)
|
||||||
{
|
{
|
||||||
sff8038i_t *dev = (sff8038i_t *) priv;
|
sff8038i_t *dev = (sff8038i_t *) priv;
|
||||||
|
uint8_t irq = !!(channel & 0x40);
|
||||||
|
|
||||||
if (!(dev->status & 0x04) || (channel & 0x40)) {
|
if (!(dev->status & 0x04) || (channel & 0x40)) {
|
||||||
dev->status &= ~4;
|
dev->status &= ~4;
|
||||||
dev->status |= (channel >> 4);
|
dev->status |= (channel >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
channel &= 0x01;
|
channel &= 0x01;
|
||||||
if (dev->status & 0x04) {
|
if (irq) {
|
||||||
sff_log("SFF8038i: Channel %i IRQ raise\n", channel);
|
sff_log("SFF8038i: Channel %i IRQ raise\n", channel);
|
||||||
if (dev->irq_mode[channel] == 3)
|
if (dev->irq_mode[channel] == 3)
|
||||||
picintlevel(1 << dev->irq_line);
|
picintlevel(1 << dev->irq_line);
|
||||||
|
Reference in New Issue
Block a user