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