]> git.sur5r.net Git - openocd/blobdiff - src/jtag/drivers/ep93xx.c
Add read buffer to bitbang, improving performance.
[openocd] / src / jtag / drivers / ep93xx.c
index ccd979502e0122c3e9153e04123502331286fc18..36fc7774717a8fd949bf494082b87c0ae484e5af 100644 (file)
@@ -41,9 +41,9 @@ static volatile uint8_t *gpio_data_direction_register;
 
 /* low level command set
  */
-static int ep93xx_read(void);
-static void ep93xx_write(int tck, int tms, int tdi);
-static void ep93xx_reset(int trst, int srst);
+static bb_value_t ep93xx_read(void);
+static int ep93xx_write(int tck, int tms, int tdi);
+static int ep93xx_reset(int trst, int srst);
 
 static int ep93xx_init(void);
 static int ep93xx_quit(void);
@@ -67,12 +67,12 @@ static struct bitbang_interface ep93xx_bitbang = {
        .blink = 0,
 };
 
-static int ep93xx_read(void)
+static bb_value_t ep93xx_read(void)
 {
-       return !!(*gpio_data_register & TDO_BIT);
+       return (*gpio_data_register & TDO_BIT) ? BB_HIGH : BB_LOW;
 }
 
-static void ep93xx_write(int tck, int tms, int tdi)
+static int ep93xx_write(int tck, int tms, int tdi)
 {
        if (tck)
                output_value |= TCK_BIT;
@@ -91,10 +91,12 @@ static void ep93xx_write(int tck, int tms, int tdi)
 
        *gpio_data_register = output_value;
        nanosleep(&ep93xx_zzzz, NULL);
+
+       return ERROR_OK;
 }
 
 /* (1) assert or (0) deassert reset lines */
-static void ep93xx_reset(int trst, int srst)
+static int ep93xx_reset(int trst, int srst)
 {
        if (trst == 0)
                output_value |= TRST_BIT;
@@ -108,6 +110,8 @@ static void ep93xx_reset(int trst, int srst)
 
        *gpio_data_register = output_value;
        nanosleep(&ep93xx_zzzz, NULL);
+
+       return ERROR_OK;
 }
 
 static int set_gonk_mode(void)