Lines Matching refs:ep

103 	void (*output)(struct snd_usb_midi_out_endpoint *ep, struct urb *urb);
140 struct snd_usb_midi_out_endpoint *ep; member
150 struct snd_usb_midi_out_endpoint *ep; member
183 static void snd_usbmidi_do_output(struct snd_usb_midi_out_endpoint *ep);
226 static void snd_usbmidi_input_data(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_input_data() argument
229 struct usbmidi_in_port *port = &ep->ports[portidx]; in snd_usbmidi_input_data()
232 dev_dbg(&ep->umidi->dev->dev, "unexpected port %d!\n", portidx); in snd_usbmidi_input_data()
235 if (!test_bit(port->substream->number, &ep->umidi->input_triggered)) in snd_usbmidi_input_data()
257 struct snd_usb_midi_in_endpoint *ep = urb->context; in snd_usbmidi_in_urb_complete() local
261 ep->umidi->usb_protocol_ops->input(ep, urb->transfer_buffer, in snd_usbmidi_in_urb_complete()
267 ep->error_resubmit = 1; in snd_usbmidi_in_urb_complete()
268 mod_timer(&ep->umidi->error_timer, in snd_usbmidi_in_urb_complete()
275 urb->dev = ep->umidi->dev; in snd_usbmidi_in_urb_complete()
282 struct snd_usb_midi_out_endpoint *ep = context->ep; in snd_usbmidi_out_urb_complete() local
285 spin_lock(&ep->buffer_lock); in snd_usbmidi_out_urb_complete()
286 urb_index = context - ep->urbs; in snd_usbmidi_out_urb_complete()
287 ep->active_urbs &= ~(1 << urb_index); in snd_usbmidi_out_urb_complete()
288 if (unlikely(ep->drain_urbs)) { in snd_usbmidi_out_urb_complete()
289 ep->drain_urbs &= ~(1 << urb_index); in snd_usbmidi_out_urb_complete()
290 wake_up(&ep->drain_wait); in snd_usbmidi_out_urb_complete()
292 spin_unlock(&ep->buffer_lock); in snd_usbmidi_out_urb_complete()
297 mod_timer(&ep->umidi->error_timer, in snd_usbmidi_out_urb_complete()
302 snd_usbmidi_do_output(ep); in snd_usbmidi_out_urb_complete()
309 static void snd_usbmidi_do_output(struct snd_usb_midi_out_endpoint *ep) in snd_usbmidi_do_output() argument
315 spin_lock_irqsave(&ep->buffer_lock, flags); in snd_usbmidi_do_output()
316 if (ep->umidi->disconnected) { in snd_usbmidi_do_output()
317 spin_unlock_irqrestore(&ep->buffer_lock, flags); in snd_usbmidi_do_output()
321 urb_index = ep->next_urb; in snd_usbmidi_do_output()
323 if (!(ep->active_urbs & (1 << urb_index))) { in snd_usbmidi_do_output()
324 urb = ep->urbs[urb_index].urb; in snd_usbmidi_do_output()
326 ep->umidi->usb_protocol_ops->output(ep, urb); in snd_usbmidi_do_output()
332 urb->dev = ep->umidi->dev; in snd_usbmidi_do_output()
335 ep->active_urbs |= 1 << urb_index; in snd_usbmidi_do_output()
339 if (urb_index == ep->next_urb) in snd_usbmidi_do_output()
342 ep->next_urb = urb_index; in snd_usbmidi_do_output()
343 spin_unlock_irqrestore(&ep->buffer_lock, flags); in snd_usbmidi_do_output()
348 struct snd_usb_midi_out_endpoint *ep = in snd_usbmidi_out_tasklet() local
351 snd_usbmidi_do_output(ep); in snd_usbmidi_out_tasklet()
383 static int send_bulk_static_data(struct snd_usb_midi_out_endpoint *ep, in send_bulk_static_data() argument
391 if (ep->urbs[0].urb) in send_bulk_static_data()
392 err = usb_bulk_msg(ep->umidi->dev, ep->urbs[0].urb->pipe, in send_bulk_static_data()
404 static void snd_usbmidi_standard_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_standard_input() argument
413 snd_usbmidi_input_data(ep, cable, &buffer[i + 1], in snd_usbmidi_standard_input()
418 static void snd_usbmidi_midiman_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_midiman_input() argument
427 snd_usbmidi_input_data(ep, port, &buffer[i], length); in snd_usbmidi_midiman_input()
436 struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_maudio_broken_running_status_input() argument
445 struct usbmidi_in_port *port = &ep->ports[cable]; in snd_usbmidi_maudio_broken_running_status_input()
467 snd_usbmidi_input_data(ep, cable, &buffer[i + 1], in snd_usbmidi_maudio_broken_running_status_input()
476 static void ch345_broken_sysex_input(struct snd_usb_midi_in_endpoint *ep, in ch345_broken_sysex_input() argument
485 if (ep->in_sysex && in ch345_broken_sysex_input()
486 cin == ep->last_cin && in ch345_broken_sysex_input()
498 snd_usbmidi_input_data(ep, 0, &buffer[i + 1], length); in ch345_broken_sysex_input()
499 ep->in_sysex = cin == 0x4; in ch345_broken_sysex_input()
500 if (!ep->in_sysex) in ch345_broken_sysex_input()
501 ep->last_cin = cin; in ch345_broken_sysex_input()
509 static void snd_usbmidi_cme_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_cme_input() argument
513 snd_usbmidi_standard_input(ep, buffer, buffer_length); in snd_usbmidi_cme_input()
515 snd_usbmidi_input_data(ep, buffer[0] >> 4, in snd_usbmidi_cme_input()
561 port->ep->umidi->usb_protocol_ops->output_packet; in snd_usbmidi_transmit_byte()
653 static void snd_usbmidi_standard_output(struct snd_usb_midi_out_endpoint *ep, in snd_usbmidi_standard_output() argument
660 struct usbmidi_out_port *port = &ep->ports[p]; in snd_usbmidi_standard_output()
663 while (urb->transfer_buffer_length + 3 < ep->max_transfer) { in snd_usbmidi_standard_output()
719 static void snd_usbmidi_akai_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_akai_input() argument
729 snd_usbmidi_input_data(ep, 0, &buffer[pos], msg_len); in snd_usbmidi_akai_input()
736 static void snd_usbmidi_akai_output(struct snd_usb_midi_out_endpoint *ep, in snd_usbmidi_akai_output() argument
742 struct snd_rawmidi_substream *substream = ep->ports[0].substream; in snd_usbmidi_akai_output()
744 if (!ep->ports[0].active) in snd_usbmidi_akai_output()
748 buf_end = ep->max_transfer - MAX_AKAI_SYSEX_LEN - 1; in snd_usbmidi_akai_output()
755 ep->ports[0].active = 0; in snd_usbmidi_akai_output()
790 ep->ports[0].active = 0; in snd_usbmidi_akai_output()
809 static void snd_usbmidi_novation_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_novation_input() argument
814 snd_usbmidi_input_data(ep, 0, &buffer[2], buffer[0] - 1); in snd_usbmidi_novation_input()
817 static void snd_usbmidi_novation_output(struct snd_usb_midi_out_endpoint *ep, in snd_usbmidi_novation_output() argument
823 if (!ep->ports[0].active) in snd_usbmidi_novation_output()
826 count = snd_rawmidi_transmit(ep->ports[0].substream, in snd_usbmidi_novation_output()
828 ep->max_transfer - 2); in snd_usbmidi_novation_output()
830 ep->ports[0].active = 0; in snd_usbmidi_novation_output()
847 static void snd_usbmidi_raw_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_raw_input() argument
850 snd_usbmidi_input_data(ep, 0, buffer, buffer_length); in snd_usbmidi_raw_input()
853 static void snd_usbmidi_raw_output(struct snd_usb_midi_out_endpoint *ep, in snd_usbmidi_raw_output() argument
858 if (!ep->ports[0].active) in snd_usbmidi_raw_output()
860 count = snd_rawmidi_transmit(ep->ports[0].substream, in snd_usbmidi_raw_output()
862 ep->max_transfer); in snd_usbmidi_raw_output()
864 ep->ports[0].active = 0; in snd_usbmidi_raw_output()
879 static void snd_usbmidi_ftdi_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_ftdi_input() argument
883 snd_usbmidi_input_data(ep, 0, buffer + 2, buffer_length - 2); in snd_usbmidi_ftdi_input()
891 static void snd_usbmidi_us122l_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_us122l_input() argument
900 snd_usbmidi_input_data(ep, 0, buffer, buffer_length); in snd_usbmidi_us122l_input()
903 static void snd_usbmidi_us122l_output(struct snd_usb_midi_out_endpoint *ep, in snd_usbmidi_us122l_output() argument
908 if (!ep->ports[0].active) in snd_usbmidi_us122l_output()
910 switch (snd_usb_get_speed(ep->umidi->dev)) { in snd_usbmidi_us122l_output()
918 count = snd_rawmidi_transmit(ep->ports[0].substream, in snd_usbmidi_us122l_output()
922 ep->ports[0].active = 0; in snd_usbmidi_us122l_output()
926 memset(urb->transfer_buffer + count, 0xFD, ep->max_transfer - count); in snd_usbmidi_us122l_output()
927 urb->transfer_buffer_length = ep->max_transfer; in snd_usbmidi_us122l_output()
939 static void snd_usbmidi_emagic_init_out(struct snd_usb_midi_out_endpoint *ep) in snd_usbmidi_emagic_init_out() argument
951 send_bulk_static_data(ep, init_data, sizeof(init_data)); in snd_usbmidi_emagic_init_out()
953 send_bulk_static_data(ep, init_data, sizeof(init_data)); in snd_usbmidi_emagic_init_out()
956 static void snd_usbmidi_emagic_finish_out(struct snd_usb_midi_out_endpoint *ep) in snd_usbmidi_emagic_finish_out() argument
969 send_bulk_static_data(ep, finish_data, sizeof(finish_data)); in snd_usbmidi_emagic_finish_out()
972 static void snd_usbmidi_emagic_input(struct snd_usb_midi_in_endpoint *ep, in snd_usbmidi_emagic_input() argument
985 if (ep->seen_f5) in snd_usbmidi_emagic_input()
993 snd_usbmidi_input_data(ep, ep->current_port, buffer, i); in snd_usbmidi_emagic_input()
1000 ep->seen_f5 = 1; in snd_usbmidi_emagic_input()
1008 ep->current_port = (buffer[0] - 1) & 15; in snd_usbmidi_emagic_input()
1012 ep->seen_f5 = 0; in snd_usbmidi_emagic_input()
1016 static void snd_usbmidi_emagic_output(struct snd_usb_midi_out_endpoint *ep, in snd_usbmidi_emagic_output() argument
1019 int port0 = ep->current_port; in snd_usbmidi_emagic_output()
1021 int buf_free = ep->max_transfer; in snd_usbmidi_emagic_output()
1027 struct usbmidi_out_port *port = &ep->ports[portnum]; in snd_usbmidi_emagic_output()
1036 if (portnum != ep->current_port) { in snd_usbmidi_emagic_output()
1039 ep->current_port = portnum; in snd_usbmidi_emagic_output()
1056 if (buf_free < ep->max_transfer && buf_free > 0) { in snd_usbmidi_emagic_output()
1060 urb->transfer_buffer_length = ep->max_transfer - buf_free; in snd_usbmidi_emagic_output()
1172 if (port->ep->umidi->disconnected) { in snd_usbmidi_output_trigger()
1179 tasklet_schedule(&port->ep->tasklet); in snd_usbmidi_output_trigger()
1186 struct snd_usb_midi_out_endpoint *ep = port->ep; in snd_usbmidi_output_drain() local
1191 if (ep->umidi->disconnected) in snd_usbmidi_output_drain()
1197 spin_lock_irq(&ep->buffer_lock); in snd_usbmidi_output_drain()
1198 drain_urbs = ep->active_urbs; in snd_usbmidi_output_drain()
1200 ep->drain_urbs |= drain_urbs; in snd_usbmidi_output_drain()
1202 prepare_to_wait(&ep->drain_wait, &wait, in snd_usbmidi_output_drain()
1204 spin_unlock_irq(&ep->buffer_lock); in snd_usbmidi_output_drain()
1206 spin_lock_irq(&ep->buffer_lock); in snd_usbmidi_output_drain()
1207 drain_urbs &= ep->drain_urbs; in snd_usbmidi_output_drain()
1209 finish_wait(&ep->drain_wait, &wait); in snd_usbmidi_output_drain()
1211 spin_unlock_irq(&ep->buffer_lock); in snd_usbmidi_output_drain()
1260 static void snd_usbmidi_in_endpoint_delete(struct snd_usb_midi_in_endpoint *ep) in snd_usbmidi_in_endpoint_delete() argument
1265 if (ep->urbs[i]) in snd_usbmidi_in_endpoint_delete()
1266 free_urb_and_buffer(ep->umidi, ep->urbs[i], in snd_usbmidi_in_endpoint_delete()
1267 ep->urbs[i]->transfer_buffer_length); in snd_usbmidi_in_endpoint_delete()
1268 kfree(ep); in snd_usbmidi_in_endpoint_delete()
1278 struct snd_usb_midi_in_endpoint *ep; in snd_usbmidi_in_endpoint_create() local
1285 ep = kzalloc(sizeof(*ep), GFP_KERNEL); in snd_usbmidi_in_endpoint_create()
1286 if (!ep) in snd_usbmidi_in_endpoint_create()
1288 ep->umidi = umidi; in snd_usbmidi_in_endpoint_create()
1291 ep->urbs[i] = usb_alloc_urb(0, GFP_KERNEL); in snd_usbmidi_in_endpoint_create()
1292 if (!ep->urbs[i]) { in snd_usbmidi_in_endpoint_create()
1293 snd_usbmidi_in_endpoint_delete(ep); in snd_usbmidi_in_endpoint_create()
1304 &ep->urbs[i]->transfer_dma); in snd_usbmidi_in_endpoint_create()
1306 snd_usbmidi_in_endpoint_delete(ep); in snd_usbmidi_in_endpoint_create()
1310 usb_fill_int_urb(ep->urbs[i], umidi->dev, in snd_usbmidi_in_endpoint_create()
1313 ep, ep_info->in_interval); in snd_usbmidi_in_endpoint_create()
1315 usb_fill_bulk_urb(ep->urbs[i], umidi->dev, in snd_usbmidi_in_endpoint_create()
1317 snd_usbmidi_in_urb_complete, ep); in snd_usbmidi_in_endpoint_create()
1318 ep->urbs[i]->transfer_flags = URB_NO_TRANSFER_DMA_MAP; in snd_usbmidi_in_endpoint_create()
1321 rep->in = ep; in snd_usbmidi_in_endpoint_create()
1329 static void snd_usbmidi_out_endpoint_clear(struct snd_usb_midi_out_endpoint *ep) in snd_usbmidi_out_endpoint_clear() argument
1334 if (ep->urbs[i].urb) { in snd_usbmidi_out_endpoint_clear()
1335 free_urb_and_buffer(ep->umidi, ep->urbs[i].urb, in snd_usbmidi_out_endpoint_clear()
1336 ep->max_transfer); in snd_usbmidi_out_endpoint_clear()
1337 ep->urbs[i].urb = NULL; in snd_usbmidi_out_endpoint_clear()
1341 static void snd_usbmidi_out_endpoint_delete(struct snd_usb_midi_out_endpoint *ep) in snd_usbmidi_out_endpoint_delete() argument
1343 snd_usbmidi_out_endpoint_clear(ep); in snd_usbmidi_out_endpoint_delete()
1344 kfree(ep); in snd_usbmidi_out_endpoint_delete()
1354 struct snd_usb_midi_out_endpoint *ep; in snd_usbmidi_out_endpoint_create() local
1360 ep = kzalloc(sizeof(*ep), GFP_KERNEL); in snd_usbmidi_out_endpoint_create()
1361 if (!ep) in snd_usbmidi_out_endpoint_create()
1363 ep->umidi = umidi; in snd_usbmidi_out_endpoint_create()
1366 ep->urbs[i].urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usbmidi_out_endpoint_create()
1367 if (!ep->urbs[i].urb) { in snd_usbmidi_out_endpoint_create()
1368 snd_usbmidi_out_endpoint_delete(ep); in snd_usbmidi_out_endpoint_create()
1371 ep->urbs[i].ep = ep; in snd_usbmidi_out_endpoint_create()
1379 ep->max_transfer = usb_maxpacket(umidi->dev, pipe, 1); in snd_usbmidi_out_endpoint_create()
1392 ep->max_transfer = 4; in snd_usbmidi_out_endpoint_create()
1399 ep->max_transfer = 9; in snd_usbmidi_out_endpoint_create()
1404 ep->max_transfer, GFP_KERNEL, in snd_usbmidi_out_endpoint_create()
1405 &ep->urbs[i].urb->transfer_dma); in snd_usbmidi_out_endpoint_create()
1407 snd_usbmidi_out_endpoint_delete(ep); in snd_usbmidi_out_endpoint_create()
1411 usb_fill_int_urb(ep->urbs[i].urb, umidi->dev, in snd_usbmidi_out_endpoint_create()
1412 pipe, buffer, ep->max_transfer, in snd_usbmidi_out_endpoint_create()
1414 &ep->urbs[i], ep_info->out_interval); in snd_usbmidi_out_endpoint_create()
1416 usb_fill_bulk_urb(ep->urbs[i].urb, umidi->dev, in snd_usbmidi_out_endpoint_create()
1417 pipe, buffer, ep->max_transfer, in snd_usbmidi_out_endpoint_create()
1419 &ep->urbs[i]); in snd_usbmidi_out_endpoint_create()
1420 ep->urbs[i].urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP; in snd_usbmidi_out_endpoint_create()
1423 spin_lock_init(&ep->buffer_lock); in snd_usbmidi_out_endpoint_create()
1424 tasklet_init(&ep->tasklet, snd_usbmidi_out_tasklet, (unsigned long)ep); in snd_usbmidi_out_endpoint_create()
1425 init_waitqueue_head(&ep->drain_wait); in snd_usbmidi_out_endpoint_create()
1429 ep->ports[i].ep = ep; in snd_usbmidi_out_endpoint_create()
1430 ep->ports[i].cable = i << 4; in snd_usbmidi_out_endpoint_create()
1434 umidi->usb_protocol_ops->init_out_endpoint(ep); in snd_usbmidi_out_endpoint_create()
1436 rep->out = ep; in snd_usbmidi_out_endpoint_create()
1448 struct snd_usb_midi_endpoint *ep = &umidi->endpoints[i]; in snd_usbmidi_free() local
1449 if (ep->out) in snd_usbmidi_free()
1450 snd_usbmidi_out_endpoint_delete(ep->out); in snd_usbmidi_free()
1451 if (ep->in) in snd_usbmidi_free()
1452 snd_usbmidi_in_endpoint_delete(ep->in); in snd_usbmidi_free()
1479 struct snd_usb_midi_endpoint *ep = &umidi->endpoints[i]; in snd_usbmidi_disconnect() local
1480 if (ep->out) in snd_usbmidi_disconnect()
1481 tasklet_kill(&ep->out->tasklet); in snd_usbmidi_disconnect()
1482 if (ep->out) { in snd_usbmidi_disconnect()
1484 usb_kill_urb(ep->out->urbs[j].urb); in snd_usbmidi_disconnect()
1486 umidi->usb_protocol_ops->finish_out_endpoint(ep->out); in snd_usbmidi_disconnect()
1487 ep->out->active_urbs = 0; in snd_usbmidi_disconnect()
1488 if (ep->out->drain_urbs) { in snd_usbmidi_disconnect()
1489 ep->out->drain_urbs = 0; in snd_usbmidi_disconnect()
1490 wake_up(&ep->out->drain_wait); in snd_usbmidi_disconnect()
1493 if (ep->in) in snd_usbmidi_disconnect()
1495 usb_kill_urb(ep->in->urbs[j]); in snd_usbmidi_disconnect()
1497 if (ep->out) in snd_usbmidi_disconnect()
1498 snd_usbmidi_out_endpoint_clear(ep->out); in snd_usbmidi_disconnect()
1499 if (ep->in) { in snd_usbmidi_disconnect()
1500 snd_usbmidi_in_endpoint_delete(ep->in); in snd_usbmidi_disconnect()
1501 ep->in = NULL; in snd_usbmidi_disconnect()
1816 struct usb_endpoint_descriptor *ep; in snd_usbmidi_get_ms_info() local
1839 ep = get_ep_desc(hostep); in snd_usbmidi_get_ms_info()
1840 if (!usb_endpoint_xfer_bulk(ep) && !usb_endpoint_xfer_int(ep)) in snd_usbmidi_get_ms_info()
1848 if (usb_endpoint_dir_out(ep)) { in snd_usbmidi_get_ms_info()
1856 endpoints[epidx].out_ep = usb_endpoint_num(ep); in snd_usbmidi_get_ms_info()
1857 if (usb_endpoint_xfer_int(ep)) in snd_usbmidi_get_ms_info()
1858 endpoints[epidx].out_interval = ep->bInterval; in snd_usbmidi_get_ms_info()
1869 ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack); in snd_usbmidi_get_ms_info()
1878 endpoints[epidx].in_ep = usb_endpoint_num(ep); in snd_usbmidi_get_ms_info()
1879 if (usb_endpoint_xfer_int(ep)) in snd_usbmidi_get_ms_info()
1880 endpoints[epidx].in_interval = ep->bInterval; in snd_usbmidi_get_ms_info()
1886 ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack); in snd_usbmidi_get_ms_info()
2252 struct snd_usb_midi_endpoint *ep = &umidi->endpoints[i]; in snd_usbmidi_input_stop() local
2253 if (ep->in) in snd_usbmidi_input_stop()
2255 usb_kill_urb(ep->in->urbs[j]); in snd_usbmidi_input_stop()
2261 static void snd_usbmidi_input_start_ep(struct snd_usb_midi_in_endpoint *ep) in snd_usbmidi_input_start_ep() argument
2265 if (!ep) in snd_usbmidi_input_start_ep()
2268 struct urb *urb = ep->urbs[i]; in snd_usbmidi_input_start_ep()
2269 urb->dev = ep->umidi->dev; in snd_usbmidi_input_start_ep()