Hello Sanjay,
One point - should powerdebug unexport these free gpios when it exits? Otherwise, all the entries will remain in /sys/class/gpio/* and /sys/kernel/debug/gpio file until next reboot which user may not want.
-- Thanks, - Meraj
On Mon, Jun 2, 2014 at 2:46 PM, Sanjay Singh Rawat sanjay.rawat@linaro.org wrote:
- 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.rawat@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