Lines Matching +full:0 +full:x1806
139 #define STATE_UNKNOWN 0
147 } ports[0x10];
159 } ports[0x10];
170 0, 0, 2, 3, 3, 1, 2, 3, 3, 3, 3, 3, 2, 2, 3, 1
179 if (err < 0 && err != -ENODEV) in snd_usbmidi_submit_urb()
203 return 0; /* continue */ in snd_usbmidi_urb_error()
228 for (; length > 0; ++data, --length) in dump_urb()
243 if (urb->status == 0) { in snd_usbmidi_in_urb_complete()
249 if (err < 0) { in snd_usbmidi_in_urb_complete()
278 if (urb->status < 0) { in snd_usbmidi_out_urb_complete()
280 if (err < 0) { in snd_usbmidi_out_urb_complete()
310 urb->transfer_buffer_length = 0; in snd_usbmidi_do_output()
312 if (urb->transfer_buffer_length == 0) in snd_usbmidi_do_output()
318 if (snd_usbmidi_submit_urb(urb, GFP_ATOMIC) < 0) in snd_usbmidi_do_output()
323 urb_index = 0; in snd_usbmidi_do_output()
350 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in snd_usbmidi_error_timer()
353 in->error_resubmit = 0; in snd_usbmidi_error_timer()
354 for (j = 0; j < INPUT_URBS; ++j) { in snd_usbmidi_error_timer()
371 int err = 0; in send_bulk_static_data()
376 if (ep->urbs[0].urb) in send_bulk_static_data()
377 err = usb_bulk_msg(ep->umidi->dev, ep->urbs[0].urb->pipe, in send_bulk_static_data()
394 for (i = 0; i + 3 < buffer_length; i += 4) in snd_usbmidi_standard_input()
395 if (buffer[i] != 0) { in snd_usbmidi_standard_input()
397 int length = snd_usbmidi_cin_length[buffer[i] & 0x0f]; in snd_usbmidi_standard_input()
408 for (i = 0; i + 3 < buffer_length; i += 4) in snd_usbmidi_midiman_input()
409 if (buffer[i + 3] != 0) { in snd_usbmidi_midiman_input()
426 for (i = 0; i + 3 < buffer_length; i += 4) in snd_usbmidi_maudio_broken_running_status_input()
427 if (buffer[i] != 0) { in snd_usbmidi_maudio_broken_running_status_input()
429 u8 cin = buffer[i] & 0x0f; in snd_usbmidi_maudio_broken_running_status_input()
434 if (cin == 0xf && buffer[i + 1] >= 0xf8) in snd_usbmidi_maudio_broken_running_status_input()
436 else if (cin >= 0x8 && cin <= 0xe) in snd_usbmidi_maudio_broken_running_status_input()
439 else if (cin == 0x4 && in snd_usbmidi_maudio_broken_running_status_input()
440 port->running_status_length != 0 && in snd_usbmidi_maudio_broken_running_status_input()
441 buffer[i + 1] < 0x80) in snd_usbmidi_maudio_broken_running_status_input()
447 * (A channel msg sent as two or three CIN 0xF in snd_usbmidi_maudio_broken_running_status_input()
451 port->running_status_length = 0; in snd_usbmidi_maudio_broken_running_status_input()
466 for (i = 0; i + 3 < buffer_length; i += 4) { in ch345_broken_sysex_input()
467 if (buffer[i] == 0 && i > 0) in ch345_broken_sysex_input()
469 cin = buffer[i] & 0x0f; in ch345_broken_sysex_input()
472 (buffer[i + 1 + (cin == 0x6)] & 0x80) == 0) in ch345_broken_sysex_input()
473 cin = 0x4; in ch345_broken_sysex_input()
474 #if 0 in ch345_broken_sysex_input()
475 if (buffer[i + 1] == 0x90) { in ch345_broken_sysex_input()
483 snd_usbmidi_input_data(ep, 0, &buffer[i + 1], length); in ch345_broken_sysex_input()
484 ep->in_sysex = cin == 0x4; in ch345_broken_sysex_input()
492 * single USB packet preceded by a 0x0F byte, as are system realtime
503 * and active sensing using CIN 0x0f, which in the standard in snd_usbmidi_cme_input()
517 * needs to be at least 3 bytes in length (0xf0, id, 0xf7), in snd_usbmidi_cme_input()
526 * packets with size 0, which CME devices continuously send when in snd_usbmidi_cme_input()
530 * and active sensing i.e. 0x0f 0xf8 0x00 0x00 0x0f 0xfe 0x00 0x00, in snd_usbmidi_cme_input()
540 if ((buffer[0] & 0x0f) == 0x0f) { in snd_usbmidi_cme_input()
543 if (buffer[1] == 0xf0) { in snd_usbmidi_cme_input()
546 * two bytes (CN+CIN and SYSEX (0xf0). in snd_usbmidi_cme_input()
551 while (tmp_length > 1 && *tmp_buf != 0xf7) { in snd_usbmidi_cme_input()
557 } else if (buffer[1] == 0xf2) { in snd_usbmidi_cme_input()
561 snd_usbmidi_input_data(ep, buffer[0] >> 4, in snd_usbmidi_cme_input()
582 buf[0] = p0; in snd_usbmidi_output_standard_packet()
599 buf[0] = p1; in snd_usbmidi_output_midiman_packet()
602 buf[3] = (p0 & 0xf0) | snd_usbmidi_cin_length[p0 & 0x0f]; in snd_usbmidi_output_midiman_packet()
616 if (b >= 0xf8) { in snd_usbmidi_transmit_byte()
617 output_packet(urb, p0 | 0x0f, b, 0, 0); in snd_usbmidi_transmit_byte()
618 } else if (b >= 0xf0) { in snd_usbmidi_transmit_byte()
620 case 0xf0: in snd_usbmidi_transmit_byte()
621 port->data[0] = b; in snd_usbmidi_transmit_byte()
624 case 0xf1: in snd_usbmidi_transmit_byte()
625 case 0xf3: in snd_usbmidi_transmit_byte()
626 port->data[0] = b; in snd_usbmidi_transmit_byte()
629 case 0xf2: in snd_usbmidi_transmit_byte()
630 port->data[0] = b; in snd_usbmidi_transmit_byte()
633 case 0xf4: in snd_usbmidi_transmit_byte()
634 case 0xf5: in snd_usbmidi_transmit_byte()
637 case 0xf6: in snd_usbmidi_transmit_byte()
638 output_packet(urb, p0 | 0x05, 0xf6, 0, 0); in snd_usbmidi_transmit_byte()
641 case 0xf7: in snd_usbmidi_transmit_byte()
644 output_packet(urb, p0 | 0x05, 0xf7, 0, 0); in snd_usbmidi_transmit_byte()
647 output_packet(urb, p0 | 0x06, port->data[0], in snd_usbmidi_transmit_byte()
648 0xf7, 0); in snd_usbmidi_transmit_byte()
651 output_packet(urb, p0 | 0x07, port->data[0], in snd_usbmidi_transmit_byte()
652 port->data[1], 0xf7); in snd_usbmidi_transmit_byte()
658 } else if (b >= 0x80) { in snd_usbmidi_transmit_byte()
659 port->data[0] = b; in snd_usbmidi_transmit_byte()
660 if (b >= 0xc0 && b <= 0xdf) in snd_usbmidi_transmit_byte()
664 } else { /* b < 0x80 */ in snd_usbmidi_transmit_byte()
667 if (port->data[0] < 0xf0) { in snd_usbmidi_transmit_byte()
668 p0 |= port->data[0] >> 4; in snd_usbmidi_transmit_byte()
670 p0 |= 0x02; in snd_usbmidi_transmit_byte()
673 output_packet(urb, p0, port->data[0], b, 0); in snd_usbmidi_transmit_byte()
680 if (port->data[0] < 0xf0) { in snd_usbmidi_transmit_byte()
681 p0 |= port->data[0] >> 4; in snd_usbmidi_transmit_byte()
684 p0 |= 0x03; in snd_usbmidi_transmit_byte()
687 output_packet(urb, p0, port->data[0], port->data[1], b); in snd_usbmidi_transmit_byte()
690 port->data[0] = b; in snd_usbmidi_transmit_byte()
698 output_packet(urb, p0 | 0x04, port->data[0], in snd_usbmidi_transmit_byte()
712 for (p = 0; p < 0x10; ++p) { in snd_usbmidi_standard_output()
719 port->active = 0; in snd_usbmidi_standard_output()
763 * One or more chunks consisting of first byte of (0x10 | msg_len) and then a
768 * One or more chunks consisting of first byte of (0x20 | msg_len) and then a
776 unsigned int pos = 0; in snd_usbmidi_akai_input()
780 unsigned int msg_len = buffer[pos] & 0x0f; in snd_usbmidi_akai_input()
783 snd_usbmidi_input_data(ep, 0, &buffer[pos], msg_len); in snd_usbmidi_akai_input()
796 struct snd_rawmidi_substream *substream = ep->ports[0].substream; in snd_usbmidi_akai_output()
798 if (!ep->ports[0].active) in snd_usbmidi_akai_output()
809 ep->ports[0].active = 0; in snd_usbmidi_akai_output()
813 for (pos = 0; pos < count && tmp[pos] != 0xF0; pos++) in snd_usbmidi_akai_output()
816 if (pos > 0) { in snd_usbmidi_akai_output()
822 for (end = 1; end < count && tmp[end] < 0xF0; end++) in snd_usbmidi_akai_output()
826 if (end < count && tmp[end] == 0xF0) { in snd_usbmidi_akai_output()
832 if (end < count && tmp[end] == 0xF7) { in snd_usbmidi_akai_output()
835 msg[0] = 0x10 | count; in snd_usbmidi_akai_output()
844 ep->ports[0].active = 0; in snd_usbmidi_akai_output()
866 if (buffer_length < 2 || !buffer[0] || buffer_length < buffer[0] + 1) in snd_usbmidi_novation_input()
868 snd_usbmidi_input_data(ep, 0, &buffer[2], buffer[0] - 1); in snd_usbmidi_novation_input()
877 if (!ep->ports[0].active) in snd_usbmidi_novation_output()
880 count = snd_rawmidi_transmit(ep->ports[0].substream, in snd_usbmidi_novation_output()
884 ep->ports[0].active = 0; in snd_usbmidi_novation_output()
887 transfer_buffer[0] = 0; in snd_usbmidi_novation_output()
904 snd_usbmidi_input_data(ep, 0, buffer, buffer_length); in snd_usbmidi_raw_input()
912 if (!ep->ports[0].active) in snd_usbmidi_raw_output()
914 count = snd_rawmidi_transmit(ep->ports[0].substream, in snd_usbmidi_raw_output()
918 ep->ports[0].active = 0; in snd_usbmidi_raw_output()
937 snd_usbmidi_input_data(ep, 0, buffer + 2, buffer_length - 2); in snd_usbmidi_ftdi_input()
951 while (buffer_length && buffer[buffer_length - 1] == 0xFD) in snd_usbmidi_us122l_input()
954 snd_usbmidi_input_data(ep, 0, buffer, buffer_length); in snd_usbmidi_us122l_input()
962 if (!ep->ports[0].active) in snd_usbmidi_us122l_output()
973 count = snd_rawmidi_transmit(ep->ports[0].substream, in snd_usbmidi_us122l_output()
977 ep->ports[0].active = 0; in snd_usbmidi_us122l_output()
981 memset(urb->transfer_buffer + count, 0xFD, ep->max_transfer - count); in snd_usbmidi_us122l_output()
998 0xf0, in snd_usbmidi_emagic_init_out()
999 0x00, 0x20, 0x31, /* Emagic */ in snd_usbmidi_emagic_init_out()
1000 0x64, /* Unitor8 */ in snd_usbmidi_emagic_init_out()
1001 0x0b, /* version number request */ in snd_usbmidi_emagic_init_out()
1002 0x00, /* command version */ in snd_usbmidi_emagic_init_out()
1003 0x00, /* EEPROM, box 0 */ in snd_usbmidi_emagic_init_out()
1004 0xf7 in snd_usbmidi_emagic_init_out()
1015 0xf0, in snd_usbmidi_emagic_finish_out()
1016 0x00, 0x20, 0x31, /* Emagic */ in snd_usbmidi_emagic_finish_out()
1017 0x64, /* Unitor8 */ in snd_usbmidi_emagic_finish_out()
1018 0x10, /* patch switch command */ in snd_usbmidi_emagic_finish_out()
1019 0x00, /* command version */ in snd_usbmidi_emagic_finish_out()
1020 0x7f, /* to all boxes */ in snd_usbmidi_emagic_finish_out()
1021 0x40, /* last preset in EEPROM */ in snd_usbmidi_emagic_finish_out()
1022 0xf7 in snd_usbmidi_emagic_finish_out()
1033 for (i = 0; i < buffer_length; ++i) in snd_usbmidi_emagic_input()
1034 if (buffer[i] == 0xff) { in snd_usbmidi_emagic_input()
1043 while (buffer_length > 0) { in snd_usbmidi_emagic_input()
1045 for (i = 0; i < buffer_length; ++i) in snd_usbmidi_emagic_input()
1046 if (buffer[i] == 0xf5) in snd_usbmidi_emagic_input()
1052 if (buffer_length <= 0) in snd_usbmidi_emagic_input()
1054 /* assert(buffer[0] == 0xf5); */ in snd_usbmidi_emagic_input()
1060 if (buffer_length <= 0) in snd_usbmidi_emagic_input()
1062 if (buffer[0] < 0x80) { in snd_usbmidi_emagic_input()
1063 ep->current_port = (buffer[0] - 1) & 15; in snd_usbmidi_emagic_input()
1067 ep->seen_f5 = 0; in snd_usbmidi_emagic_input()
1079 for (i = 0; i < 0x10; ++i) { in snd_usbmidi_emagic_output()
1087 port->active = 0; in snd_usbmidi_emagic_output()
1095 buf[0] = 0xf5; in snd_usbmidi_emagic_output()
1104 if (length > 0) { in snd_usbmidi_emagic_output()
1111 if (buf_free < ep->max_transfer && buf_free > 0) { in snd_usbmidi_emagic_output()
1112 *buf = 0xff; in snd_usbmidi_emagic_output()
1154 return open ? -ENODEV : 0; in substream_open()
1159 if (!umidi->opened[0] && !umidi->opened[1]) { in substream_open()
1162 ctl->vd[0].access |= in substream_open()
1176 if (!umidi->opened[0] && !umidi->opened[1]) { in substream_open()
1179 ctl->vd[0].access &= in substream_open()
1188 return 0; in substream_open()
1197 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) in snd_usbmidi_output_open()
1199 for (j = 0; j < 0x10; ++j) in snd_usbmidi_output_open()
1209 return substream_open(substream, 0, 1); in snd_usbmidi_output_open()
1217 return substream_open(substream, 0, 0); in snd_usbmidi_output_close()
1266 port->active = 0; in snd_usbmidi_output_drain()
1277 return substream_open(substream, 1, 0); in snd_usbmidi_input_close()
1320 for (i = 0; i < INPUT_URBS; ++i) in snd_usbmidi_in_endpoint_delete()
1347 for (i = 0; i < INPUT_URBS; ++i) { in snd_usbmidi_in_endpoint_create()
1348 ep->urbs[i] = usb_alloc_urb(0, GFP_KERNEL); in snd_usbmidi_in_endpoint_create()
1359 for (i = 0; i < INPUT_URBS; ++i) { in snd_usbmidi_in_endpoint_create()
1377 if (err < 0) { in snd_usbmidi_in_endpoint_create()
1385 return 0; in snd_usbmidi_in_endpoint_create()
1400 for (i = 0; i < OUTPUT_URBS; ++i) in snd_usbmidi_out_endpoint_clear()
1433 for (i = 0; i < OUTPUT_URBS; ++i) { in snd_usbmidi_out_endpoint_create()
1434 ep->urbs[i].urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usbmidi_out_endpoint_create()
1453 case USB_ID(0x0a67, 0x5011): /* Medeli DD305 */ in snd_usbmidi_out_endpoint_create()
1454 case USB_ID(0x0a92, 0x1020): /* ESI M4U */ in snd_usbmidi_out_endpoint_create()
1455 case USB_ID(0x1430, 0x474b): /* RedOctane GH MIDI INTERFACE */ in snd_usbmidi_out_endpoint_create()
1456 case USB_ID(0x15ca, 0x0101): /* Textech USB Midi Cable */ in snd_usbmidi_out_endpoint_create()
1457 case USB_ID(0x15ca, 0x1806): /* Textech USB Midi Cable */ in snd_usbmidi_out_endpoint_create()
1458 case USB_ID(0x1a86, 0x752d): /* QinHeng CH345 "USB2.0-MIDI" */ in snd_usbmidi_out_endpoint_create()
1459 case USB_ID(0xfc08, 0x0101): /* Unknown vendor Cable */ in snd_usbmidi_out_endpoint_create()
1465 case USB_ID(0x0644, 0x800e): /* Tascam US-122L */ in snd_usbmidi_out_endpoint_create()
1466 case USB_ID(0x0644, 0x800f): /* Tascam US-144 */ in snd_usbmidi_out_endpoint_create()
1470 for (i = 0; i < OUTPUT_URBS; ++i) { in snd_usbmidi_out_endpoint_create()
1489 if (err < 0) { in snd_usbmidi_out_endpoint_create()
1501 for (i = 0; i < 0x10; ++i) in snd_usbmidi_out_endpoint_create()
1511 return 0; in snd_usbmidi_out_endpoint_create()
1525 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in snd_usbmidi_free()
1558 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in snd_usbmidi_disconnect()
1563 for (j = 0; j < OUTPUT_URBS; ++j) in snd_usbmidi_disconnect()
1567 ep->out->active_urbs = 0; in snd_usbmidi_disconnect()
1569 ep->out->drain_urbs = 0; in snd_usbmidi_disconnect()
1574 for (j = 0; j < INPUT_URBS; ++j) in snd_usbmidi_disconnect()
1624 PORT_INFO(vendor, product, num, name, 0, \
1629 PORT_INFO(vendor, product, num, name, 0, \
1658 GM_SYNTH_PORT(0x0499, 0x105c, 0, "%s Tone Generator", 128),
1659 CONTROL_PORT(0x0499, 0x105c, 1, "%s Remote Control"),
1660 EXTERNAL_PORT(0x0499, 0x105c, 2, "%s Thru"),
1661 CONTROL_PORT(0x0499, 0x105c, 3, "%s Editor"),
1663 CONTROL_PORT(0x0582, 0x0000, 2, "%s Control"),
1665 SOUNDCANVAS_PORT(0x0582, 0x0003, 0, "%s Part A", 128),
1666 SOUNDCANVAS_PORT(0x0582, 0x0003, 1, "%s Part B", 128),
1667 SOUNDCANVAS_PORT(0x0582, 0x0003, 2, "%s Part C", 128),
1668 SOUNDCANVAS_PORT(0x0582, 0x0003, 3, "%s Part D", 128),
1669 EXTERNAL_PORT(0x0582, 0x0003, 4, "%s MIDI 1"),
1670 EXTERNAL_PORT(0x0582, 0x0003, 5, "%s MIDI 2"),
1672 EXTERNAL_PORT(0x0582, 0x0004, 0, "%s MIDI"),
1673 CONTROL_PORT(0x0582, 0x0004, 1, "%s Control"),
1675 SOUNDCANVAS_PORT(0x0582, 0x0007, 0, "%s Part A", 64),
1676 SOUNDCANVAS_PORT(0x0582, 0x0007, 1, "%s Part B", 64),
1677 EXTERNAL_PORT(0x0582, 0x0007, 2, "%s MIDI"),
1679 SOUNDCANVAS_PORT(0x0582, 0x000b, 0, "%s Part A", 64),
1680 SOUNDCANVAS_PORT(0x0582, 0x000b, 1, "%s Part B", 64),
1681 EXTERNAL_PORT(0x0582, 0x000b, 2, "%s MIDI"),
1683 SOUNDCANVAS_PORT(0x0582, 0x000c, 0, "%s Part A", 64),
1684 SOUNDCANVAS_PORT(0x0582, 0x000c, 1, "%s Part B", 64),
1685 EXTERNAL_PORT(0x0582, 0x000c, 2, "%s MIDI"),
1687 CONTROL_PORT(0x0582, 0x0014, 8, "%s Control"),
1689 ROLAND_SYNTH_PORT(0x0582, 0x0016, 0, "%s Part A", 128),
1690 ROLAND_SYNTH_PORT(0x0582, 0x0016, 1, "%s Part B", 128),
1691 EXTERNAL_PORT(0x0582, 0x0016, 2, "%s MIDI 1"),
1692 EXTERNAL_PORT(0x0582, 0x0016, 3, "%s MIDI 2"),
1694 CONTROL_PORT(0x0582, 0x0023, 5, "%s Control"),
1696 ROLAND_SYNTH_PORT(0x0582, 0x0027, 0, "%s Part A", 64),
1697 ROLAND_SYNTH_PORT(0x0582, 0x0027, 1, "%s Part B", 64),
1698 EXTERNAL_PORT(0x0582, 0x0027, 2, "%s MIDI"),
1700 ROLAND_SYNTH_PORT(0x0582, 0x0029, 0, "%s Part A", 128),
1701 ROLAND_SYNTH_PORT(0x0582, 0x0029, 1, "%s Part B", 128),
1702 EXTERNAL_PORT(0x0582, 0x0029, 2, "%s MIDI 1"),
1703 EXTERNAL_PORT(0x0582, 0x0029, 3, "%s MIDI 2"),
1705 EXTERNAL_PORT(0x0582, 0x002b, 0, "%s MIDI"),
1706 CONTROL_PORT(0x0582, 0x002b, 1, "%s Control"),
1708 EXTERNAL_PORT(0x0582, 0x002f, 0, "%s MIDI"),
1709 EXTERNAL_PORT(0x0582, 0x002f, 1, "%s External MIDI"),
1710 EXTERNAL_PORT(0x0582, 0x002f, 2, "%s Sync"),
1712 EXTERNAL_PORT(0x0582, 0x0033, 0, "%s MIDI"),
1713 EXTERNAL_PORT(0x0582, 0x0033, 1, "%s 1"),
1714 EXTERNAL_PORT(0x0582, 0x0033, 2, "%s 2"),
1716 EXTERNAL_PORT(0x0582, 0x003b, 0, "%s MIDI"),
1717 CONTROL_PORT(0x0582, 0x003b, 1, "%s Control"),
1719 EXTERNAL_PORT(0x0582, 0x0044, 0, "%s MIDI"),
1720 CONTROL_PORT(0x0582, 0x0044, 1, "%s Control"),
1722 EXTERNAL_PORT(0x0582, 0x0048, 0, "%s MIDI"),
1723 EXTERNAL_PORT(0x0582, 0x0048, 1, "%s 1"),
1724 EXTERNAL_PORT(0x0582, 0x0048, 2, "%s 2"),
1726 EXTERNAL_PORT(0x0582, 0x004d, 0, "%s MIDI"),
1727 EXTERNAL_PORT(0x0582, 0x004d, 1, "%s 1"),
1728 EXTERNAL_PORT(0x0582, 0x004d, 2, "%s 2"),
1730 CONTROL_PORT(0x0582, 0x0089, 0, "%s Control"),
1732 CONTROL_PORT(0x0582, 0x009a, 3, "%s Control"),
1734 CONTROL_PORT(0x0582, 0x00b2, 0, "%s Control"),
1735 EXTERNAL_PORT(0x0582, 0x00b2, 1, "%s MIDI"),
1737 EXTERNAL_PORT(0x0582, 0x00eb, 0, "%s MIDI"),
1738 CONTROL_PORT(0x0582, 0x00eb, 1, "%s Control"),
1740 CONTROL_PORT(0x0582, 0x0102, 0, "%s Control"),
1741 EXTERNAL_PORT(0x0582, 0x0102, 1, "%s MIDI"),
1743 EXTERNAL_PORT(0x0582, 0x010f, 0, "%s MIDI"),
1744 CONTROL_PORT(0x0582, 0x010f, 1, "%s 1"),
1745 CONTROL_PORT(0x0582, 0x010f, 2, "%s 2"),
1747 ROLAND_SYNTH_PORT(0x0582, 0x0114, 0, "%s Synth", 128),
1748 EXTERNAL_PORT(0x0582, 0x0114, 1, "%s MIDI"),
1749 CONTROL_PORT(0x0582, 0x0114, 2, "%s Control"),
1751 EXTERNAL_PORT(0x0582, 0x0120, 0, "%s MIDI"),
1752 CONTROL_PORT(0x0582, 0x0120, 1, "%s Control"),
1753 EXTERNAL_PORT(0x0582, 0x0121, 0, "%s MIDI"),
1754 CONTROL_PORT(0x0582, 0x0121, 1, "%s Control"),
1756 CONTROL_PORT(0x0582, 0x0145, 0, "%s Control"),
1757 EXTERNAL_PORT(0x0582, 0x0145, 1, "%s MIDI"),
1759 CONTROL_PORT(0x0582, 0x0156, 0, "%s Keyboard"),
1760 EXTERNAL_PORT(0x0582, 0x0156, 1, "%s MIDI"),
1762 ROLAND_SYNTH_PORT(0x0582, 0x015b, 0, "%s Synth", 128),
1763 CONTROL_PORT(0x0582, 0x015b, 1, "%s Control"),
1765 CONTROL_PORT(0x0763, 0x1031, 8, "%s Control"),
1766 CONTROL_PORT(0x0763, 0x1033, 8, "%s Control"),
1768 EXTERNAL_PORT(0x07fd, 0x0001, 0, "%s MIDI A"),
1769 EXTERNAL_PORT(0x07fd, 0x0001, 1, "%s MIDI B"),
1771 EXTERNAL_PORT(0x086a, 0x0001, 8, "%s Broadcast"),
1772 EXTERNAL_PORT(0x086a, 0x0002, 8, "%s Broadcast"),
1773 EXTERNAL_PORT(0x086a, 0x0003, 4, "%s Broadcast"),
1775 CONTROL_PORT(0x09e8, 0x0062, 0, "%s Control"),
1776 PORT_INFO(0x09e8, 0x0062, 1, "%s MIDI", 0,
1780 EXTERNAL_PORT(0x133e, 0x0815, 0, "%s MIDI"),
1781 PORT_INFO(0x133e, 0x0815, 1, "%s Synth", 0,
1791 for (i = 0; i < ARRAY_SIZE(snd_usbmidi_port_info); ++i) { in find_port_info()
1845 if (!extra[0]) in find_usb_ijack()
1847 extralen -= extra[0]; in find_usb_ijack()
1848 extra += extra[0]; in find_usb_ijack()
1850 return 0; in find_usb_ijack()
1876 if (intf && jack_id >= 0) { in snd_usbmidi_init_substream()
1879 if (iJack != 0) { in snd_usbmidi_init_substream()
1903 int out_ports = 0, in_ports = 0; in snd_usbmidi_create_endpoints()
1905 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in snd_usbmidi_create_endpoints()
1910 if (err < 0) in snd_usbmidi_create_endpoints()
1917 if (err < 0) in snd_usbmidi_create_endpoints()
1921 for (j = 0; j < 0x10; ++j) { in snd_usbmidi_create_endpoints()
1942 return 0; in snd_usbmidi_create_endpoints()
1959 if (!extra[0]) in find_usb_ms_endpoint_descriptor()
1961 extralen -= extra[0]; in find_usb_ms_endpoint_descriptor()
1962 extra += extra[0]; in find_usb_ms_endpoint_descriptor()
1985 hostif = &intf->altsetting[0]; in snd_usbmidi_get_ms_info()
1993 ((uint8_t *)&ms_header->bcdMSC)[1], ((uint8_t *)&ms_header->bcdMSC)[0]); in snd_usbmidi_get_ms_info()
1998 epidx = 0; in snd_usbmidi_get_ms_info()
1999 for (i = 0; i < intfd->bNumEndpoints; ++i) { in snd_usbmidi_get_ms_info()
2009 if (ms_ep->bNumEmbMIDIJack > 0x10) in snd_usbmidi_get_ms_info()
2033 for (j = 0; j < ms_ep->bNumEmbMIDIJack; ++j) in snd_usbmidi_get_ms_info()
2054 for (j = 0; j < ms_ep->bNumEmbMIDIJack; ++j) in snd_usbmidi_get_ms_info()
2062 return 0; in snd_usbmidi_get_ms_info()
2076 value->value.enumerated.item[0] = kcontrol->private_value; in roland_load_get()
2077 return 0; in roland_load_get()
2086 if (value->value.enumerated.item[0] > 1) in roland_load_put()
2089 changed = value->value.enumerated.item[0] != kcontrol->private_value; in roland_load_put()
2091 kcontrol->private_value = value->value.enumerated.item[0]; in roland_load_put()
2125 !((get_endpoint(hostif, 0)->bmAttributes & in snd_usbmidi_switch_roland_altsetting()
2137 if (snd_ctl_add(umidi->card, umidi->roland_load_ctl) < 0) in snd_usbmidi_switch_roland_altsetting()
2152 int i, out_eps = 0, in_eps = 0; in snd_usbmidi_detect_endpoints()
2154 if (USB_ID_VENDOR(umidi->usb_id) == 0x0582) in snd_usbmidi_detect_endpoints()
2157 if (endpoint[0].out_ep || endpoint[0].in_ep) in snd_usbmidi_detect_endpoints()
2158 return 0; in snd_usbmidi_detect_endpoints()
2166 for (i = 0; i < intfd->bNumEndpoints; ++i) { in snd_usbmidi_detect_endpoints()
2186 return (out_eps || in_eps) ? 0 : -ENOENT; in snd_usbmidi_detect_endpoints()
2198 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in snd_usbmidi_detect_per_port_endpoints()
2200 endpoints[i].out_cables = 0x0001; in snd_usbmidi_detect_per_port_endpoints()
2202 endpoints[i].in_cables = 0x0001; in snd_usbmidi_detect_per_port_endpoints()
2231 cs_desc < hostif->extra + hostif->extralen && cs_desc[0] >= 2; in snd_usbmidi_detect_yamaha()
2232 cs_desc += cs_desc[0]) { in snd_usbmidi_detect_yamaha()
2267 cs_desc < hostif->extra + hostif->extralen && cs_desc[0] >= 2; in snd_usbmidi_detect_roland()
2268 cs_desc += cs_desc[0]) { in snd_usbmidi_detect_roland()
2269 if (cs_desc[0] >= 6 && in snd_usbmidi_detect_roland()
2271 cs_desc[2] == 0xf1 && in snd_usbmidi_detect_roland()
2272 cs_desc[3] == 0x02) { in snd_usbmidi_detect_roland()
2273 if (cs_desc[4] > 0x10 || cs_desc[5] > 0x10) in snd_usbmidi_detect_roland()
2278 } else if (cs_desc[0] >= 7 && in snd_usbmidi_detect_roland()
2316 if (intfd->bNumEndpoints < (endpoint->out_cables > 0x0001 ? 5 : 3)) { in snd_usbmidi_create_endpoints_midiman()
2321 epd = get_endpoint(hostif, 0); in snd_usbmidi_create_endpoints_midiman()
2323 dev_dbg(&umidi->dev->dev, "endpoint[0] isn't interrupt\n"); in snd_usbmidi_create_endpoints_midiman()
2331 if (endpoint->out_cables > 0x0001) { in snd_usbmidi_create_endpoints_midiman()
2343 ep_info.out_interval = 0; in snd_usbmidi_create_endpoints_midiman()
2344 ep_info.out_cables = endpoint->out_cables & 0x5555; in snd_usbmidi_create_endpoints_midiman()
2346 &umidi->endpoints[0]); in snd_usbmidi_create_endpoints_midiman()
2347 if (err < 0) in snd_usbmidi_create_endpoints_midiman()
2350 ep_info.in_ep = get_endpoint(hostif, 0)->bEndpointAddress & in snd_usbmidi_create_endpoints_midiman()
2352 ep_info.in_interval = get_endpoint(hostif, 0)->bInterval; in snd_usbmidi_create_endpoints_midiman()
2355 &umidi->endpoints[0]); in snd_usbmidi_create_endpoints_midiman()
2356 if (err < 0) in snd_usbmidi_create_endpoints_midiman()
2359 if (endpoint->out_cables > 0x0001) { in snd_usbmidi_create_endpoints_midiman()
2362 ep_info.out_cables = endpoint->out_cables & 0xaaaa; in snd_usbmidi_create_endpoints_midiman()
2365 if (err < 0) in snd_usbmidi_create_endpoints_midiman()
2369 for (cable = 0; cable < 0x10; ++cable) { in snd_usbmidi_create_endpoints_midiman()
2381 &umidi->endpoints[0].in->ports[cable].substream); in snd_usbmidi_create_endpoints_midiman()
2383 return 0; in snd_usbmidi_create_endpoints_midiman()
2399 if (err < 0) in snd_usbmidi_create_rawmidi()
2414 return 0; in snd_usbmidi_create_rawmidi()
2428 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in snd_usbmidi_input_stop()
2431 for (j = 0; j < INPUT_URBS; ++j) in snd_usbmidi_input_stop()
2434 umidi->input_running = 0; in snd_usbmidi_input_stop()
2446 for (i = 0; i < INPUT_URBS; ++i) { in snd_usbmidi_input_start_ep()
2468 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) in snd_usbmidi_input_start()
2534 timer_setup(&umidi->error_timer, snd_usbmidi_error_timer, 0); in __snd_usbmidi_create()
2537 memset(endpoints, 0, sizeof(endpoints)); in __snd_usbmidi_create()
2541 if (umidi->usb_id == USB_ID(0x0763, 0x0150)) /* M-Audio Uno */ in __snd_usbmidi_create()
2549 memcpy(&endpoints[0], quirk->data, in __snd_usbmidi_create()
2551 err = snd_usbmidi_detect_endpoints(umidi, &endpoints[0], 1); in __snd_usbmidi_create()
2554 err = snd_usbmidi_detect_yamaha(umidi, &endpoints[0]); in __snd_usbmidi_create()
2557 err = snd_usbmidi_detect_roland(umidi, &endpoints[0]); in __snd_usbmidi_create()
2561 memcpy(&endpoints[0], quirk->data, in __snd_usbmidi_create()
2563 err = 0; in __snd_usbmidi_create()
2573 * numbers as in interface 0. Since it is interface 1 that the in __snd_usbmidi_create()
2577 * interface 0, so we have to make sure that the USB core looks in __snd_usbmidi_create()
2578 * again at interface 0 by calling usb_set_interface() on it. in __snd_usbmidi_create()
2580 if (umidi->usb_id == USB_ID(0x07fd, 0x0001)) /* MOTU Fastlane */ in __snd_usbmidi_create()
2581 usb_set_interface(umidi->dev, 0, 0); in __snd_usbmidi_create()
2586 memcpy(&endpoints[0], quirk->data, in __snd_usbmidi_create()
2588 err = snd_usbmidi_detect_endpoints(umidi, &endpoints[0], 1); in __snd_usbmidi_create()
2598 endpoints[1].out_cables = 0; in __snd_usbmidi_create()
2604 err = usb_control_msg(umidi->dev, usb_sndctrlpipe(umidi->dev, 0), in __snd_usbmidi_create()
2605 3, 0x40, 0x60, 0, NULL, 0, 1000); in __snd_usbmidi_create()
2606 if (err < 0) in __snd_usbmidi_create()
2621 if (err < 0) in __snd_usbmidi_create()
2625 out_ports = 0; in __snd_usbmidi_create()
2626 in_ports = 0; in __snd_usbmidi_create()
2627 for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { in __snd_usbmidi_create()
2632 if (err < 0) in __snd_usbmidi_create()
2637 err = snd_usbmidi_create_endpoints_midiman(umidi, &endpoints[0]); in __snd_usbmidi_create()
2640 if (err < 0) in __snd_usbmidi_create()
2648 return 0; in __snd_usbmidi_create()