ALSA: msnd: Remove midi code
authorDr. David Alan Gilbert <linux@treblig.org>
Sun, 11 May 2025 17:29:57 +0000 (18:29 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 12 May 2025 07:55:09 +0000 (09:55 +0200)
Nothing calls snd_msndmidi_new()
  thus nothing sets chip->msndmidi_mpu
    The call to snd_msndmidi_input_read is gated on that being set,
    so snd_msndmidi_input_read() won't be called either.

This is probably a missing call to snd_msndmidi_new(), but since
this is ancient code, it's probably best to remove it (especially
since I don't have the hardware to test it).

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
Link: https://patch.msgid.link/20250511172957.1001583-1-linux@treblig.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/isa/msnd/Makefile
sound/isa/msnd/msnd.h
sound/isa/msnd/msnd_midi.c [deleted file]
sound/isa/msnd/msnd_pinnacle.c

index 5f8d6b472722b9b0254208261fda24062342c989..d56412aae85770626d3b9354e99b44662a2b7f7d 100644 (file)
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 
-snd-msnd-lib-y := msnd.o msnd_midi.o msnd_pinnacle_mixer.o
+snd-msnd-lib-y := msnd.o msnd_pinnacle_mixer.o
 snd-msnd-pinnacle-y := msnd_pinnacle.o
 snd-msnd-classic-y := msnd_classic.o
 
index 533d71cee9ba5e3da9816569c3b344f60d157ebd..3d7810ed9186bf3b3c2cf31712a03c55b17494b9 100644 (file)
@@ -216,7 +216,6 @@ struct snd_msnd {
        int                     captureLimit;
        int                     capturePeriods;
        struct snd_card         *card;
-       void                    *msndmidi_mpu;
        struct snd_rawmidi      *rmidi;
 
        /* Hardware resources */
@@ -286,9 +285,6 @@ int snd_msnd_DAPQ(struct snd_msnd *chip, int start);
 int snd_msnd_DARQ(struct snd_msnd *chip, int start);
 int snd_msnd_pcm(struct snd_card *card, int device);
 
-int snd_msndmidi_new(struct snd_card *card, int device);
-void snd_msndmidi_input_read(void *mpu);
-
 void snd_msndmix_setup(struct snd_msnd *chip);
 int snd_msndmix_new(struct snd_card *card);
 int snd_msndmix_force_recsrc(struct snd_msnd *chip, int recsrc);
diff --git a/sound/isa/msnd/msnd_midi.c b/sound/isa/msnd/msnd_midi.c
deleted file mode 100644 (file)
index 3ffc875..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
- *  Copyright (c) 2009 by Krzysztof Helt
- *  Routines for control of MPU-401 in UART mode
- *
- *  MPU-401 supports UART mode which is not capable generate transmit
- *  interrupts thus output is done via polling. Also, if irq < 0, then
- *  input is done also via polling. Do not expect good performance.
- */
-
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/delay.h>
-#include <linux/ioport.h>
-#include <linux/errno.h>
-#include <linux/export.h>
-#include <sound/core.h>
-#include <sound/rawmidi.h>
-
-#include "msnd.h"
-
-#define MSNDMIDI_MODE_BIT_INPUT                0
-#define MSNDMIDI_MODE_BIT_OUTPUT               1
-#define MSNDMIDI_MODE_BIT_INPUT_TRIGGER        2
-#define MSNDMIDI_MODE_BIT_OUTPUT_TRIGGER       3
-
-struct snd_msndmidi {
-       struct snd_msnd *dev;
-
-       unsigned long mode;             /* MSNDMIDI_MODE_XXXX */
-
-       struct snd_rawmidi_substream *substream_input;
-
-       spinlock_t input_lock;
-};
-
-/*
- * input/output open/close - protected by open_mutex in rawmidi.c
- */
-static int snd_msndmidi_input_open(struct snd_rawmidi_substream *substream)
-{
-       struct snd_msndmidi *mpu;
-
-       mpu = substream->rmidi->private_data;
-
-       mpu->substream_input = substream;
-
-       snd_msnd_enable_irq(mpu->dev);
-
-       snd_msnd_send_dsp_cmd(mpu->dev, HDEX_MIDI_IN_START);
-       set_bit(MSNDMIDI_MODE_BIT_INPUT, &mpu->mode);
-       return 0;
-}
-
-static int snd_msndmidi_input_close(struct snd_rawmidi_substream *substream)
-{
-       struct snd_msndmidi *mpu;
-
-       mpu = substream->rmidi->private_data;
-       snd_msnd_send_dsp_cmd(mpu->dev, HDEX_MIDI_IN_STOP);
-       clear_bit(MSNDMIDI_MODE_BIT_INPUT, &mpu->mode);
-       mpu->substream_input = NULL;
-       snd_msnd_disable_irq(mpu->dev);
-       return 0;
-}
-
-static void snd_msndmidi_input_drop(struct snd_msndmidi *mpu)
-{
-       u16 tail;
-
-       tail = readw(mpu->dev->MIDQ + JQS_wTail);
-       writew(tail, mpu->dev->MIDQ + JQS_wHead);
-}
-
-/*
- * trigger input
- */
-static void snd_msndmidi_input_trigger(struct snd_rawmidi_substream *substream,
-                                       int up)
-{
-       unsigned long flags;
-       struct snd_msndmidi *mpu;
-
-       mpu = substream->rmidi->private_data;
-       spin_lock_irqsave(&mpu->input_lock, flags);
-       if (up) {
-               if (!test_and_set_bit(MSNDMIDI_MODE_BIT_INPUT_TRIGGER,
-                                     &mpu->mode))
-                       snd_msndmidi_input_drop(mpu);
-       } else {
-               clear_bit(MSNDMIDI_MODE_BIT_INPUT_TRIGGER, &mpu->mode);
-       }
-       spin_unlock_irqrestore(&mpu->input_lock, flags);
-       if (up)
-               snd_msndmidi_input_read(mpu);
-}
-
-void snd_msndmidi_input_read(void *mpuv)
-{
-       unsigned long flags;
-       struct snd_msndmidi *mpu = mpuv;
-       void __iomem *pwMIDQData = mpu->dev->mappedbase + MIDQ_DATA_BUFF;
-       u16 head, tail, size;
-
-       spin_lock_irqsave(&mpu->input_lock, flags);
-       head = readw(mpu->dev->MIDQ + JQS_wHead);
-       tail = readw(mpu->dev->MIDQ + JQS_wTail);
-       size = readw(mpu->dev->MIDQ + JQS_wSize);
-       if (head > size || tail > size)
-               goto out;
-       while (head != tail) {
-               unsigned char val = readw(pwMIDQData + 2 * head);
-
-               if (test_bit(MSNDMIDI_MODE_BIT_INPUT_TRIGGER, &mpu->mode))
-                       snd_rawmidi_receive(mpu->substream_input, &val, 1);
-               if (++head > size)
-                       head = 0;
-               writew(head, mpu->dev->MIDQ + JQS_wHead);
-       }
- out:
-       spin_unlock_irqrestore(&mpu->input_lock, flags);
-}
-EXPORT_SYMBOL(snd_msndmidi_input_read);
-
-static const struct snd_rawmidi_ops snd_msndmidi_input = {
-       .open =         snd_msndmidi_input_open,
-       .close =        snd_msndmidi_input_close,
-       .trigger =      snd_msndmidi_input_trigger,
-};
-
-static void snd_msndmidi_free(struct snd_rawmidi *rmidi)
-{
-       struct snd_msndmidi *mpu = rmidi->private_data;
-       kfree(mpu);
-}
-
-int snd_msndmidi_new(struct snd_card *card, int device)
-{
-       struct snd_msnd *chip = card->private_data;
-       struct snd_msndmidi *mpu;
-       struct snd_rawmidi *rmidi;
-       int err;
-
-       err = snd_rawmidi_new(card, "MSND-MIDI", device, 1, 1, &rmidi);
-       if (err < 0)
-               return err;
-       mpu = kzalloc(sizeof(*mpu), GFP_KERNEL);
-       if (mpu == NULL) {
-               snd_device_free(card, rmidi);
-               return -ENOMEM;
-       }
-       mpu->dev = chip;
-       chip->msndmidi_mpu = mpu;
-       rmidi->private_data = mpu;
-       rmidi->private_free = snd_msndmidi_free;
-       spin_lock_init(&mpu->input_lock);
-       strcpy(rmidi->name, "MSND MIDI");
-       snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT,
-                           &snd_msndmidi_input);
-       rmidi->info_flags |= SNDRV_RAWMIDI_INFO_INPUT;
-       return 0;
-}
index 635403301a155c68897ad2d72278cfb2d03b62d1..8caf431677e58600ccdd6253b89a4596fac68718 100644 (file)
@@ -142,11 +142,6 @@ static void snd_msnd_eval_dsp_msg(struct snd_msnd *chip, u16 wMessage)
                }
                break;
 
-       case HIMT_MIDI_IN_UCHAR:
-               if (chip->msndmidi_mpu)
-                       snd_msndmidi_input_read(chip->msndmidi_mpu);
-               break;
-
        default:
                dev_dbg(chip->card->dev, LOGNAME ": HIMT message %d 0x%02x\n",
                        HIBYTE(wMessage), HIBYTE(wMessage));