12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2c6d43ba8STorsten Schenk /* 3c6d43ba8STorsten Schenk * Linux driver for TerraTec DMX 6Fire USB 4c6d43ba8STorsten Schenk * 5c6d43ba8STorsten Schenk * Author: Torsten Schenk <torsten.schenk@zoho.com> 6c6d43ba8STorsten Schenk * Created: Jan 01, 2011 7c6d43ba8STorsten Schenk * Copyright: (C) Torsten Schenk 8c6d43ba8STorsten Schenk */ 9c6d43ba8STorsten Schenk 10c6d43ba8STorsten Schenk #ifndef USB6FIRE_MIDI_H 11c6d43ba8STorsten Schenk #define USB6FIRE_MIDI_H 12c6d43ba8STorsten Schenk 13c6d43ba8STorsten Schenk #include "common.h" 14c6d43ba8STorsten Schenk 15c6d43ba8STorsten Schenk struct midi_runtime { 16c6d43ba8STorsten Schenk struct sfire_chip *chip; 17c6d43ba8STorsten Schenk struct snd_rawmidi *instance; 18c6d43ba8STorsten Schenk 19c6d43ba8STorsten Schenk struct snd_rawmidi_substream *in; 20c6d43ba8STorsten Schenk char in_active; 21c6d43ba8STorsten Schenk 22c6d43ba8STorsten Schenk spinlock_t in_lock; 23c6d43ba8STorsten Schenk spinlock_t out_lock; 24c6d43ba8STorsten Schenk struct snd_rawmidi_substream *out; 25c6d43ba8STorsten Schenk struct urb out_urb; 26c6d43ba8STorsten Schenk u8 out_serial; /* serial number of out packet */ 274c2aee00STorsten Schenk u8 *out_buffer; 28c6d43ba8STorsten Schenk int buffer_offset; 29c6d43ba8STorsten Schenk 30c6d43ba8STorsten Schenk void (*in_received)(struct midi_runtime *rt, u8 *data, int length); 31c6d43ba8STorsten Schenk }; 32c6d43ba8STorsten Schenk 3387f9796aSBill Pemberton int usb6fire_midi_init(struct sfire_chip *chip); 34c6d43ba8STorsten Schenk void usb6fire_midi_abort(struct sfire_chip *chip); 35c6d43ba8STorsten Schenk void usb6fire_midi_destroy(struct sfire_chip *chip); 36c6d43ba8STorsten Schenk #endif /* USB6FIRE_MIDI_H */ 37c6d43ba8STorsten Schenk 38