linux/drivers/staging
Adam Thomson b9faab6a01 typec: tcpm: fusb302: Resolve out of order messaging events
[ Upstream commit ab69f61321 ]

The expectation in the FUSB302 driver is that a TX_SUCCESS event
should occur after a message has been sent, but before a GCRCSENT
event is raised to indicate successful receipt of a message from
the partner. However in some circumstances it is possible to see
the hardware raise a GCRCSENT event before a TX_SUCCESS event
is raised. The upshot of this is that the GCRCSENT handling portion
of code ends up reporting the GoodCRC message to TCPM because the
TX_SUCCESS event hasn't yet arrived to trigger a consumption of it.
When TX_SUCCESS is then raised by the chip it ends up consuming the
actual message that was meant for TCPM, and this incorrect sequence
results in a hard reset from TCPM.

To avoid this problem, this commit updates the message reading
code to check whether a GoodCRC message was received or not. Based
on this check it will either report that the previous transmission
has completed or it will pass the msg data to TCPM for futher
processing. This way the incorrect ordering of the events no longer
matters.

Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2018-03-19 08:42:48 +01:00
..
android staging: android: ashmem: Fix lockdep issue during llseek 2018-03-19 08:42:45 +01:00
board License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ccree staging: ccree: Uninitialized return in ssi_ahash_import() 2018-02-25 11:08:02 +01:00
clocking-wizard staging: clocking-wizard: Fix incorrect type of speed grade 2016-10-25 09:54:32 +02:00
comedi staging: comedi: fix comedi_nsamples_left. 2018-03-19 08:42:45 +01:00
dgnc License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
emxx_udc staging: emxx_udc: Update "reserved" registers name 2017-05-15 07:42:00 +02:00
fbtft License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fsl-dpaa2 staging: fsl-dpaa2/eth: Account for Rx FD buffers on error path 2017-12-10 13:40:41 +01:00
fsl-mc staging: fsl-mc: fix build testing on x86 2018-02-25 11:07:52 +01:00
fwserial License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gdm724x License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
goldfish staging: goldfish: (Coding Style) Fixed parenthesis alignment. 2017-08-31 18:21:37 +02:00
greybus staging: greybus: light: Release memory obtained by kasprintf 2017-12-25 14:26:30 +01:00
gs_fpgaboot staging: gs_fpgaboot: return valid error codes 2017-07-28 17:07:37 -07:00
iio staging: iio: ad5933: switch buffer mode to software 2018-02-25 11:07:53 +01:00
irda staging: irda: fix init level for irda core 2017-08-30 10:15:12 -07:00
ks7010 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
lustre crypto: hash - annotate algorithms taking optional key 2018-02-16 20:23:00 +01:00
media License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
most License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mt29f_spinand staging: mt29f_spinand: Enable the read ECC before program the page 2017-09-18 12:25:31 +02:00
netlogic net: phy: Make phy_ethtool_ksettings_get return void 2017-06-13 12:59:06 -04:00
nvec License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
octeon staging: octeon: fix line over 80 characters 2017-08-18 15:57:17 -07:00
octeon-usb staging: octeon-usb: use correct function for hcd cleanup 2017-05-15 07:43:55 +02:00
olpc_dcon License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pi433 staging: pi433: Move limit check to switch default to kill warning 2017-09-18 12:25:31 +02:00
rtl8188eu staging: rtl8188eu: Fix incorrect response to SIOCGIWESSID 2018-02-03 17:39:17 +01:00
rtl8192e License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtl8192u License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtl8712 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtl8723bs License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtlwifi staging: rtl8822be: fix missing null check on dev_alloc_skb return 2018-03-19 08:42:48 +01:00
rts5208 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
skein License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sm750fb staging: sm750fb: Fix parameter mistake in poke32 2017-11-21 09:49:24 +01:00
speakup License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
typec typec: tcpm: fusb302: Resolve out of order messaging events 2018-03-19 08:42:48 +01:00
unisys License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vboxvideo staging: vboxvideo: Fix reporting invalid suggested-offset-properties 2017-11-21 09:49:24 +01:00
vc04_services License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vme License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vt6655 vt6655: Fix a possible sleep-in-atomic bug in vt6655_suspend 2017-12-20 10:10:35 +01:00
vt6656 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
wilc1000 staging: wilc1000: Fix bssid buffer offset in Txq 2017-11-21 09:49:23 +01:00
wlan-ng License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xgifb License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-09-06 14:45:08 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00