mfd: cros ec: spi: Fix "in progress" error signaling
authorShawn Nematbakhsh <shawnn@chromium.org>
Wed, 27 Sep 2017 21:35:27 +0000 (14:35 -0700)
committerLee Jones <lee.jones@linaro.org>
Wed, 29 Nov 2017 16:29:46 +0000 (16:29 +0000)
commit001dde9400d5c3e9e2ce2abe06c1efa70a25dfde
treea317ce7d796cb9896ebf94b1bfc51a832c156e68
parent85e9b13cbb130a3209f21bd7933933399c389ffe
mfd: cros ec: spi: Fix "in progress" error signaling

For host commands that take a long time to process, cros ec can return
early by signaling a EC_RES_IN_PROGRESS result. The host must then poll
status with EC_CMD_GET_COMMS_STATUS until completion of the command.

None of the above applies when data link errors are encountered. When
errors such as EC_SPI_PAST_END are encountered during command
transmission, it usually means the command was not received by the EC.
Treating such errors as if they were 'EC_RES_IN_PROGRESS' results is
almost always the wrong decision, and can result in host commands
silently being lost.

Reported-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/cros_ec_spi.c