]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/spi/spi-dw-mmio.c
staging: board: disable as it breaks the build
[karo-tx-linux.git] / drivers / spi / spi-dw-mmio.c
index 1492f5ee9aaad702b1f6c490be4d38c1ac6091a0..a5cba14ac3d2f6cce6ee27a1caf2c050a98082b8 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/spi/spi.h>
 #include <linux/scatterlist.h>
 #include <linux/module.h>
+#include <linux/of_gpio.h>
 
 #include "spi-dw.h"
 
@@ -70,6 +71,27 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
        dws->num_cs = 4;
        dws->max_freq = clk_get_rate(dwsmmio->clk);
 
+       if (pdev->dev.of_node) {
+               int i;
+
+               for (i = 0; i < dws->num_cs; i++) {
+                       int cs_gpio = of_get_named_gpio(pdev->dev.of_node,
+                                       "cs-gpios", i);
+
+                       if (cs_gpio == -EPROBE_DEFER) {
+                               ret = cs_gpio;
+                               goto out;
+                       }
+
+                       if (gpio_is_valid(cs_gpio)) {
+                               ret = devm_gpio_request(&pdev->dev, cs_gpio,
+                                               dev_name(&pdev->dev));
+                               if (ret)
+                                       goto out;
+                       }
+               }
+       }
+
        ret = dw_spi_add_host(&pdev->dev, dws);
        if (ret)
                goto out;