ANDROID: 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:
Anson Jacob 2014-06-23 19:07:44 +08:00 committed by Amit Pundir
parent 45cb8c7e3c
commit 47f4f3ff23

View file

@ -640,10 +640,17 @@ static ssize_t acc_write(struct file *fp, const char __user *buf,
break;
}
if (count > BULK_BUFFER_SIZE)
if (count > BULK_BUFFER_SIZE) {
xfer = BULK_BUFFER_SIZE;
else
/* ZLP, They will be more TX requests so not yet. */
req->zero = 0;
} else {
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)) {
r = -EFAULT;
break;