int ControlPortBase;
int ControlPortSpan;
int Vector;
- int IrqL;
- int SynchronizeIrqL;
KINTERRUPT_MODE InterruptMode;
- KAFFINITY Affinity;
} IDE_CONTROLLER_PARAMETERS, *PIDE_CONTROLLER_PARAMETERS;
// NOTE: Do not increase max drives above 2
#define IDE_MAX_CONTROLLERS 2
IDE_CONTROLLER_PARAMETERS Controllers[IDE_MAX_CONTROLLERS] =
{
- {0x01f0, 8, 0x03f6, 1, 14, 14, 15, LevelSensitive, 0xffff},
- {0x0170, 8, 0x0376, 1, 15, 15, 15, LevelSensitive, 0xffff}
-/* {0x01E8, 8, 0x03ee, 1, 11, 11, 15, LevelSensitive, 0xffff},
- {0x0168, 8, 0x036e, 1, 10, 10, 15, LevelSensitive, 0xffff}*/
+ {0x01f0, 8, 0x03f6, 1, 14, Latched},
+ {0x0170, 8, 0x0376, 1, 15, Latched}
+/* {0x01E8, 8, 0x03ee, 1, 11, LevelSensitive},
+ {0x0168, 8, 0x036e, 1, 10, LevelSensitive}*/
};
static BOOLEAN IDEInitialized = FALSE;
NTSTATUS RC;
PCONTROLLER_OBJECT ControllerObject;
PIDE_CONTROLLER_EXTENSION ControllerExtension;
+ ULONG MappedIrq;
+ KIRQL Dirql;
+ KAFFINITY Affinity;
ControllerObject = IoCreateController(sizeof(IDE_CONTROLLER_EXTENSION));
if (ControllerObject == NULL)
return STATUS_NO_SUCH_DEVICE;
}
+ MappedIrq = HalGetInterruptVector(Isa,
+ 0,
+ ControllerParams->Vector,
+ ControllerParams->Vector,
+ &Dirql,
+ &Affinity);
+
// Fill out Controller extension data
ControllerExtension = (PIDE_CONTROLLER_EXTENSION)
ControllerObject->ControllerExtension;
ControllerExtension->Number = ControllerIdx;
ControllerExtension->CommandPortBase = ControllerParams->CommandPortBase;
ControllerExtension->ControlPortBase = ControllerParams->ControlPortBase;
- ControllerExtension->Vector = ControllerParams->Vector;
+ ControllerExtension->Vector = MappedIrq;
ControllerExtension->DMASupported = FALSE;
ControllerExtension->ControllerInterruptBug = FALSE;
ControllerExtension->OperationInProgress = FALSE;
ControllerExtension,
&ControllerExtension->SpinLock,
ControllerExtension->Vector,
- ControllerParams->IrqL,
- ControllerParams->SynchronizeIrqL,
+ Dirql,
+ Dirql,
ControllerParams->InterruptMode,
FALSE,
- ControllerParams->Affinity,
+ Affinity,
FALSE);
if (!NT_SUCCESS(RC))
{