1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 2 /* 3 * Line 6 Linux USB driver 3 * Line 6 Linux USB driver 4 * 4 * 5 * Copyright (C) 2004-2010 Markus Grabner (lin 5 * Copyright (C) 2004-2010 Markus Grabner (line6@grabner-graz.at) 6 */ 6 */ 7 7 8 #ifndef MIDI_H 8 #ifndef MIDI_H 9 #define MIDI_H 9 #define MIDI_H 10 10 11 #include <sound/rawmidi.h> 11 #include <sound/rawmidi.h> 12 12 13 #include "midibuf.h" 13 #include "midibuf.h" 14 14 15 #define MIDI_BUFFER_SIZE 1024 15 #define MIDI_BUFFER_SIZE 1024 16 16 17 struct snd_line6_midi { 17 struct snd_line6_midi { 18 /* Pointer back to the Line 6 driver d 18 /* Pointer back to the Line 6 driver data structure */ 19 struct usb_line6 *line6; 19 struct usb_line6 *line6; 20 20 21 /* MIDI substream for receiving (or NU 21 /* MIDI substream for receiving (or NULL if not active) */ 22 struct snd_rawmidi_substream *substrea 22 struct snd_rawmidi_substream *substream_receive; 23 23 24 /* MIDI substream for transmitting (or 24 /* MIDI substream for transmitting (or NULL if not active) */ 25 struct snd_rawmidi_substream *substrea 25 struct snd_rawmidi_substream *substream_transmit; 26 26 27 /* Number of currently active MIDI sen 27 /* Number of currently active MIDI send URBs */ 28 int num_active_send_urbs; 28 int num_active_send_urbs; 29 29 30 /* Spin lock to protect MIDI buffer ha 30 /* Spin lock to protect MIDI buffer handling */ 31 spinlock_t lock; 31 spinlock_t lock; 32 32 33 /* Wait queue for MIDI transmission */ 33 /* Wait queue for MIDI transmission */ 34 wait_queue_head_t send_wait; 34 wait_queue_head_t send_wait; 35 35 36 /* Buffer for incoming MIDI stream */ 36 /* Buffer for incoming MIDI stream */ 37 struct midi_buffer midibuf_in; 37 struct midi_buffer midibuf_in; 38 38 39 /* Buffer for outgoing MIDI stream */ 39 /* Buffer for outgoing MIDI stream */ 40 struct midi_buffer midibuf_out; 40 struct midi_buffer midibuf_out; 41 }; 41 }; 42 42 43 extern int line6_init_midi(struct usb_line6 *l 43 extern int line6_init_midi(struct usb_line6 *line6); 44 extern void line6_midi_receive(struct usb_line 44 extern void line6_midi_receive(struct usb_line6 *line6, unsigned char *data, 45 int length); 45 int length); 46 46 47 #endif 47 #endif 48 48
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.