xref: /linux/drivers/usb/gadget/u_f.c (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * u_f.c -- USB function utilities for Gadget stack
4  *
5  * Copyright (c) 2013 Samsung Electronics Co., Ltd.
6  *		http://www.samsung.com
7  *
8  * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
9  */
10 
11 #include <linux/usb/ch9.h>
12 #include <linux/usb/func_utils.h>
13 
14 struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len)
15 {
16 	struct usb_request      *req;
17 
18 	req = usb_ep_alloc_request(ep, GFP_ATOMIC);
19 	if (req) {
20 		req->length = usb_endpoint_dir_out(ep->desc) ?
21 			usb_ep_align(ep, len) : len;
22 		req->buf = kmalloc(req->length, GFP_ATOMIC);
23 		if (!req->buf) {
24 			usb_ep_free_request(ep, req);
25 			req = NULL;
26 		}
27 	}
28 	return req;
29 }
30 EXPORT_SYMBOL_GPL(alloc_ep_req);
31