tree 7e4c6a44ae42846cb5c283b3b8c879ba5c551255
parent dcb9cf39c533a95be7dd0b2f7dfd73e04bf17c2d
parent d2e9a13a388304bc2a7b25a6c34c6e2ab1540a5d
author Greg Kroah-Hartman <gregkh@linuxfoundation.org> 1347396768 -0700
committer Greg Kroah-Hartman <gregkh@linuxfoundation.org> 1347396768 -0700
mergetag object d2e9a13a388304bc2a7b25a6c34c6e2ab1540a5d
 type commit
 tag dwc3-for-v3.7
 tagger Felipe Balbi <balbi@ti.com> 1347293305 +0300
 
 usb: dwc3: patches for v3.7 merge window
 
 Some much needed changes for our dwc3 driver. First there's a
 rework on the ep0 handling due to some Silicon issue we uncovered
 which affects all users of this IP core (there's a missing
 XferNotReady(DATA) event in some conditions). This issue which
 show up as a SETUP transfers which wouldn't complete ever and
 we would fail TD 7.06 of the Link Layer Test from USB-IF and
 Lecroy's USB3 Exerciser.
 
 We also fix a long standing bug regarding EP0 enable sequencing
 where we weren't setting a particular bit (Ignore Sequence
 Number). Since we never saw any problems caused by that, it
 didn't deserve being sent to stable tree.
 
 On this pull request we also fix Burst Size initialization which
 should be done only in SuperSpeed and we were mistakenly setting
 Burst Size to the maximum value on non-SuperSpeed mode. Again,
 since we never saw any problems caused by that, we're not sending
 this patch to stable.
 
 There's also a memory ordering fix regarding usage of bitmaps in
 dwc3 driver.
 
 You will also find some sparse warnings fix, a fix for missed
 isochronous packets when the endpoint is already busy, and a
 fix for synchronization delay on dwc3_stop_active_transfer().
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJQThLOAAoJEIaOsuA1yqREPB0P/igbry8UxYEfFA6+ojRmeS3x
 AztAUUixXsl44lQOLtl/VSuKqvhiIJ7VniBgL+nj1HdeJPMG6bdjBLwl2LjYBCQq
 xZbv07isqHqg8ntiGwOADQztU7p4BPGpDztogsTlNjUhclCvUwE9ZTf4Moe7Cnk8
 TePUypvt3WQceWBpZxMd9Zirpmls0UTUW287OgQ+ik6QccokzQXxfzD5z3tS0bwo
 nRjWReihPJU68p5wcbILjo4VmhBsllYrRxB8CIatqxfjj6OssJ0ifcO6+jn7bnc5
 T8OStPK8FigTLdNuV4sx3MCu9ItSY1+Y+gRnfXpdbkEqU303qI/rOC0jnmEhAhr1
 /mS9llhCkfknpvL/DSlQnYzwfNA4wFjTLNoxOEDNkYNE84T+YAfZI1DGBvwJoYlZ
 NELQTJB2enVADmMyOwQcXwx7wu2uW7Sb6FcbYpIsZyADZVJPqtjG1o09d19xL0z5
 YdP23D/A6/I6SySvW8cDy9F3ouCQfrkeEd71KF2+4s7zHZhU9cqFA65xOZ7FRB++
 nUsTHCn07doqp+5vsRLV0BKPk3YH9mEg0aVv4ClSE57wZFPFAqXU5GtEgJ9mBAnv
 3poV22oTvGdWuG3vzAAk83pnQPyxxv4DgDLc3gaKZXhecLDRp0O4uucuHrmyV5tn
 eynhmX9bDB5hLGN5KJtX
 =Lqwl
 -----END PGP SIGNATURE-----

Merge tag 'dwc3-for-v3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next

usb: dwc3: patches for v3.7 merge window

Some much needed changes for our dwc3 driver. First there's a
rework on the ep0 handling due to some Silicon issue we uncovered
which affects all users of this IP core (there's a missing
XferNotReady(DATA) event in some conditions). This issue which
show up as a SETUP transfers which wouldn't complete ever and
we would fail TD 7.06 of the Link Layer Test from USB-IF and
Lecroy's USB3 Exerciser.

We also fix a long standing bug regarding EP0 enable sequencing
where we weren't setting a particular bit (Ignore Sequence
Number). Since we never saw any problems caused by that, it
didn't deserve being sent to stable tree.

On this pull request we also fix Burst Size initialization which
should be done only in SuperSpeed and we were mistakenly setting
Burst Size to the maximum value on non-SuperSpeed mode. Again,
since we never saw any problems caused by that, we're not sending
this patch to stable.

There's also a memory ordering fix regarding usage of bitmaps in
dwc3 driver.

You will also find some sparse warnings fix, a fix for missed
isochronous packets when the endpoint is already busy, and a
fix for synchronization delay on dwc3_stop_active_transfer().
