- GPIOs in the SoC will be free/used state, this patch make free gpios
accessible to the user by exporting them.
- bug 1229658

Signed-off-by: Sanjay Singh Rawat <sanjay.ra...@linaro.org>
---
 gpio.c |   27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/gpio.c b/gpio.c
index 4a42cb7..39480b0 100644
--- a/gpio.c
+++ b/gpio.c
@@ -320,10 +320,10 @@ static struct display_ops gpio_ops = {
        .change = gpio_change,
 };
 
-void export_gpios(void)
+void export_free_gpios(void)
 {
        FILE *fgpio, *fgpio_export;
-       int gpio[256], num = 0;
+       int i, gpio_max = 0;
        char *line = NULL;
        ssize_t read, len;
 
@@ -340,15 +340,18 @@ void export_gpios(void)
        }
 
        /* export the gpios */
-       while (read = getline(&line, &len, fgpio) != -1) {
-               char *str;
-
-               if (strstr(line, "gpio-")) {
-                       str = strtok(line, " ");
-                       sscanf(str, "gpio-%d", &gpio[num]);
-                       fprintf(fgpio_export, "%d", gpio[num]);
-                       num++;
-               }
+       while ((read = getline(&line, &len, fgpio)) != -1) {
+               if (strstr(line, "GPIOs"))
+                       sscanf(line, "%*[^-]-%d%*", &gpio_max);
+       }
+
+       printf("log: total gpios = %d\n", gpio_max);
+       for (i = 0 ; i <= gpio_max ; i++) {
+               char command[50] = "";
+
+               sprintf(command, "echo %d > /sys/class/gpio/export", i);
+               if (system(command) < 0)
+                       printf("error: failed to export gpio-%d\n", i);
        }
 out:
        return;
@@ -368,7 +371,7 @@ int gpio_init(void)
        if (access(SYSFS_GPIO, F_OK))
                gpio_error = true; /* set the flag */
 
-       export_gpios();
+       export_free_gpios();
 
        gpio_tree = tree_load(SYSFS_GPIO, gpio_filter_cb, false);
        if (!gpio_tree)
-- 
1.7.10.4


_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to