summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Anderson <dianders@chromium.org>2019-05-15 09:48:13 -0700
committerEnric Balletbo i Serra <enric.balletbo@collabora.com>2019-05-24 11:35:30 +0200
commitac5bdfdc0e1ccce0f23898f5500874e31198f5c2 (patch)
tree925aa3022314271642bfd1fdd44939c566b2b5f1
parent2a5f857291c3ab594873fcf3ada88bcc98465739 (diff)
downloadlinux-stable-ac5bdfdc0e1ccce0f23898f5500874e31198f5c2.tar.gz
linux-stable-ac5bdfdc0e1ccce0f23898f5500874e31198f5c2.tar.bz2
linux-stable-ac5bdfdc0e1ccce0f23898f5500874e31198f5c2.zip
platform/chrome: cros_ec_spi: Request the SPI thread be realtime
All currently known ECs in the wild are very sensitive to timing. Specifically the ECs are known to drop a transfer if more than 8 ms passes from the assertion of the chip select until the transfer finishes. Let's use the new feature introduced in the patch (spi: Allow SPI devices to request the pumping thread be realtime") to request the SPI pumping thread be realtime. This means that if we get shunted off to the SPI thread for whatever reason we won't get downgraded to low priority. NOTES: - We still need to keep ourselves as high priority since the SPI core doesn't guarantee that all transfers end up on the pumping thread (in fact, it tries pretty hard to do them in the calling context). - If future Chrome OS ECs ever fix themselves to be less sensitive then we could consider adding a property (or compatible string) to not set this property. For now we need it across the board. Signed-off-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
-rw-r--r--drivers/platform/chrome/cros_ec_spi.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/platform/chrome/cros_ec_spi.c b/drivers/platform/chrome/cros_ec_spi.c
index 5877a572e0bd..006a8ff64057 100644
--- a/drivers/platform/chrome/cros_ec_spi.c
+++ b/drivers/platform/chrome/cros_ec_spi.c
@@ -740,6 +740,7 @@ static int cros_ec_spi_probe(struct spi_device *spi)
spi->bits_per_word = 8;
spi->mode = SPI_MODE_0;
+ spi->rt = true;
err = spi_setup(spi);
if (err < 0)
return err;