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);
383 static struct usb_request *get_empty_request(struct f_midi2_usb_ep *usb_ep) in get_empty_request() argument
389 spin_lock_irqsave(&usb_ep->card->queue_lock, flags); in get_empty_request()
390 if (!usb_ep->free_reqs) in get_empty_request()
392 index = find_first_bit(&usb_ep->free_reqs, usb_ep->num_reqs); in get_empty_request()
393 if (index >= usb_ep->num_reqs) in get_empty_request()
395 req = usb_ep->reqs[index].req; in get_empty_request()
398 clear_bit(index, &usb_ep->free_reqs); in get_empty_request()
401 spin_unlock_irqrestore(&usb_ep->card->queue_lock, flags); in get_empty_request()
411 spin_lock_irqsave(&ctx->usb_ep->card->queue_lock, flags); in put_empty_request()
412 set_bit(ctx->index, &ctx->usb_ep->free_reqs); in put_empty_request()
413 spin_unlock_irqrestore(&ctx->usb_ep->card->queue_lock, flags); in put_empty_request()
426 req->complete = ctx->usb_ep->complete; in queue_request_ep_raw()
427 err = usb_ep_queue(ctx->usb_ep->usb_ep, req, GFP_ATOMIC); in queue_request_ep_raw()
446 struct f_midi2_usb_ep *usb_ep = &ep->ep_in; in reply_ep_in() local
449 req = get_empty_request(usb_ep); in reply_ep_in()
501 struct f_midi2_usb_ep *usb_ep = &ep->ep_in; in reply_ump_stream_string() local
509 req = get_empty_request(usb_ep); in reply_ump_stream_string()
684 static void f_midi2_ep_out_complete(struct usb_ep *usb_ep, in f_midi2_ep_out_complete() argument
688 struct f_midi2_ep *ep = ctx->usb_ep->ep; in f_midi2_ep_out_complete()
694 usb_ep->name, status, req->actual, req->length); in f_midi2_ep_out_complete()
720 struct f_midi2_usb_ep *usb_ep = &ep->ep_in; in process_ump_transmit() local
725 if (!usb_ep->usb_ep->enabled) in process_ump_transmit()
729 req = get_empty_request(usb_ep); in process_ump_transmit()
746 static void f_midi2_ep_in_complete(struct usb_ep *usb_ep, in f_midi2_ep_in_complete() argument
750 struct f_midi2_ep *ep = ctx->usb_ep->ep; in f_midi2_ep_in_complete()
758 usb_ep->name, status, req->actual, req->length); in f_midi2_ep_in_complete()
984 struct f_midi2_usb_ep *usb_ep = &midi2->midi1_ep_in; in process_midi1_transmit() local
993 if (!usb_ep->usb_ep || !usb_ep->usb_ep->enabled) in process_midi1_transmit()
998 req = get_empty_request(usb_ep); in process_midi1_transmit()
1031 static void f_midi2_midi1_ep_in_complete(struct usb_ep *usb_ep, in f_midi2_midi1_ep_in_complete() argument
1035 struct f_midi2 *midi2 = ctx->usb_ep->card; in f_midi2_midi1_ep_in_complete()
1042 usb_ep->name, status, req->actual, req->length); in f_midi2_midi1_ep_in_complete()
1050 static void f_midi2_midi1_ep_out_complete(struct usb_ep *usb_ep, in f_midi2_midi1_ep_out_complete() argument
1054 struct f_midi2 *midi2 = ctx->usb_ep->card; in f_midi2_midi1_ep_out_complete()
1066 usb_ep->name, status, req->actual, req->length); in f_midi2_midi1_ep_out_complete()
1106 static int f_midi2_start_ep(struct f_midi2_usb_ep *usb_ep, in f_midi2_start_ep() argument
1111 if (!usb_ep->usb_ep) in f_midi2_start_ep()
1114 usb_ep_disable(usb_ep->usb_ep); in f_midi2_start_ep()
1115 err = config_ep_by_speed(usb_ep->card->gadget, fn, usb_ep->usb_ep); in f_midi2_start_ep()
1118 return usb_ep_enable(usb_ep->usb_ep); in f_midi2_start_ep()
1122 static void f_midi2_drop_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_drop_reqs() argument
1126 if (!usb_ep->usb_ep || !usb_ep->num_reqs) in f_midi2_drop_reqs()
1129 for (i = 0; i < usb_ep->num_reqs; i++) { in f_midi2_drop_reqs()
1130 if (!test_bit(i, &usb_ep->free_reqs) && usb_ep->reqs[i].req) { in f_midi2_drop_reqs()
1131 usb_ep_dequeue(usb_ep->usb_ep, usb_ep->reqs[i].req); in f_midi2_drop_reqs()
1132 set_bit(i, &usb_ep->free_reqs); in f_midi2_drop_reqs()
1138 static int f_midi2_alloc_ep_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_alloc_ep_reqs() argument
1140 struct f_midi2 *midi2 = usb_ep->card; in f_midi2_alloc_ep_reqs()
1143 if (!usb_ep->usb_ep) in f_midi2_alloc_ep_reqs()
1145 if (!usb_ep->reqs) in f_midi2_alloc_ep_reqs()
1149 if (usb_ep->reqs[i].req) in f_midi2_alloc_ep_reqs()
1151 usb_ep->reqs[i].req = alloc_ep_req(usb_ep->usb_ep, in f_midi2_alloc_ep_reqs()
1153 if (!usb_ep->reqs[i].req) in f_midi2_alloc_ep_reqs()
1155 usb_ep->reqs[i].req->context = &usb_ep->reqs[i]; in f_midi2_alloc_ep_reqs()
1161 static void f_midi2_free_ep_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_free_ep_reqs() argument
1163 struct f_midi2 *midi2 = usb_ep->card; in f_midi2_free_ep_reqs()
1167 if (!usb_ep->reqs[i].req) in f_midi2_free_ep_reqs()
1169 free_ep_req(usb_ep->usb_ep, usb_ep->reqs[i].req); in f_midi2_free_ep_reqs()
1170 usb_ep->reqs[i].req = NULL; in f_midi2_free_ep_reqs()
1176 struct f_midi2_usb_ep *usb_ep, in f_midi2_init_ep() argument
1178 void (*complete)(struct usb_ep *usb_ep, in f_midi2_init_ep() argument
1183 usb_ep->card = midi2; in f_midi2_init_ep()
1184 usb_ep->ep = ep; in f_midi2_init_ep()
1185 usb_ep->usb_ep = usb_ep_autoconfig(midi2->gadget, desc); in f_midi2_init_ep()
1186 if (!usb_ep->usb_ep) in f_midi2_init_ep()
1188 usb_ep->complete = complete; in f_midi2_init_ep()
1190 usb_ep->reqs = kcalloc(midi2->info.num_reqs, sizeof(*usb_ep->reqs), in f_midi2_init_ep()
1192 if (!usb_ep->reqs) in f_midi2_init_ep()
1195 usb_ep->reqs[i].index = i; in f_midi2_init_ep()
1196 usb_ep->reqs[i].usb_ep = usb_ep; in f_midi2_init_ep()
1197 set_bit(i, &usb_ep->free_reqs); in f_midi2_init_ep()
1198 usb_ep->num_reqs++; in f_midi2_init_ep()
1205 static void f_midi2_free_ep(struct f_midi2_usb_ep *usb_ep) in f_midi2_free_ep() argument
1207 f_midi2_drop_reqs(usb_ep); in f_midi2_free_ep()
1209 f_midi2_free_ep_reqs(usb_ep); in f_midi2_free_ep()
1211 kfree(usb_ep->reqs); in f_midi2_free_ep()
1212 usb_ep->num_reqs = 0; in f_midi2_free_ep()
1213 usb_ep->free_reqs = 0; in f_midi2_free_ep()
1214 usb_ep->reqs = NULL; in f_midi2_free_ep()
1218 static void f_midi2_queue_out_reqs(struct f_midi2_usb_ep *usb_ep) in f_midi2_queue_out_reqs() argument
1222 if (!usb_ep->usb_ep) in f_midi2_queue_out_reqs()
1225 for (i = 0; i < usb_ep->num_reqs; i++) { in f_midi2_queue_out_reqs()
1226 if (!test_bit(i, &usb_ep->free_reqs) || !usb_ep->reqs[i].req) in f_midi2_queue_out_reqs()
1228 usb_ep->reqs[i].req->complete = usb_ep->complete; in f_midi2_queue_out_reqs()
1229 err = usb_ep_queue(usb_ep->usb_ep, usb_ep->reqs[i].req, in f_midi2_queue_out_reqs()
1232 clear_bit(i, &usb_ep->free_reqs); in f_midi2_queue_out_reqs()