NT4/private/ntos/dd/sound/mpu401/isr.c
2020-09-30 17:12:29 +02:00

99 lines
1.7 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
isr.c
Abstract:
This module contains code for the interrupt service routine
for the MPU device driver.
Author:
Nigel Thompson (nigelt) 7-March-1991
Environment:
Kernel mode
Revision History:
Robin Speed (RobinSp) 29-Jan-1992
Add MIDI and Soundblaster 1 support.
David Rude (drude) 7-Mar-94 - converted from SB to MPU-401
--*/
#include "sound.h"
//
// Driver ISR
//
// When we get here, we acknowledge the interrupt from the
// MPU and simply let the defered processing routine take over
// to complete the task.
//
// NOTE: If we were to be doing MIDI input, we would read the
// data port to extract the received character and save it.
//
// That was NigelT's note - currently MIDI input reads the
// byte in the Dpc routine - hasn't failed yet - RCBS
//
//
// Internal routine
//
BOOLEAN
SoundISR(
IN PKINTERRUPT pInterrupt,
IN PVOID Context
)
/*++
Routine Description:
Interrupt service routine for the MPU-401 card.
Arguments:
pInterrupt - our interrupt
Contest - Pointer to our global device info
Return Value:
TRUE if we handled the interrupt
--*/
{
PGLOBAL_DEVICE_INFO pGDI;
PSOUND_HARDWARE pHw;
UCHAR DiscardedByte; // for bytes just discard
pGDI = (PGLOBAL_DEVICE_INFO)Context;
ASSERT(pGDI->Key == GDI_KEY);
pHw = &pGDI->Hw;
dprintf5(("<"));
// get all MIDI input chars available and save them for the DPC
// start the midi in dpc
IoRequestDpc(pGDI->DeviceObject[MidiInDevice],
NULL,
NULL);
dprintf5((">"));
return TRUE;
DBG_UNREFERENCED_PARAMETER(pInterrupt);
}