diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-01-13 00:29:57 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-01-13 00:29:57 +0300 |
commit | 61864d844c296933d40c02683252bbea5193b101 (patch) | |
tree | af106a2061e9b33dfbffdf761406cf5ff890ba2d /sound/usb/line6/midi.h | |
parent | d29b854fe9036a505af373ac485b2110ebae6ccd (diff) | |
download | linux-61864d844c296933d40c02683252bbea5193b101.tar.xz |
ALSA: move line6 usb driver into sound/usb
Promote line6 driver from staging to sound/usb/line6 directory, and
maintain through sound subsystem tree.
This commit just moves the code and adapts Makefile / Kconfig.
The further renames and misc cleanups will follow.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/line6/midi.h')
-rw-r--r-- | sound/usb/line6/midi.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sound/usb/line6/midi.h b/sound/usb/line6/midi.h new file mode 100644 index 000000000000..78f903fb4d41 --- /dev/null +++ b/sound/usb/line6/midi.h @@ -0,0 +1,72 @@ +/* + * Line6 Linux USB driver - 0.9.1beta + * + * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2. + * + */ + +#ifndef MIDI_H +#define MIDI_H + +#include <sound/rawmidi.h> + +#include "midibuf.h" + +#define MIDI_BUFFER_SIZE 1024 + +struct snd_line6_midi { + /** + Pointer back to the Line6 driver data structure. + */ + struct usb_line6 *line6; + + /** + MIDI substream for receiving (or NULL if not active). + */ + struct snd_rawmidi_substream *substream_receive; + + /** + MIDI substream for transmitting (or NULL if not active). + */ + struct snd_rawmidi_substream *substream_transmit; + + /** + Number of currently active MIDI send URBs. + */ + int num_active_send_urbs; + + /** + Spin lock to protect updates of send_urb. + */ + spinlock_t send_urb_lock; + + /** + Spin lock to protect MIDI buffer handling. + */ + spinlock_t midi_transmit_lock; + + /** + Wait queue for MIDI transmission. + */ + wait_queue_head_t send_wait; + + /** + Buffer for incoming MIDI stream. + */ + struct midi_buffer midibuf_in; + + /** + Buffer for outgoing MIDI stream. + */ + struct midi_buffer midibuf_out; +}; + +extern int line6_init_midi(struct usb_line6 *line6); +extern void line6_midi_receive(struct usb_line6 *line6, unsigned char *data, + int length); + +#endif |