X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Flpc2000.c;h=2d2c1a553718aaf693952893d3836b944a2760a7;hp=9c0cc1e2a03ba38ba7ca07d4ddc19bdd4a214bbb;hb=c4b52f8fd7b06f8cec5db5cdf33fd984a255ceaa;hpb=4525c0a4c4d0aaa199c37a6d2245617e8445f213 diff --git a/src/flash/nor/lpc2000.c b/src/flash/nor/lpc2000.c index 9c0cc1e2a0..2d2c1a5537 100644 --- a/src/flash/nor/lpc2000.c +++ b/src/flash/nor/lpc2000.c @@ -1145,12 +1145,16 @@ static int get_lpc2000_part_id(struct flash_bank *bank, uint32_t *part_id) if (retval != ERROR_OK) return retval; - int status_code = lpc2000_iap_call(bank, iap_working_area, 54, param_table, result_table); + /* The status seems to be bogus with the part ID command on some IAP + firmwares, so ignore it. */ + lpc2000_iap_call(bank, iap_working_area, 54, param_table, result_table); - if (status_code == LPC2000_CMD_SUCCESS) - *part_id = result_table[0]; + /* If the result is zero, the command probably didn't work out. */ + if (result_table[0] == 0) + return LPC2000_INVALID_COMMAND; - return status_code; + *part_id = result_table[0]; + return LPC2000_CMD_SUCCESS; } static int lpc2000_auto_probe_flash(struct flash_bank *bank)