usb-midi.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
- /*
- usb-midi.h -- USB-MIDI driver
- Copyright (C) 2001
- NAGANO Daisuke <breeze.nagano@nifty.ne.jp>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
- /* ------------------------------------------------------------------------- */
- #ifndef _USB_MIDI_H_
- #define _USB_MIDI_H_
- #ifndef USB_SUBCLASS_MIDISTREAMING
- #define USB_SUBCLASS_MIDISTREAMING 3
- #endif
- #define USB_DT_CS_DEVICE 0x21
- #define USB_DT_CS_CONFIG 0x22
- #define USB_DT_CS_STRING 0x23
- #define USB_DT_CS_INTERFACE 0x24
- #define USB_DT_CS_ENDPOINT 0x25
- /* ------------------------------------------------------------------------- */
- /* Roland MIDI Devices */
- #define USB_VENDOR_ID_ROLAND 0x0582
- #define USBMIDI_ROLAND_UA100G 0x0000
- #define USBMIDI_ROLAND_MPU64 0x0002
- #define USBMIDI_ROLAND_SC8850 0x0003
- #define USBMIDI_ROLAND_UM2 0x0005
- #define USBMIDI_ROLAND_UM1 0x0009
- #define USBMIDI_ROLAND_PC300 0x0008
- /* YAMAHA MIDI Devices */
- #define USB_VENDOR_ID_YAMAHA 0x0499
- #define USBMIDI_YAMAHA_MU1000 0x1001
- /* Steinberg MIDI Devices */
- #define USB_VENDOR_ID_STEINBERG 0x0763
- #define USBMIDI_STEINBERG_USB2MIDI 0x1001
- /* ------------------------------------------------------------------------- */
- /* Supported devices */
- struct usb_midi_endpoint {
- int endpoint;
- int cableId; /* if bit-n == 1 then cableId-n is enabled (n: 0 - 15) */
- };
- struct usb_midi_device {
- char *deviceName;
- int idVendor;
- int idProduct;
- int interface;
- int altSetting; /* -1: auto detect */
- struct usb_midi_endpoint in[15];
- struct usb_midi_endpoint out[15];
- };
- static struct usb_midi_device usb_midi_devices[] = {
- { /* Roland UM-1 */
- "Roland UM-1",
- USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_UM1, 2, -1,
- { { 0x81, 1 }, {-1, -1} },
- { { 0x01, 1,}, {-1, -1} },
- },
- { /* Roland UM-2 */
- "Roland UM-2" ,
- USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_UM2, 2, -1,
- { { 0x81, 3 }, {-1, -1} },
- { { 0x01, 3,}, {-1, -1} },
- },
- /** Next entry courtesy research by Michael Minn <michael@michaelminn.com> **/
- { /* Roland UA-100 */
- "Roland UA-100",
- USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_UA100G, 2, -1,
- { { 0x82, 7 }, {-1, -1} }, /** cables 0,1 and 2 for SYSEX **/
- { { 0x02, 7 }, {-1, -1} },
- },
- /** Next entry courtesy research by Michael Minn <michael@michaelminn.com> **/
- { /* Roland SC8850 */
- "Roland SC8850",
- USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_SC8850, 2, -1,
- { { 0x81, 15 }, {-1, -1} }, /** cables 0,1,2, and 3 **/
- { { 0x01, 15 }, {-1, -1} },
- },
- { /* YAMAHA MU1000 */
- "YAMAHA MU1000",
- USB_VENDOR_ID_YAMAHA, USBMIDI_YAMAHA_MU1000, 0, -1,
- { { 0x81, 1 }, {-1, -1} },
- { { 0x01, 15 }, {-1, -1} },
- },
- { /* Roland PC-300 */
- "Roland PC-300",
- USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_PC300, 2, -1,
- { { 0x81, 1 }, {-1, -1} },
- { { 0x01, 1 }, {-1, -1} },
- }
- };
- #define VENDOR_SPECIFIC_USB_MIDI_DEVICES (sizeof(usb_midi_devices)/sizeof(struct usb_midi_device))
- /* for Hot-Plugging */
- static struct usb_device_id usb_midi_ids [] = {
- { match_flags: (USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS),
- bInterfaceClass: USB_CLASS_AUDIO, bInterfaceSubClass: USB_SUBCLASS_MIDISTREAMING},
- { USB_DEVICE( USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_UM1 ) },
- { USB_DEVICE( USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_UM2 ) },
- { USB_DEVICE( USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_UA100G ) },
- { USB_DEVICE( USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_PC300 ) },
- { USB_DEVICE( USB_VENDOR_ID_ROLAND, USBMIDI_ROLAND_SC8850 ) },
- { USB_DEVICE( USB_VENDOR_ID_YAMAHA, USBMIDI_YAMAHA_MU1000 ) },
- /* { USB_DEVICE( USB_VENDOR_ID_STEINBERG, USBMIDI_STEINBERG_USB2MIDI ) },*/
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE (usb, usb_midi_ids);
- /* ------------------------------------------------------------------------- */
- #endif /* _USB_MIDI_H_ */