lpc2000: ignore status of part ID IAP command
The IAP firmware won't return a proper status with some versions. This happens on my CCC r0ket board and others have seen it as well [1]. So just ignore the status code and do a (weak) consistency check instead. [1] http://www.lpcware.com/content/forum/lpc1343-iap-read-part-identification-command Change-Id: I0daa779d520a540629677c56857bbc20d6db422d Signed-off-by: Grigori Goronzy <greg@chown.ath.cx> Reviewed-on: http://openocd.zylin.com/2364 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
This commit is contained in:
parent
4525c0a4c4
commit
c4b52f8fd7
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue