Lines Matching full:usb_ep

31 	struct f_midi2_usb_ep *usb_ep;	/* belonging USB EP */  member
40 struct usb_ep *usb_ep; /* assigned USB EP */ member
41 void (*complete)(struct usb_ep *usb_ep, struct usb_request *req);
380 static struct usb_request *get_empty_request(struct f_midi2_usb_ep *usb_ep) in get_empty_request() argument
386 spin_lock_irqsave(&usb_ep->card->queue_lock, flags); in get_empty_request()
387 if (!usb_ep->free_reqs) in get_empty_request()
389 index = find_first_bit(&usb_ep->free_reqs, usb_ep->num_reqs); in get_empty_request()
390 if (index >= usb_ep->num_reqs) in get_empty_request()
392 req = usb_ep->reqs[index].req; in get_empty_request()
395 clear_bit(index, &usb_ep->free_reqs); in get_empty_request()
398 spin_unlock_irqrestore(&usb_ep->card->queue_lock, flags); in get_empty_request()
408 spin_lock_irqsave(&ctx->usb_ep->card->queue_lock, flags); in put_empty_request()
409 set_bit(ctx->index, &ctx->usb_ep->free_reqs); in put_empty_request()
410 spin_unlock_irqrestore(&ctx->usb_ep->card->queue_lock, flags); in put_empty_request()
423 req->complete = ctx->usb_ep->complete; in queue_request_ep_raw()
424 err = usb_ep_queue(ctx->usb_ep->usb_ep, req, GFP_ATOMIC); in queue_request_ep_raw()
443 struct f_midi2_usb_ep *usb_ep = &ep->ep_in; in reply_ep_in() local
446 req = get_empty_request(usb_ep); in reply_ep_in()
498 struct f_midi2_usb_ep *usb_ep = &ep->ep_in; in reply_ump_stream_string() local
506 req = get_empty_request(usb_ep); in reply_ump_stream_string()
673 static void f_midi2_ep_out_complete(struct usb_ep *usb_ep, in f_midi2_ep_out_complete() argument
677 struct f_midi2_ep *ep = ctx->usb_ep->ep; in f_midi2_ep_out_complete()
683 usb_ep->name, status, req->actual, req->length); in f_midi2_ep_out_complete()
709 struct f_midi2_usb_ep *usb_ep = &ep->ep_in; in process_ump_transmit() local
714 if (!usb_ep->usb_ep->enabled) in process_ump_transmit()
718 req = get_empty_request(usb_ep); in process_ump_transmit()
735 static void f_midi2_ep_in_complete(struct usb_ep *usb_ep, in f_midi2_ep_in_complete() argument
739 struct f_midi2_ep *ep = ctx->usb_ep->ep; in f_midi2_ep_in_complete()
747 usb_ep->name, status, req->actual, req->length); in f_midi2_ep_in_complete()
973 struct f_midi2_usb_ep *usb_ep = &midi2->midi1_ep_in; in process_midi1_transmit() local
982 if (!usb_ep->usb_ep || !usb_ep->usb_ep->enabled) in process_midi1_transmit()
987 req = get_empty_request(usb_ep); in process_midi1_transmit()
1020 static void f_midi2_midi1_ep_in_complete(struct usb_ep *usb_ep, in f_midi2_midi1_ep_in_complete() argument
1024 struct f_midi2 *midi2 = ctx->usb_ep->card; in f_midi2_midi1_ep_in_complete()
1031 usb_ep->name, status, req->actual, req->length); in f_midi2_midi1_ep_in_complete()
1039 static void f_midi2_midi1_ep_out_complete(struct usb_ep *usb_ep, in f_midi2_midi1_ep_out_complete() argument
1043 struct f_midi2 *midi2 = ctx->usb_ep->card; in f_midi2_midi1_ep_out_complete()
1055 usb_ep->name, status, req->actual, req->length); in f_midi2_midi1_ep_out_complete()
1094 static int f_midi2_start_ep(struct f_midi2_usb_ep *usb_ep, in f_midi2_start_ep() argument
1099 if (!usb_ep->usb_ep) in f_midi2_start_ep()
1102 usb_ep_disable(usb_ep->usb_ep); in f_midi2_start_ep()
1103 err = config_ep_by_speed(usb_ep->card->gadget, fn, usb_ep->usb_ep); in f_midi2_start_ep()
1106 return usb_ep_enable(usb_ep->usb_ep); in f_midi2_start_ep()
1110 static void f_midi2_drop_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_drop_reqs() argument
1114 if (!usb_ep->usb_ep || !usb_ep->num_reqs) in f_midi2_drop_reqs()
1117 for (i = 0; i < usb_ep->num_reqs; i++) { in f_midi2_drop_reqs()
1118 if (!test_bit(i, &usb_ep->free_reqs) && usb_ep->reqs[i].req) { in f_midi2_drop_reqs()
1119 usb_ep_dequeue(usb_ep->usb_ep, usb_ep->reqs[i].req); in f_midi2_drop_reqs()
1120 set_bit(i, &usb_ep->free_reqs); in f_midi2_drop_reqs()
1126 static int f_midi2_alloc_ep_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_alloc_ep_reqs() argument
1128 struct f_midi2 *midi2 = usb_ep->card; in f_midi2_alloc_ep_reqs()
1131 if (!usb_ep->usb_ep) in f_midi2_alloc_ep_reqs()
1133 if (!usb_ep->reqs) in f_midi2_alloc_ep_reqs()
1137 if (usb_ep->reqs[i].req) in f_midi2_alloc_ep_reqs()
1139 usb_ep->reqs[i].req = alloc_ep_req(usb_ep->usb_ep, in f_midi2_alloc_ep_reqs()
1141 if (!usb_ep->reqs[i].req) in f_midi2_alloc_ep_reqs()
1143 usb_ep->reqs[i].req->context = &usb_ep->reqs[i]; in f_midi2_alloc_ep_reqs()
1149 static void f_midi2_free_ep_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_free_ep_reqs() argument
1151 struct f_midi2 *midi2 = usb_ep->card; in f_midi2_free_ep_reqs()
1155 if (!usb_ep->reqs[i].req) in f_midi2_free_ep_reqs()
1157 free_ep_req(usb_ep->usb_ep, usb_ep->reqs[i].req); in f_midi2_free_ep_reqs()
1158 usb_ep->reqs[i].req = NULL; in f_midi2_free_ep_reqs()
1164 struct f_midi2_usb_ep *usb_ep, in f_midi2_init_ep() argument
1166 void (*complete)(struct usb_ep *usb_ep, in f_midi2_init_ep() argument
1171 usb_ep->card = midi2; in f_midi2_init_ep()
1172 usb_ep->ep = ep; in f_midi2_init_ep()
1173 usb_ep->usb_ep = usb_ep_autoconfig(midi2->gadget, desc); in f_midi2_init_ep()
1174 if (!usb_ep->usb_ep) in f_midi2_init_ep()
1176 usb_ep->complete = complete; in f_midi2_init_ep()
1178 usb_ep->reqs = kcalloc(midi2->info.num_reqs, sizeof(*usb_ep->reqs), in f_midi2_init_ep()
1180 if (!usb_ep->reqs) in f_midi2_init_ep()
1183 usb_ep->reqs[i].index = i; in f_midi2_init_ep()
1184 usb_ep->reqs[i].usb_ep = usb_ep; in f_midi2_init_ep()
1185 set_bit(i, &usb_ep->free_reqs); in f_midi2_init_ep()
1186 usb_ep->num_reqs++; in f_midi2_init_ep()
1193 static void f_midi2_free_ep(struct f_midi2_usb_ep *usb_ep) in f_midi2_free_ep() argument
1195 f_midi2_drop_reqs(usb_ep); in f_midi2_free_ep()
1197 f_midi2_free_ep_reqs(usb_ep); in f_midi2_free_ep()
1199 kfree(usb_ep->reqs); in f_midi2_free_ep()
1200 usb_ep->num_reqs = 0; in f_midi2_free_ep()
1201 usb_ep->free_reqs = 0; in f_midi2_free_ep()
1202 usb_ep->reqs = NULL; in f_midi2_free_ep()
1206 static void f_midi2_queue_out_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_queue_out_reqs() argument
1210 if (!usb_ep->usb_ep) in f_midi2_queue_out_reqs()
1213 for (i = 0; i < usb_ep->num_reqs; i++) { in f_midi2_queue_out_reqs()
1214 if (!test_bit(i, &usb_ep->free_reqs) || !usb_ep->reqs[i].req) in f_midi2_queue_out_reqs()
1216 usb_ep->reqs[i].req->complete = usb_ep->complete; in f_midi2_queue_out_reqs()
1217 err = usb_ep_queue(usb_ep->usb_ep, usb_ep->reqs[i].req, in f_midi2_queue_out_reqs()
1220 clear_bit(i, &usb_ep->free_reqs); in f_midi2_queue_out_reqs()