GPIO direction should be set once right after exporting. There's no need
to reset it again - in fact it's a bug which causes the probe to be reset
every time the value is read/set and gives incorrect results when reading
the GPIO values with direction == 'in'.
Signed-off-by: Bartosz Golaszewski <redacted>
if (exported)
return 0; /* Already exported. */
+ status = sr_gpio_set_direction(gpio, GPIO_DIR_OUT);
+ if (status < 0)
+ return status;
+
buf = g_string_sized_new(16);
g_string_printf(buf, "%u\n", gpio);
status = open_and_write("/sys/class/gpio/export", buf->str);
if (status < 0)
return status;
- status = sr_gpio_set_direction(gpio, GPIO_DIR_OUT);
- if (status < 0)
- return status;
-
status = sr_gpio_set_value(gpio, value);
if (status < 0)
return status;
if (status < 0)
return status;
- status = sr_gpio_set_direction(gpio, GPIO_DIR_IN);
- if (status < 0)
- return status;
-
return sr_gpio_get_value(gpio);
}