midi.h (2018B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __USBMIDI_H 3#define __USBMIDI_H 4 5/* maximum number of endpoints per interface */ 6#define MIDI_MAX_ENDPOINTS 2 7 8/* data for QUIRK_MIDI_FIXED_ENDPOINT */ 9struct snd_usb_midi_endpoint_info { 10 int8_t out_ep; /* ep number, 0 autodetect */ 11 uint8_t out_interval; /* interval for interrupt endpoints */ 12 int8_t in_ep; 13 uint8_t in_interval; 14 uint16_t out_cables; /* bitmask */ 15 uint16_t in_cables; /* bitmask */ 16 int16_t assoc_in_jacks[16]; 17 int16_t assoc_out_jacks[16]; 18}; 19 20/* for QUIRK_MIDI_YAMAHA, data is NULL */ 21 22/* for QUIRK_MIDI_MIDIMAN, data points to a snd_usb_midi_endpoint_info 23 * structure (out_cables and in_cables only) */ 24 25/* for QUIRK_COMPOSITE, data points to an array of snd_usb_audio_quirk 26 * structures, terminated with .ifnum = -1 */ 27 28/* for QUIRK_AUDIO_FIXED_ENDPOINT, data points to an audioformat structure */ 29 30/* for QUIRK_AUDIO/MIDI_STANDARD_INTERFACE, data is NULL */ 31 32/* for QUIRK_AUDIO_EDIROL_UA700_UA25/UA1000, data is NULL */ 33 34/* for QUIRK_IGNORE_INTERFACE, data is NULL */ 35 36/* for QUIRK_MIDI_NOVATION and _RAW, data is NULL */ 37 38/* for QUIRK_MIDI_EMAGIC, data points to a snd_usb_midi_endpoint_info 39 * structure (out_cables and in_cables only) */ 40 41/* for QUIRK_MIDI_CME, data is NULL */ 42 43/* for QUIRK_MIDI_AKAI, data is NULL */ 44 45int __snd_usbmidi_create(struct snd_card *card, 46 struct usb_interface *iface, 47 struct list_head *midi_list, 48 const struct snd_usb_audio_quirk *quirk, 49 unsigned int usb_id); 50 51static inline int snd_usbmidi_create(struct snd_card *card, 52 struct usb_interface *iface, 53 struct list_head *midi_list, 54 const struct snd_usb_audio_quirk *quirk) 55{ 56 return __snd_usbmidi_create(card, iface, midi_list, quirk, 0); 57} 58 59void snd_usbmidi_input_stop(struct list_head *p); 60void snd_usbmidi_input_start(struct list_head *p); 61void snd_usbmidi_disconnect(struct list_head *p); 62void snd_usbmidi_suspend(struct list_head *p); 63void snd_usbmidi_resume(struct list_head *p); 64 65#endif /* __USBMIDI_H */