Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03e10e5a authored by Ben Dooks's avatar Ben Dooks Committed by Greg Kroah-Hartman
Browse files

USB: s3c-hsotg: Only load packet per fifo write



Limit the IN FIFO write to a single packet per attempt at writing,
as per the specifications and ensure that we don't return fifo-full
so that we can continue writing packets if we have the space.

Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 10aebc77
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -538,6 +538,17 @@ static int s3c_hsotg_write_fifo(struct s3c_hsotg *hsotg,
	if (can_write > 512)
	if (can_write > 512)
		can_write = 512;
		can_write = 512;


	/* limit the write to one max-packet size worth of data, but allow
	 * the transfer to return that it did not run out of fifo space
	 * doing it. */
	if (to_write > hs_ep->ep.maxpacket) {
		to_write = hs_ep->ep.maxpacket;

		s3c_hsotg_en_gsint(hsotg,
				   periodic ? S3C_GINTSTS_PTxFEmp :
				   S3C_GINTSTS_NPTxFEmp);
	}

	/* see if we can write data */
	/* see if we can write data */


	if (to_write > can_write) {
	if (to_write > can_write) {