usb: gadget: f_accessory: Enabled Zero Length Packet (ZLP) for acc_write
Accessory connected to Android Device requires Zero Length Packet (ZLP) to be written when data transferred out from the Android device are multiples of wMaxPacketSize (64bytes (Full-Speed) / 512bytes (High-Speed)) to end the transfer. Change-Id: Ib2c2c0ab98ef9afa10e74a720142deca5c0ed476 Signed-off-by: Anson Jacob <ansonkuzhumbil@gmail.com>
This commit is contained in:
parent
43d61e6ff2
commit
b6d704d674
1 changed files with 9 additions and 2 deletions
|
@ -640,10 +640,17 @@ static ssize_t acc_write(struct file *fp, const char __user *buf,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count > BULK_BUFFER_SIZE)
|
if (count > BULK_BUFFER_SIZE) {
|
||||||
xfer = BULK_BUFFER_SIZE;
|
xfer = BULK_BUFFER_SIZE;
|
||||||
else
|
/* ZLP, They will be more TX requests so not yet. */
|
||||||
|
req->zero = 0;
|
||||||
|
} else {
|
||||||
xfer = count;
|
xfer = count;
|
||||||
|
/* If the data length is a multple of the
|
||||||
|
* maxpacket size then send a zero length packet(ZLP).
|
||||||
|
*/
|
||||||
|
req->zero = ((xfer % dev->ep_in->maxpacket) == 0);
|
||||||
|
}
|
||||||
if (copy_from_user(req->buf, buf, xfer)) {
|
if (copy_from_user(req->buf, buf, xfer)) {
|
||||||
r = -EFAULT;
|
r = -EFAULT;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue