Lines Matching refs:umidi

82 	struct snd_usb_midi2_interface *umidi;	/* reference to MIDI iface */  member
395 static int start_input_streams(struct snd_usb_midi2_interface *umidi) in start_input_streams() argument
400 list_for_each_entry(ep, &umidi->ep_list, list) { in start_input_streams()
408 list_for_each_entry(ep, &umidi->ep_list, list) { in start_input_streams()
416 list_for_each_entry(ep, &umidi->ep_list, list) { in start_input_streams()
432 static int create_midi2_endpoint(struct snd_usb_midi2_interface *umidi, in create_midi2_endpoint() argument
439 usb_audio_dbg(umidi->chip, "Creating an EP 0x%02x, #GTB=%d\n", in create_midi2_endpoint()
449 ep->dev = umidi->chip->dev; in create_midi2_endpoint()
472 list_add_tail(&ep->list, &umidi->ep_list); in create_midi2_endpoint()
486 static void free_all_midi2_endpoints(struct snd_usb_midi2_interface *umidi) in free_all_midi2_endpoints() argument
490 while (!list_empty(&umidi->ep_list)) { in free_all_midi2_endpoints()
491 ep = list_first_entry(&umidi->ep_list, in free_all_midi2_endpoints()
521 static int get_group_terminal_block_descs(struct snd_usb_midi2_interface *umidi) in get_group_terminal_block_descs() argument
523 struct usb_host_interface *hostif = umidi->hostif; in get_group_terminal_block_descs()
524 struct usb_device *dev = umidi->chip->dev; in get_group_terminal_block_descs()
558 umidi->blk_descs = data; in get_group_terminal_block_descs()
559 umidi->blk_desc_size = size; in get_group_terminal_block_descs()
565 find_group_terminal_block(struct snd_usb_midi2_interface *umidi, int id) in find_group_terminal_block() argument
567 const unsigned char *data = umidi->blk_descs; in find_group_terminal_block()
568 int size = umidi->blk_desc_size; in find_group_terminal_block()
611 usb_audio_info(rmidi->umidi->chip, in parse_group_terminal_block()
628 usb_audio_info(rmidi->umidi->chip, in parse_group_terminal_block()
638 static int parse_group_terminal_blocks(struct snd_usb_midi2_interface *umidi) in parse_group_terminal_blocks() argument
644 err = get_group_terminal_block_descs(umidi); in parse_group_terminal_blocks()
647 if (!umidi->blk_descs) in parse_group_terminal_blocks()
650 list_for_each_entry(rmidi, &umidi->rawmidi_list, list) { in parse_group_terminal_blocks()
651 desc = find_group_terminal_block(umidi, rmidi->usb_block_id); in parse_group_terminal_blocks()
663 static int parse_midi_2_0_endpoints(struct snd_usb_midi2_interface *umidi) in parse_midi_2_0_endpoints() argument
665 struct usb_host_interface *hostif = umidi->hostif; in parse_midi_2_0_endpoints()
684 err = create_midi2_endpoint(umidi, hostep, ms_ep); in parse_midi_2_0_endpoints()
691 static void free_all_midi2_umps(struct snd_usb_midi2_interface *umidi) in free_all_midi2_umps() argument
695 while (!list_empty(&umidi->rawmidi_list)) { in free_all_midi2_umps()
696 rmidi = list_first_entry(&umidi->rawmidi_list, in free_all_midi2_umps()
703 static int create_midi2_ump(struct snd_usb_midi2_interface *umidi, in create_midi2_ump() argument
718 rmidi->dev = umidi->chip->dev; in create_midi2_ump()
719 rmidi->umidi = umidi; in create_midi2_ump()
722 rmidi->index = umidi->chip->num_rawmidis; in create_midi2_ump()
726 err = snd_ump_endpoint_new(umidi->chip->card, idstr, rmidi->index, in create_midi2_ump()
729 usb_audio_dbg(umidi->chip, "Failed to create a UMP object\n"); in create_midi2_ump()
735 umidi->chip->num_rawmidis++; in create_midi2_ump()
753 list_add_tail(&rmidi->list, &umidi->rawmidi_list); in create_midi2_ump()
759 find_midi2_ump(struct snd_usb_midi2_interface *umidi, int blk_id) in find_midi2_ump() argument
763 list_for_each_entry(rmidi, &umidi->rawmidi_list, list) { in find_midi2_ump()
771 static int find_matching_ep_partner(struct snd_usb_midi2_interface *umidi, in find_matching_ep_partner() argument
778 usb_audio_dbg(umidi->chip, "Looking for a pair for EP-in 0x%02x\n", in find_matching_ep_partner()
780 list_for_each_entry(pair_ep, &umidi->ep_list, list) { in find_matching_ep_partner()
787 usb_audio_dbg(umidi->chip, in find_matching_ep_partner()
790 return create_midi2_ump(umidi, ep, pair_ep, blk_id); in find_matching_ep_partner()
801 static int parse_ump_endpoints(struct snd_usb_midi2_interface *umidi) in parse_ump_endpoints() argument
806 list_for_each_entry(rmidi, &umidi->rawmidi_list, list) { in parse_ump_endpoints()
825 struct snd_usb_midi2_interface *umidi = rmidi->umidi; in create_gtb_block() local
830 desc = find_group_terminal_block(umidi, blk); in create_gtb_block()
834 usb_audio_dbg(umidi->chip, in create_gtb_block()
853 usb_audio_dbg(umidi->chip, "Unsupported GTB type %d\n", in create_gtb_block()
876 usb_audio_dbg(umidi->chip, in create_gtb_block()
883 static int create_blocks_from_gtb(struct snd_usb_midi2_interface *umidi) in create_blocks_from_gtb() argument
888 list_for_each_entry(rmidi, &umidi->rawmidi_list, list) { in create_blocks_from_gtb()
913 static int attach_legacy_rawmidi(struct snd_usb_midi2_interface *umidi) in attach_legacy_rawmidi() argument
919 list_for_each_entry(rmidi, &umidi->rawmidi_list, list) { in attach_legacy_rawmidi()
922 umidi->chip->num_rawmidis); in attach_legacy_rawmidi()
925 umidi->chip->num_rawmidis++; in attach_legacy_rawmidi()
931 static void snd_usb_midi_v2_free(struct snd_usb_midi2_interface *umidi) in snd_usb_midi_v2_free() argument
933 free_all_midi2_endpoints(umidi); in snd_usb_midi_v2_free()
934 free_all_midi2_umps(umidi); in snd_usb_midi_v2_free()
935 list_del(&umidi->list); in snd_usb_midi_v2_free()
936 kfree(umidi->blk_descs); in snd_usb_midi_v2_free()
937 kfree(umidi); in snd_usb_midi_v2_free()
941 static int parse_midi_2_0(struct snd_usb_midi2_interface *umidi) in parse_midi_2_0() argument
947 err = parse_midi_2_0_endpoints(umidi); in parse_midi_2_0()
950 if (list_empty(&umidi->ep_list)) { in parse_midi_2_0()
951 usb_audio_warn(umidi->chip, "No MIDI endpoints found\n"); in parse_midi_2_0()
960 list_for_each_entry(ep, &umidi->ep_list, list) { in parse_midi_2_0()
966 err = find_matching_ep_partner(umidi, ep, id); in parse_midi_2_0()
976 list_for_each_entry(ep, &umidi->ep_list, list) { in parse_midi_2_0()
981 if (find_midi2_ump(umidi, id)) in parse_midi_2_0()
983 usb_audio_dbg(umidi->chip, in parse_midi_2_0()
987 err = create_midi2_ump(umidi, ep, NULL, id); in parse_midi_2_0()
989 err = create_midi2_ump(umidi, NULL, ep, id); in parse_midi_2_0()
1015 static int set_altset(struct snd_usb_midi2_interface *umidi) in set_altset() argument
1017 usb_audio_dbg(umidi->chip, "Setting host iface %d:%d\n", in set_altset()
1018 umidi->hostif->desc.bInterfaceNumber, in set_altset()
1019 umidi->hostif->desc.bAlternateSetting); in set_altset()
1020 return usb_set_interface(umidi->chip->dev, in set_altset()
1021 umidi->hostif->desc.bInterfaceNumber, in set_altset()
1022 umidi->hostif->desc.bAlternateSetting); in set_altset()
1040 static void set_fallback_rawmidi_names(struct snd_usb_midi2_interface *umidi) in set_fallback_rawmidi_names() argument
1042 struct usb_device *dev = umidi->chip->dev; in set_fallback_rawmidi_names()
1046 list_for_each_entry(rmidi, &umidi->rawmidi_list, list) { in set_fallback_rawmidi_names()
1049 if (!*ump->info.name && umidi->hostif->desc.iInterface) in set_fallback_rawmidi_names()
1050 fill_ump_ep_name(ump, dev, umidi->hostif->desc.iInterface); in set_fallback_rawmidi_names()
1074 struct snd_usb_midi2_interface *umidi; in snd_usb_midi_v2_create() local
1105 umidi = kzalloc(sizeof(*umidi), GFP_KERNEL); in snd_usb_midi_v2_create()
1106 if (!umidi) in snd_usb_midi_v2_create()
1108 umidi->chip = chip; in snd_usb_midi_v2_create()
1109 umidi->iface = iface; in snd_usb_midi_v2_create()
1110 umidi->hostif = hostif; in snd_usb_midi_v2_create()
1111 INIT_LIST_HEAD(&umidi->rawmidi_list); in snd_usb_midi_v2_create()
1112 INIT_LIST_HEAD(&umidi->ep_list); in snd_usb_midi_v2_create()
1114 list_add_tail(&umidi->list, &chip->midi_v2_list); in snd_usb_midi_v2_create()
1116 err = set_altset(umidi); in snd_usb_midi_v2_create()
1123 err = parse_midi_2_0(umidi); in snd_usb_midi_v2_create()
1130 err = parse_group_terminal_blocks(umidi); in snd_usb_midi_v2_create()
1136 err = start_input_streams(umidi); in snd_usb_midi_v2_create()
1143 err = parse_ump_endpoints(umidi); in snd_usb_midi_v2_create()
1150 err = create_blocks_from_gtb(umidi); in snd_usb_midi_v2_create()
1156 set_fallback_rawmidi_names(umidi); in snd_usb_midi_v2_create()
1158 err = attach_legacy_rawmidi(umidi); in snd_usb_midi_v2_create()
1167 snd_usb_midi_v2_free(umidi); in snd_usb_midi_v2_create()
1183 struct snd_usb_midi2_interface *umidi; in snd_usb_midi_v2_suspend_all() local
1186 list_for_each_entry(umidi, &chip->midi_v2_list, list) { in snd_usb_midi_v2_suspend_all()
1187 list_for_each_entry(ep, &umidi->ep_list, list) in snd_usb_midi_v2_suspend_all()
1202 struct snd_usb_midi2_interface *umidi; in snd_usb_midi_v2_resume_all() local
1205 list_for_each_entry(umidi, &chip->midi_v2_list, list) { in snd_usb_midi_v2_resume_all()
1206 set_altset(umidi); in snd_usb_midi_v2_resume_all()
1207 list_for_each_entry(ep, &umidi->ep_list, list) in snd_usb_midi_v2_resume_all()
1214 struct snd_usb_midi2_interface *umidi; in snd_usb_midi_v2_disconnect_all() local
1217 list_for_each_entry(umidi, &chip->midi_v2_list, list) { in snd_usb_midi_v2_disconnect_all()
1218 umidi->disconnected = 1; in snd_usb_midi_v2_disconnect_all()
1219 list_for_each_entry(ep, &umidi->ep_list, list) { in snd_usb_midi_v2_disconnect_all()
1230 struct snd_usb_midi2_interface *umidi, *next; in snd_usb_midi_v2_free_all() local
1232 list_for_each_entry_safe(umidi, next, &chip->midi_v2_list, list) in snd_usb_midi_v2_free_all()
1233 snd_usb_midi_v2_free(umidi); in snd_usb_midi_v2_free_all()