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

Commit 1819d0ab authored by John Youn's avatar John Youn Committed by Gerrit - the friendly Code Review server
Browse files

usb: dwc3: gadget: Fix starting microframe for ISOC



The gadget wants to set the starting microframe for the first ISOC TRB
to 4 microframes in the future, but it does so by multiplying the
dep->interval. This only works if dep->interval = 1. For other intervals
it will put it 4 *intervals* in the future which may be way too much.

Fix so that it always adds just one interval or at least 4 microframes.

Signed-off-by: default avatarJohn Youn <johnyoun@synopsys.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
Git-commit: af771d731b8e31e6c5aced2b1b066edd16106a6f
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Signed-off-by: default avatarSriharsha Allenki <sallenki@codeaurora.org>
Change-Id: I3567f3a1b4160ac0069642873880e61fdc2c800e
parent e7ab8971
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1236,8 +1236,11 @@ static void __dwc3_gadget_start_isoc(struct dwc3 *dwc,
		return;
	}

	/* 4 micro frames in the future */
	uf = cur_uf + dep->interval * 4;
	/*
	 * Schedule the first trb for one interval in the future or at
	 * least 4 microframes.
	 */
	uf = cur_uf + max_t(u32, 4, dep->interval);

	ret = __dwc3_gadget_kick_transfer(dep, uf);
	if (ret < 0)