summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-2.6.31/ben-nanonote/400-spi-gpio-3wire.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-2.6.31/ben-nanonote/400-spi-gpio-3wire.patch')
-rw-r--r--recipes/linux/linux-2.6.31/ben-nanonote/400-spi-gpio-3wire.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/recipes/linux/linux-2.6.31/ben-nanonote/400-spi-gpio-3wire.patch b/recipes/linux/linux-2.6.31/ben-nanonote/400-spi-gpio-3wire.patch
new file mode 100644
index 0000000000..d05d9d3486
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/ben-nanonote/400-spi-gpio-3wire.patch
@@ -0,0 +1,37 @@
+--- a/drivers/spi/spi_gpio.c
++++ b/drivers/spi/spi_gpio.c
+@@ -254,9 +254,11 @@ spi_gpio_request(struct spi_gpio_platfor
+ if (value)
+ goto done;
+
+- value = spi_gpio_alloc(SPI_MISO_GPIO, label, true);
+- if (value)
+- goto free_mosi;
++ if (SPI_MISO_GPIO != SPI_MOSI_GPIO) {
++ value = spi_gpio_alloc(SPI_MISO_GPIO, label, true);
++ if (value)
++ goto free_mosi;
++ }
+
+ value = spi_gpio_alloc(SPI_SCK_GPIO, label, false);
+ if (value)
+@@ -319,7 +321,8 @@ static int __devinit spi_gpio_probe(stru
+ if (status < 0) {
+ spi_master_put(spi_gpio->bitbang.master);
+ gpio_free:
+- gpio_free(SPI_MISO_GPIO);
++ if (SPI_MISO_GPIO != SPI_MOSI_GPIO)
++ gpio_free(SPI_MISO_GPIO);
+ gpio_free(SPI_MOSI_GPIO);
+ gpio_free(SPI_SCK_GPIO);
+ spi_master_put(master);
+@@ -343,7 +346,8 @@ static int __devexit spi_gpio_remove(str
+
+ platform_set_drvdata(pdev, NULL);
+
+- gpio_free(SPI_MISO_GPIO);
++ if (SPI_MISO_GPIO != SPI_MOSI_GPIO)
++ gpio_free(SPI_MISO_GPIO);
+ gpio_free(SPI_MOSI_GPIO);
+ gpio_free(SPI_SCK_GPIO);
+