#include <ntddk.h>
#include "sndblst.h"

#if 0
BOOLEAN CheckIRQ(PDEVICE_EXTENSION Parameters)
{
    static CONST ULONG ValidIRQs[] = VALID_IRQS;
    int i;

    return TRUE;    // for now...

    // Check for Compaq!
    // if ...

    for (i = 0; ValidIRQs[i] != 0xffff; i ++)
    {
        // Consult the card

//        OUTPORT(pHw, BOARD_CONFIG, bConfig);
//        if (INPORT(pHEW, BOARD_ID) & 0x40)
//            pHW->ValidInterrupts |= (1 << ThisIRQ);

//        return (BOOLEAN)((pHw->ValidInterrupts & (1 << Interrupt)) &&
//                        (! ((INPORT(pHw, BOARD_ID) & 0x80) &&
//                        (Interrupt == 10 || Interrupt == 11)));

    }

    // else
    // Compaq stuff?
    {
        UCHAR Expected;

        switch (Parameters->IRQ)
        {
            case 10 :   Expected = 0x10;
            case 11 :   Expected = 0x20;
            case 7 :    Expected = 0x30;
            default :   return FALSE;
        }

//        CompaqPIDR = READ_PORT_UCHAR( ... )
        // ...
    }
}



BOOLEAN ISR(
    IN PKINTERRUPT pInterrupt,
    IN PVOID Context)
{
    DPRINT("*** Processing ISR ***\n");

    // What do we do here then?

    return FALSE;
}



NTSTATUS EnableIRQ(PDEVICE_OBJECT DeviceObject)
{
    PDEVICE_EXTENSION Parameters = DeviceObject->DeviceExtension;
    ULONG Vector;
    KIRQL IRQ_Level;
    KAFFINITY Affinity;
    NTSTATUS Status = STATUS_SUCCESS;

    Vector = HalGetInterruptVector(Isa,     // FIX THIS
                                   0,       // FIX THIS
                                   Parameters->IRQ,
                                   Parameters->IRQ,
                                   &IRQ_Level,
                                   &Affinity);

//    Status = IoConnectInterrupt(Parameters->Interrupt,  // Object
//                                ISR,    // Function
//                                DeviceObject,   // Context
//                                (PKSPIN_LOCK) NULL,
//                                Vector,
//                                IRQ_Level,
//                                IRQ_Level,
                                // mode - Latched or Level sensitive?
                                // share - if irq can be shared
//                                Affinity,
//                                FALSE);

    return Status == STATUS_INVALID_PARAMETER ?
                     STATUS_DEVICE_CONFIGURATION_ERROR : Status;
}
#endif