Pavel Chromy: TCK returns to zero before state of reset line is changed.

git-svn-id: svn://svn.berlios.de/openocd/trunk@703 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
oharboe 2008-06-04 17:09:10 +00:00
parent 9f8d50bf81
commit 24092a5172
1 changed files with 21 additions and 6 deletions

View File

@ -573,10 +573,10 @@ int presto_bitq_out(int tms, int tdi, int tdo_req)
if (presto->jtag_tck == 0) if (presto->jtag_tck == 0)
{ {
presto_sendbyte(0xA4); presto_sendbyte(0xA4); /* jtag activity */
presto->jtag_tck = 1; presto->jtag_tck = 1; /* clock remains high after the function returns */
/* do just a single tick first, accelerated shifting needs TCK=1 */
} }
else if (!tdo_req && tms == presto->jtag_tms) else if (!tdo_req && tms == presto->jtag_tms)
{ {
if (presto->jtag_tdi_count == 0) if (presto->jtag_tdi_count == 0)
@ -617,7 +617,7 @@ int presto_bitq_out(int tms, int tdi, int tdo_req)
} }
if (tdo_req) if (tdo_req)
presto_sendbyte(0xD4 | cmdparam); presto_sendbyte(0xD4|cmdparam);
else else
presto_sendbyte(0xC4|cmdparam); presto_sendbyte(0xC4|cmdparam);
@ -634,8 +634,11 @@ int presto_bitq_flush(void)
presto->jtag_tdi_count = 0; presto->jtag_tdi_count = 0;
} }
presto_sendbyte(0xCA); if (presto->jtag_tck == 1)
presto->jtag_tck = 0; {
presto_sendbyte(0xCA);
presto->jtag_tck = 0;
}
presto_sendbyte(0xA0); presto_sendbyte(0xA0);
@ -664,6 +667,12 @@ int presto_bitq_sleep(unsigned long us)
{ {
long waits; long waits;
if (presto->jtag_tck == 1)
{
presto_sendbyte(0xCA);
presto->jtag_tck = 0;
}
if (us > 100000) if (us > 100000)
{ {
presto_bitq_flush(); presto_bitq_flush();
@ -683,6 +692,12 @@ int presto_bitq_reset(int trst, int srst)
{ {
unsigned char cmd; unsigned char cmd;
if (presto->jtag_tck == 1)
{
presto_sendbyte(0xCA);
presto->jtag_tck = 0;
}
cmd = 0xE8; cmd = 0xE8;
if (presto->jtag_tms) if (presto->jtag_tms)
cmd |= 0x04; cmd |= 0x04;