adapter speed: require init script setting and centralize activation from drivers to core.c
Signed-off-by: Jonas Hörberg <jhorberg@sauer-danfoss.com>__archive__
parent
5c739b148e
commit
e3f3f60a02
|
@ -124,7 +124,7 @@ static struct jtag_event_callback *jtag_event_callbacks;
|
||||||
static int speed_khz = 0;
|
static int speed_khz = 0;
|
||||||
/* speed to fallback to when RCLK is requested but not supported */
|
/* speed to fallback to when RCLK is requested but not supported */
|
||||||
static int rclk_fallback_speed_khz = 0;
|
static int rclk_fallback_speed_khz = 0;
|
||||||
static enum {CLOCK_MODE_SPEED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode;
|
static enum {CLOCK_MODE_UNSELECTED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode;
|
||||||
static int jtag_speed = 0;
|
static int jtag_speed = 0;
|
||||||
|
|
||||||
static struct jtag_interface *jtag = NULL;
|
static struct jtag_interface *jtag = NULL;
|
||||||
|
@ -1389,10 +1389,20 @@ int adapter_init(struct command_context *cmd_ctx)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CLOCK_MODE_UNSELECTED == clock_mode)
|
||||||
|
{
|
||||||
|
LOG_ERROR("An adapter speed is not selected in the init script."
|
||||||
|
" Insert a call to adapter_khz or jtag_rclk to proceed.");
|
||||||
|
return ERROR_JTAG_INIT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
int requested_khz = jtag_get_speed_khz();
|
int requested_khz = jtag_get_speed_khz();
|
||||||
int actual_khz = requested_khz;
|
int actual_khz = requested_khz;
|
||||||
int jtag_speed_var;
|
int jtag_speed_var;
|
||||||
retval = jtag_get_speed(&jtag_speed_var);
|
retval = jtag_get_speed(&jtag_speed_var);
|
||||||
|
if (retval != ERROR_OK)
|
||||||
|
return retval;
|
||||||
|
retval = jtag->speed(jtag_speed_var);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
retval = jtag_get_speed_readable(&actual_khz);
|
retval = jtag_get_speed_readable(&actual_khz);
|
||||||
|
@ -1647,9 +1657,6 @@ int jtag_get_speed(int *speed)
|
||||||
{
|
{
|
||||||
switch(clock_mode)
|
switch(clock_mode)
|
||||||
{
|
{
|
||||||
case CLOCK_MODE_SPEED:
|
|
||||||
*speed = jtag_speed;
|
|
||||||
break;
|
|
||||||
case CLOCK_MODE_KHZ:
|
case CLOCK_MODE_KHZ:
|
||||||
adapter_khz_to_speed(jtag_get_speed_khz(), speed);
|
adapter_khz_to_speed(jtag_get_speed_khz(), speed);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -506,12 +506,6 @@ static int amt_jtagaccel_init(void)
|
||||||
aw_control_fsm |= 0x04;
|
aw_control_fsm |= 0x04;
|
||||||
AMT_AW(aw_control_fsm);
|
AMT_AW(aw_control_fsm);
|
||||||
|
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
amt_jtagaccel_speed(jtag_speed_var);
|
|
||||||
|
|
||||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||||
if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
|
if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
|
||||||
aw_control_rst &= ~0x8;
|
aw_control_rst &= ~0x8;
|
||||||
|
|
|
@ -2485,12 +2485,6 @@ static int ft2232_init(void)
|
||||||
return ERROR_JTAG_INIT_FAILED;
|
return ERROR_JTAG_INIT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
int jtag_speed_var;
|
|
||||||
retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
ft2232_speed(jtag_speed_var);
|
|
||||||
|
|
||||||
buf[0] = 0x85; /* Disconnect TDI/DO to TDO/DI for Loopback */
|
buf[0] = 0x85; /* Disconnect TDI/DO to TDO/DI for Loopback */
|
||||||
if ((retval = ft2232_write(buf, 1, &bytes_written)) != ERROR_OK)
|
if ((retval = ft2232_write(buf, 1, &bytes_written)) != ERROR_OK)
|
||||||
{
|
{
|
||||||
|
|
|
@ -529,11 +529,6 @@ static int gw16012_init(void)
|
||||||
gw16012_input(&status_port);
|
gw16012_input(&status_port);
|
||||||
gw16012_msb = (status_port & 0x80) ^ 0x80;
|
gw16012_msb = (status_port & 0x80) ^ 0x80;
|
||||||
|
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
gw16012_speed(jtag_speed_var);
|
|
||||||
gw16012_reset(0, 0);
|
gw16012_reset(0, 0);
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -439,11 +439,6 @@ static int jlink_init(void)
|
||||||
jlink_reset(0, 0);
|
jlink_reset(0, 0);
|
||||||
jtag_sleep(3000);
|
jtag_sleep(3000);
|
||||||
jlink_tap_init();
|
jlink_tap_init();
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
jlink_speed(jtag_speed_var);
|
|
||||||
|
|
||||||
/* v5/6 jlink seems to have an issue if the first tap move
|
/* v5/6 jlink seems to have an issue if the first tap move
|
||||||
* is not divisible by 8, so we send a TLR on first power up */
|
* is not divisible by 8, so we send a TLR on first power up */
|
||||||
|
|
|
@ -384,10 +384,6 @@ static int parport_init(void)
|
||||||
|
|
||||||
bitbang_interface = &parport_bitbang;
|
bitbang_interface = &parport_bitbang;
|
||||||
|
|
||||||
int retval = jtag_get_speed(&wait_states);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -769,13 +769,6 @@ static int presto_jtag_init(void)
|
||||||
}
|
}
|
||||||
LOG_INFO("PRESTO open, serial number '%s'", presto->serial);
|
LOG_INFO("PRESTO open, serial number '%s'", presto->serial);
|
||||||
|
|
||||||
/* use JTAG speed setting from configuration file */
|
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
presto_jtag_speed(jtag_speed_var);
|
|
||||||
|
|
||||||
bitq_interface = &presto_bitq;
|
bitq_interface = &presto_bitq;
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1771,11 +1771,6 @@ int rlink_init(void)
|
||||||
|
|
||||||
tap_state_queue_init();
|
tap_state_queue_init();
|
||||||
dtc_queue_init();
|
dtc_queue_init();
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
rlink_speed(jtag_speed_var);
|
|
||||||
rlink_reset(0, 0);
|
rlink_reset(0, 0);
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -474,12 +474,6 @@ static int usb_blaster_init(void)
|
||||||
|
|
||||||
bitbang_interface = &usb_blaster_bitbang;
|
bitbang_interface = &usb_blaster_bitbang;
|
||||||
|
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
usb_blaster_speed(jtag_speed_var);
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#if BUILD_USB_BLASTER_FTD2XX == 1
|
#if BUILD_USB_BLASTER_FTD2XX == 1
|
||||||
if ((status = FT_Purge(ftdih, FT_PURGE_RX | FT_PURGE_TX)) != FT_OK)
|
if ((status = FT_Purge(ftdih, FT_PURGE_RX | FT_PURGE_TX)) != FT_OK)
|
||||||
|
|
|
@ -1505,11 +1505,6 @@ int zy1000_init(void)
|
||||||
|
|
||||||
/* deassert resets. Important to avoid infinite loop waiting for SRST to deassert */
|
/* deassert resets. Important to avoid infinite loop waiting for SRST to deassert */
|
||||||
zy1000_reset(0, 0);
|
zy1000_reset(0, 0);
|
||||||
int jtag_speed_var;
|
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
|
||||||
if (retval != ERROR_OK)
|
|
||||||
return retval;
|
|
||||||
zy1000_speed(jtag_speed_var);
|
|
||||||
|
|
||||||
#if BUILD_ZY1000_MASTER
|
#if BUILD_ZY1000_MASTER
|
||||||
#if BUILD_ECOSBOARD
|
#if BUILD_ECOSBOARD
|
||||||
|
|
Loading…
Reference in New Issue