* The sysfs value will read back either '0' or '1'. The trick here is to call
* lseek to bypass buffering in the sysfs kernel driver.
*/
-static int sysfsgpio_read(void)
+static bb_value_t sysfsgpio_read(void)
{
char buf[1];
return 0;
}
- return buf[0] != '0';
+ return buf[0] == '0' ? BB_LOW : BB_HIGH;
}
/*
* Seeing as this is the only function where the outputs are changed,
* we can cache the old value to avoid needlessly writing it.
*/
-static void sysfsgpio_write(int tck, int tms, int tdi)
+static int sysfsgpio_write(int tck, int tms, int tdi)
{
if (swd_mode) {
sysfsgpio_swdio_write(tck, tdi);
- return;
+ return ERROR_OK;
}
const char one[] = "1";
last_tdi = tdi;
last_tms = tms;
last_tck = tck;
+
+ return ERROR_OK;
}
/*
*
* (1) assert or (0) deassert reset lines
*/
-static void sysfsgpio_reset(int trst, int srst)
+static int sysfsgpio_reset(int trst, int srst)
{
LOG_DEBUG("sysfsgpio_reset");
const char one[] = "1";
if (bytes_written != 1)
LOG_WARNING("writing trst failed");
}
+
+ return ERROR_OK;
}
COMMAND_HANDLER(sysfsgpio_handle_jtag_gpionums)