aboutsummaryrefslogtreecommitdiff
path: root/src/flash/nor/lpc2000.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/flash/nor/lpc2000.c')
-rw-r--r--src/flash/nor/lpc2000.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/flash/nor/lpc2000.c b/src/flash/nor/lpc2000.c
index 9c0cc1e2..2d2c1a55 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)