Commit 04683909 authored by Peter Chen's avatar Peter Chen Committed by Felipe Balbi

usb: gadget: f_sourcesink: format data pattern according to max packet size

Since the host and gadget can't agree with transfer length before
each transfer, but they agree with max packet size for each
endpoint, we use max packet size to format data pattern.
Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: default avatarPeter Chen <peter.chen@freescale.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent b9a6e8e1
...@@ -489,6 +489,7 @@ static int check_read_data(struct f_sourcesink *ss, struct usb_request *req) ...@@ -489,6 +489,7 @@ static int check_read_data(struct f_sourcesink *ss, struct usb_request *req)
unsigned i; unsigned i;
u8 *buf = req->buf; u8 *buf = req->buf;
struct usb_composite_dev *cdev = ss->function.config->cdev; struct usb_composite_dev *cdev = ss->function.config->cdev;
int max_packet_size = le16_to_cpu(ss->out_ep->desc->wMaxPacketSize);
if (pattern == 2) if (pattern == 2)
return 0; return 0;
...@@ -510,7 +511,7 @@ static int check_read_data(struct f_sourcesink *ss, struct usb_request *req) ...@@ -510,7 +511,7 @@ static int check_read_data(struct f_sourcesink *ss, struct usb_request *req)
* stutter for any reason, including buffer duplication...) * stutter for any reason, including buffer duplication...)
*/ */
case 1: case 1:
if (*buf == (u8)(i % 63)) if (*buf == (u8)((i % max_packet_size) % 63))
continue; continue;
break; break;
} }
...@@ -525,6 +526,7 @@ static void reinit_write_data(struct usb_ep *ep, struct usb_request *req) ...@@ -525,6 +526,7 @@ static void reinit_write_data(struct usb_ep *ep, struct usb_request *req)
{ {
unsigned i; unsigned i;
u8 *buf = req->buf; u8 *buf = req->buf;
int max_packet_size = le16_to_cpu(ep->desc->wMaxPacketSize);
switch (pattern) { switch (pattern) {
case 0: case 0:
...@@ -532,7 +534,7 @@ static void reinit_write_data(struct usb_ep *ep, struct usb_request *req) ...@@ -532,7 +534,7 @@ static void reinit_write_data(struct usb_ep *ep, struct usb_request *req)
break; break;
case 1: case 1:
for (i = 0; i < req->length; i++) for (i = 0; i < req->length; i++)
*buf++ = (u8) (i % 63); *buf++ = (u8) ((i % max_packet_size) % 63);
break; break;
case 2: case 2:
break; break;
......
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