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