|
@@ -32,20 +32,22 @@
|
|
|
#include <sound/core.h>
|
|
|
#include <sound/sb.h>
|
|
|
|
|
|
-/*
|
|
|
-
|
|
|
- */
|
|
|
|
|
|
-irqreturn_t snd_sb8dsp_midi_interrupt(struct snd_sb * chip)
|
|
|
+irqreturn_t snd_sb8dsp_midi_interrupt(struct snd_sb *chip)
|
|
|
{
|
|
|
struct snd_rawmidi *rmidi;
|
|
|
int max = 64;
|
|
|
char byte;
|
|
|
|
|
|
- if (chip == NULL || (rmidi = chip->rmidi) == NULL) {
|
|
|
+ if (!chip)
|
|
|
+ return IRQ_NONE;
|
|
|
+
|
|
|
+ rmidi = chip->rmidi;
|
|
|
+ if (!rmidi) {
|
|
|
inb(SBP(chip, DATA_AVAIL)); /* ack interrupt */
|
|
|
return IRQ_NONE;
|
|
|
}
|
|
|
+
|
|
|
spin_lock(&chip->midi_input_lock);
|
|
|
while (max-- > 0) {
|
|
|
if (inb(SBP(chip, DATA_AVAIL)) & 0x80) {
|
|
@@ -59,10 +61,6 @@ irqreturn_t snd_sb8dsp_midi_interrupt(struct snd_sb * chip)
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
static int snd_sb8dsp_midi_input_open(struct snd_rawmidi_substream *substream)
|
|
|
{
|
|
|
unsigned long flags;
|
|
@@ -252,10 +250,6 @@ static void snd_sb8dsp_midi_output_trigger(struct snd_rawmidi_substream *substre
|
|
|
snd_sb8dsp_midi_output_write(substream);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
static struct snd_rawmidi_ops snd_sb8dsp_midi_output =
|
|
|
{
|
|
|
.open = snd_sb8dsp_midi_output_open,
|