This patch just includes some code to look up a manufacturer name given 
parts of idcode. You use it like:

uint64_t idcode = urj_tap_register_get_value (did);
unsigned int Mfg  = (unsigned int) EXTRACT_MFG(idcode);
unsigned int Bank = (unsigned int) EXTRACT_JEP106_BANK(idcode);
unsigned int Id   = (unsigned int) EXTRACT_JEP106_ID(idcode);
unsigned int Part = (unsigned int) EXTRACT_PART(idcode);
unsigned int Ver  = (unsigned int) EXTRACT_VER(idcode);

if (part->manufacturer_name[0] == '\0') {
        const char *str = jep106_manufacturer(Bank, Id);
        if (str == NULL) {
                snprintf(part->manufacturer_name, URJ_PART_MANUFACTURER_MAXLEN 
+ 1, "0x%04x", Mfg);
        } else {
                snprintf(part->manufacturer_name, URJ_PART_MANUFACTURER_MAXLEN 
+ 1, "%s", str);
        }
}
if (part->part_name[0] == '\0') {
        snprintf(part->part_name, URJ_PART_PART_MAXLEN + 1, "0x%04x", Part);
}
if (part->stepping[0] == '\0') {
        snprintf(part->stepping, URJ_PART_STEPPING_MAXLEN + 1, "0x%02x", Ver);
}

where part is the current active part:
urj_part_t *part = chain->parts->parts[chain->active_part];

and did is the detected id (as in src/tap/detect.c line 272).

Regards,
/Karl Hammar


_______________________________________________
UrJTAG-development mailing list
UrJTAG-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/urjtag-development

Reply via email to