]> git.sur5r.net Git - openocd/commitdiff
sysfsgpio: support broken gpio implementations
authorMatthew Campbell <mcampbell@izotope.com>
Tue, 24 Nov 2015 14:05:38 +0000 (09:05 -0500)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Tue, 29 Dec 2015 20:37:14 +0000 (20:37 +0000)
Change tests when reading from 'value' in sysfs from =='0' to !='1'.
This guards against broken sysfs GPIO implementations that return
non-zero for high rather than just '1' while still being clean and
correct code. Note that sysfs will never output a leading zero even
in a very broken implementation as that is covered in gpiolib.c, not
the offending driver.

Tested against broken Freescale kernel 3.14.38 on i.MX6SL.

Change-Id: Id05567bb8504b1babef33d6ee5172bceefeca8b8
Signed-off-by: Matthew Campbell <mcampbell@izotope.com>
Reviewed-on: http://openocd.zylin.com/3121
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/jtag/drivers/sysfsgpio.c

index e60181459db8218feb4a78ef43405db82bae214b..fd613c2d4832dc7aa8b15e0902d7076cab4ae7ce 100644 (file)
@@ -210,7 +210,7 @@ static int sysfsgpio_swdio_read(void)
                return 0;
        }
 
-       return buf[0] == '1';
+       return buf[0] != '0';
 }
 
 static void sysfsgpio_swdio_write(int swclk, int swdio)
@@ -259,7 +259,7 @@ static int sysfsgpio_read(void)
                return 0;
        }
 
-       return buf[0] == '1';
+       return buf[0] != '0';
 }
 
 /*