Apparently revision 1689 "Added support for FT2232H
(gnICE+/ARM-USB-TINY-H) from Michael Hennerich/Adam Megacz." only ported
our original patch and missed a fix in our local repository on
blackfin.uclinux.org. I have committed this patch to install the fix.
This patch also fixes several remaining code style mismatch introduced
by r1689.
Jie
* src/tap/cable/ft2232.c (ft2232_gnice_init_common): Replace
argument frequency with is_ft2232h. Call ft2232_set_frequency
or ft2232h_set_frequency accordingly.
(ft2232_gnice_init, ft2232_gniceplus_init): Change accordingly.
(ft2232_armusbocd_init_common, ft2232_armusbocd_init,
ft2232_armusbtiny_h_init): Likewise.
diff --git a/src/tap/cable/ft2232.c b/src/tap/cable/ft2232.c
index fc2261c..26f031f 100644
--- a/src/tap/cable/ft2232.c
+++ b/src/tap/cable/ft2232.c
@@ -265,12 +265,12 @@ ft2232_set_frequency_common (urj_cable_t *cable, uint32_t new_frequency, uint32_
if (div >= (1 << 16))
{
div = (1 << 16) - 1;
- urj_warning( _("Warning: Setting lowest supported frequency for FT2232%s: %d\n"),
- max_frequency == FT2232H_MAX_TCK_FREQ ? "H" : "", max_frequency/div );
+ urj_warning (_("Warning: Setting lowest supported frequency for FT2232%s: %d\n"),
+ max_frequency == FT2232H_MAX_TCK_FREQ ? "H" : "", max_frequency/div);
}
if (max_frequency == FT2232H_MAX_TCK_FREQ)
- ft2232h_disable_clockdiv_by5( cable );
+ ft2232h_disable_clockdiv_by5 (cable);
/* send new divisor to device */
div -= 1;
@@ -291,13 +291,13 @@ ft2232_set_frequency_common (urj_cable_t *cable, uint32_t new_frequency, uint32_
static void
ft2232_set_frequency (urj_cable_t *cable, uint32_t new_frequency)
{
- ft2232_set_frequency_common( cable, new_frequency, FT2232_MAX_TCK_FREQ);
+ ft2232_set_frequency_common (cable, new_frequency, FT2232_MAX_TCK_FREQ);
}
static void
ft2232h_set_frequency (urj_cable_t *cable, uint32_t new_frequency)
{
- ft2232_set_frequency_common( cable, new_frequency, FT2232H_MAX_TCK_FREQ);
+ ft2232_set_frequency_common (cable, new_frequency, FT2232H_MAX_TCK_FREQ);
}
static int
@@ -397,7 +397,7 @@ ft2232_jtagkey_init (urj_cable_t *cable)
static int
-ft2232_armusbocd_init_common (urj_cable_t *cable, uint32_t frequency)
+ft2232_armusbocd_init_common (urj_cable_t *cable, int is_ft2232h)
{
params_t *params = (params_t *) cable->params;
urj_tap_cable_cx_cmd_root_t *cmd_root = &(params->cmd_root);
@@ -438,7 +438,10 @@ ft2232_armusbocd_init_common (urj_cable_t *cable, uint32_t frequency)
urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_value);
urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_dir);
- ft2232_set_frequency (cable, frequency);
+ if (is_ft2232h)
+ ft2232h_set_frequency (cable, FT2232H_MAX_TCK_FREQ);
+ else
+ ft2232_set_frequency (cable, FT2232_MAX_TCK_FREQ);
params->bit_trst = BIT_ARMUSBOCD_nTRST + 8; /* member of HIGH byte */
params->bit_reset = BIT_ARMUSBOCD_nTSRST + 8; /* member of HIGH byte */
@@ -452,18 +455,18 @@ ft2232_armusbocd_init_common (urj_cable_t *cable, uint32_t frequency)
static int
ft2232_armusbocd_init (urj_cable_t *cable)
{
- return ft2232_armusbocd_init_common (cable, FT2232_MAX_TCK_FREQ);
+ return ft2232_armusbocd_init_common (cable, 0);
}
static int
ft2232_armusbtiny_h_init (urj_cable_t *cable)
{
- return ft2232_armusbocd_init_common (cable, FT2232H_MAX_TCK_FREQ);
+ return ft2232_armusbocd_init_common (cable, 1);
}
static int
-ft2232_gnice_init_common (urj_cable_t *cable, uint32_t frequency)
+ft2232_gnice_init_common (urj_cable_t *cable, int is_ft2232h)
{
params_t *params = (params_t *) cable->params;
urj_tap_cable_cx_cmd_root_t *cmd_root = &(params->cmd_root);
@@ -495,7 +498,12 @@ ft2232_gnice_init_common (urj_cable_t *cable, uint32_t frequency)
urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_value);
urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_dir);
- ft2232_set_frequency (cable, frequency);
+ if (is_ft2232h)
+ /* On ADI boards with the onboard EZKIT Debug Agent, max TCK where things
+ work is 15MHz. */
+ ft2232h_set_frequency (cable, FT2232H_MAX_TCK_FREQ / 2);
+ else
+ ft2232_set_frequency (cable, FT2232_MAX_TCK_FREQ);
params->bit_trst = BIT_GNICE_nTRST + 8; /* member of HIGH byte */
params->bit_reset = -1; /* not used */
@@ -509,13 +517,13 @@ ft2232_gnice_init_common (urj_cable_t *cable, uint32_t frequency)
static int
ft2232_gnice_init (urj_cable_t *cable)
{
- return ft2232_gnice_init_common (cable, FT2232_MAX_TCK_FREQ);
+ return ft2232_gnice_init_common (cable, 0);
}
static int
ft2232_gniceplus_init (urj_cable_t *cable)
{
- return ft2232_gnice_init_common (cable, FT2232H_MAX_TCK_FREQ);
+ return ft2232_gnice_init_common (cable, 1);
}
static int
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
UrJTAG-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/urjtag-development