From: Javier Viguera Date: Tue, 28 Nov 2017 17:39:05 +0100 Subject: [PATCH] gpio,pwm: add delay to allow udev rules to complete After exporting a GPIO or PWM, we need to give some time for udev rules to complete, before actually trying to access the newly created entries in the sysfs. This solves a problem, where udev was setting the mode and group of the newly created files, so they are accessible for users (not root) belonging to that group. Upstream-Status: Inappropriate [DEY specific] Signed-off-by: Javier Viguera --- lib/gpio.c | 3 +++ lib/pwm.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/lib/gpio.c b/lib/gpio.c index bc509f8f09d7..527f2be649a4 100644 --- a/lib/gpio.c +++ b/lib/gpio.c @@ -104,6 +104,9 @@ libsoc_gpio_request (unsigned int gpio_id, gpio_mode mode) if (file_close (fd)) return NULL; + /* Give udev some time to execute the rules of the exported GPIO */ + usleep(200000); + sprintf (tmp_str, "/sys/class/gpio/gpio%d", gpio_id); if (!file_valid (tmp_str)) diff --git a/lib/pwm.c b/lib/pwm.c index 94a20d9be281..ed6dec8ee2a9 100644 --- a/lib/pwm.c +++ b/lib/pwm.c @@ -88,6 +88,9 @@ pwm* libsoc_pwm_request (unsigned int chip, unsigned int pwm_num, return NULL; } + /* Give udev some time to execute the rules of the exported PWM */ + usleep(200000); + sprintf(tmp_str, "/sys/class/pwm/pwmchip%d/pwm%d/enable", chip, pwm_num); if (!file_valid(tmp_str))