Primary and secondary IDE controller IRQ's can now be level-triggered on PCI boards if so configured.
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
#include "hdd_image.h"
|
#include "hdd_image.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
#include "../pic.h"
|
#include "../pic.h"
|
||||||
|
#include "../pci.h"
|
||||||
#include "../timer.h"
|
#include "../timer.h"
|
||||||
#include "../cdrom.h"
|
#include "../cdrom.h"
|
||||||
#include "../scsi/scsi.h"
|
#include "../scsi/scsi.h"
|
||||||
@@ -171,7 +172,21 @@ void ide_irq_raise(IDE *ide)
|
|||||||
|
|
||||||
if (!(ide->fdisk&2))
|
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)
|
if (ide->board < 2)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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_card_routing(int card, int pci_int);
|
||||||
void pci_set_irq(int card, int pci_int);
|
void pci_set_irq(int card, int pci_int);
|
||||||
void pci_clear_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
|
#define PCI_REG_COMMAND 0x04
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user