aboutsummaryrefslogtreecommitdiff
path: root/src/platforms/libftdi/swdptap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platforms/libftdi/swdptap.c')
-rw-r--r--src/platforms/libftdi/swdptap.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/src/platforms/libftdi/swdptap.c b/src/platforms/libftdi/swdptap.c
index be329d8..6aafa7d 100644
--- a/src/platforms/libftdi/swdptap.c
+++ b/src/platforms/libftdi/swdptap.c
@@ -26,7 +26,7 @@
#include <assert.h>
#include <ftdi.h>
-#include "platform.h"
+#include "general.h"
#include "swdptap.h"
static void swdptap_turnaround(uint8_t dir);
@@ -40,36 +40,36 @@ int swdptap_init(void)
assert(ftdic != NULL);
if((err = ftdi_set_bitmode(ftdic, 0xAB, BITMODE_BITBANG)) != 0) {
- fprintf(stderr, "ftdi_set_bitmode: %d: %s\n",
+ fprintf(stderr, "ftdi_set_bitmode: %d: %s\n",
err, ftdi_get_error_string(ftdic));
abort();
}
- assert(ftdi_write_data(ftdic, "\xAB\xA8", 2) == 2);
+ assert(ftdi_write_data(ftdic, (void*)"\xAB\xA8", 2) == 2);
/* This must be investigated in more detail.
* As described in STM32 Reference Manual... */
- swdptap_seq_out(0xFFFF, 16);
+ swdptap_seq_out(0xFFFF, 16);
swdptap_reset();
- swdptap_seq_out(0xE79E, 16); /* 0b0111100111100111 */
+ swdptap_seq_out(0xE79E, 16); /* 0b0111100111100111 */
swdptap_reset();
- swdptap_seq_out(0, 16);
+ swdptap_seq_out(0, 16);
return 0;
}
void swdptap_reset(void)
{
- swdptap_turnaround(0);
- /* 50 clocks with TMS high */
- for(int i = 0; i < 50; i++) swdptap_bit_out(1);
+ swdptap_turnaround(0);
+ /* 50 clocks with TMS high */
+ for(int i = 0; i < 50; i++)
+ swdptap_bit_out(1);
}
static void swdptap_turnaround(uint8_t dir)
{
static uint8_t olddir = 0;
- //DEBUG("%s", dir ? "\n-> ":"\n<- ");
platform_buffer_flush();
if(dir == olddir) return;
@@ -79,22 +79,19 @@ static void swdptap_turnaround(uint8_t dir)
assert(ftdi_set_bitmode(ftdic, 0xA3, BITMODE_BITBANG) == 0);
/* One clock cycle */
- ftdi_write_data(ftdic, "\xAB\xA8", 2);
+ ftdi_write_data(ftdic, (void *)"\xAB\xA8", 2);
if(!dir) /* SWDIO goes to output */
assert(ftdi_set_bitmode(ftdic, 0xAB, BITMODE_BITBANG) == 0);
}
-static uint8_t swdptap_bit_in(void)
+static uint8_t swdptap_bit_in(void)
{
uint8_t ret;
- //ftdi_read_data(ftdic, &ret, 1);
ftdi_read_pins(ftdic, &ret);
ret &= 0x08;
- ftdi_write_data(ftdic, "\xA1\xA0", 2);
-
- //DEBUG("%d", ret?1:0);
+ ftdi_write_data(ftdic, (void *)"\xA1\xA0", 2);
return ret;
}
@@ -103,13 +100,10 @@ static void swdptap_bit_out(uint8_t val)
{
uint8_t buf[3] = "\xA0\xA1\xA0";
- //DEBUG("%d", val);
-
if(val) {
for(int i = 0; i < 3; i++)
buf[i] |= 0x08;
}
- //ftdi_write_data(ftdic, buf, 3);
platform_buffer_write(buf, 3);
}