Commit ede709c0 authored by Marek Vasut's avatar Marek Vasut
Browse files

usb: mv_udc: Implement better qTD item accessor



The code for retrieving qTD item for particular endpoint is hard
to understand, moreover it's duplicated all over the driver. Move
the code into single nice and documented function.
Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Lei Wen <leiwen@marvell.com>
Cc: Otavio Salvador <otavio@ossystems.com.br>
Cc: Stefano Babic <sbabic@denx.de>
parent 8a095a68
...@@ -123,6 +123,19 @@ static struct ept_queue_head *mv_get_qh(int ep_num, int dir_in) ...@@ -123,6 +123,19 @@ static struct ept_queue_head *mv_get_qh(int ep_num, int dir_in)
return &controller.epts[(ep_num * 2) + dir_in]; return &controller.epts[(ep_num * 2) + dir_in];
} }
/**
* mv_get_qtd() - return queue item for endpoint
* @ep_num: Endpoint number
* @dir_in: Direction of the endpoint (IN = 1, OUT = 0)
*
* This function returns the QH associated with particular endpoint
* and it's direction.
*/
static struct ept_queue_item *mv_get_qtd(int ep_num, int dir_in)
{
return controller.items[(ep_num * 2) + dir_in];
}
static struct usb_request * static struct usb_request *
mv_ep_alloc_request(struct usb_ep *ep, unsigned int gfp_flags) mv_ep_alloc_request(struct usb_ep *ep, unsigned int gfp_flags)
{ {
...@@ -181,7 +194,7 @@ static int mv_ep_queue(struct usb_ep *ep, ...@@ -181,7 +194,7 @@ static int mv_ep_queue(struct usb_ep *ep,
int bit, num, len, in; int bit, num, len, in;
num = mv_ep->desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; num = mv_ep->desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
in = (mv_ep->desc->bEndpointAddress & USB_DIR_IN) != 0; in = (mv_ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
item = controller.items[2 * num + in]; item = mv_get_qtd(num, in);
head = mv_get_qh(num, in); head = mv_get_qh(num, in);
phys = (unsigned)req->buf; phys = (unsigned)req->buf;
len = req->length; len = req->length;
...@@ -217,7 +230,7 @@ static void handle_ep_complete(struct mv_ep *ep) ...@@ -217,7 +230,7 @@ static void handle_ep_complete(struct mv_ep *ep)
in = (ep->desc->bEndpointAddress & USB_DIR_IN) != 0; in = (ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
if (num == 0) if (num == 0)
ep->desc = &ep0_out_desc; ep->desc = &ep0_out_desc;
item = controller.items[2 * num + in]; item = mv_get_qtd(num, in);
if (item->info & 0xff) if (item->info & 0xff)
printf("EP%d/%s FAIL nfo=%x pg0=%x\n", printf("EP%d/%s FAIL nfo=%x pg0=%x\n",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment