From 5f9e36712799e7737695384e3c82278af3ddf368 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 30 Dec 2016 14:57:22 +0100 Subject: [PATCH] kernel: spi: allow setting chipselect gpio to sleep Fixes issues on some ar71xx MikroTik RouterBoard devices Signed-off-by: Felix Fietkau --- ..._value_cansleep-for-setting-chipsele.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 target/linux/generic/patches-4.4/106-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch diff --git a/target/linux/generic/patches-4.4/106-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch b/target/linux/generic/patches-4.4/106-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch new file mode 100644 index 0000000000..57c9475359 --- /dev/null +++ b/target/linux/generic/patches-4.4/106-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch @@ -0,0 +1,21 @@ +From: Felix Fietkau +Date: Fri, 30 Dec 2016 14:53:45 +0100 +Subject: [PATCH] spi: use gpio_set_value_cansleep for setting chipselect GPIO + +Sleeping is safe inside spi_transfer_one_message, and some GPIO chips +need to sleep for setting values + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/spi/spi.c ++++ b/drivers/spi/spi.c +@@ -674,7 +674,7 @@ static void spi_set_cs(struct spi_device + enable = !enable; + + if (gpio_is_valid(spi->cs_gpio)) +- gpio_set_value(spi->cs_gpio, !enable); ++ gpio_set_value_cansleep(spi->cs_gpio, !enable); + else if (spi->master->set_cs) + spi->master->set_cs(spi, !enable); + } -- 2.30.2