Primary and secondary IDE controller IRQ's can now be level-triggered on PCI boards if so configured.

This commit is contained in:
OBattler
2017-08-28 06:58:51 +02:00
parent 1564fe2715
commit 579f13402d
2 changed files with 17 additions and 1 deletions

View File

@@ -28,6 +28,7 @@
#include "hdd_image.h"
#include "../io.h"
#include "../pic.h"
#include "../pci.h"
#include "../timer.h"
#include "../cdrom.h"
#include "../scsi/scsi.h"
@@ -171,7 +172,21 @@ void ide_irq_raise(IDE *ide)
if (!(ide->fdisk&2))
{
picint(1 << ide_irq[ide->board]);
if (PCI && (ide->board < 2))
{
if (pci_irq_is_level(ide_irq[ide->board]))
{
picintlevel(1 << ide_irq[ide->board]);
}
else
{
picint(1 << ide_irq[ide->board]);
}
}
else
{
picint(1 << ide_irq[ide->board]);
}
if (ide->board < 2)
{

View File

@@ -8,6 +8,7 @@ void pci_set_irq_routing(int card, int irq);
void pci_set_card_routing(int card, int pci_int);
void pci_set_irq(int card, int pci_int);
void pci_clear_irq(int card, int pci_int);
int pci_irq_is_level(int irq);
#define PCI_REG_COMMAND 0x04