From 2c4f7f1dd4b75f8d958ca66f971ead3adc81d24f Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Mon, 7 Mar 2011 15:11:28 +0100 Subject: jlink: add detect hw type Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Cc: Nicolas Ferre Cc: Patrice Vilchez --- src/jtag/drivers/jlink.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/jtag') diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index 6507403e..174f7b34 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -159,6 +159,20 @@ static char *jlink_cap_str[] = { /* max speed 12MHz v5.0 jlink */ #define JLINK_MAX_SPEED 12000 +/* J-Link hardware versions */ +#define JLINK_HW_TYPE_JLINK 0 +#define JLINK_HW_TYPE_JTRACE 1 +#define JLINK_HW_TYPE_FLASHER 2 +#define JLINK_HW_TYPE_JLINK_PRO 3 +#define JLINK_HW_TYPE_MAX 4 + +static char *jlink_hw_type_str[] = { + "J-Link", + "J-Trace", + "Flasher", + "J-Link Pro", +}; + /* Queue command functions */ static void jlink_end_state(tap_state_t state); static void jlink_state_move(void); @@ -206,6 +220,7 @@ static uint16_t vids[] = { VID, 0 }; static uint16_t pids[] = { PID, 0 }; static uint32_t jlink_caps; +static uint32_t jlink_hw_type; /***************************************************************************/ /* External interface implementation */ @@ -687,10 +702,16 @@ static int jlink_get_version_info(void) uint32_t jlink_hw_version = buf_get_u32(usb_in_buffer, 0, 32); uint32_t major_revision = (jlink_hw_version / 10000) % 100; + jlink_hw_type = (jlink_hw_version / 1000000) % 100; if (major_revision >= 5) jlink_hw_jtag_version = 3; LOG_INFO("J-Link hw version %i", (int)jlink_hw_version); + + if (jlink_hw_type >= JLINK_HW_TYPE_MAX) + LOG_INFO("J-Link hw type uknown 0x%x", jlink_hw_type); + else + LOG_INFO("J-Link hw type %s", jlink_hw_type_str[jlink_hw_type]); } if (jlink_caps & (1 << EMU_CAP_GET_MAX_BLOCK_SIZE)) -- cgit v1.2.3