flash/nrf5: time-based timeout waiting for flash controller

Change-Id: Id214df154dc359ca130c8d8fe1554d106621b9cd
Signed-off-by: Kai Geissdoerfer <kai.geissdoerfer@tu-dresden.de>
Reviewed-on: http://openocd.zylin.com/4648
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
Kai Geissdoerfer 2018-08-13 12:35:09 +02:00 committed by Tomas Vanek
parent 8c67115c7b
commit ad41246cf6

View File

@ -26,6 +26,7 @@
#include <target/algorithm.h>
#include <target/armv7m.h>
#include <helper/types.h>
#include <helper/time_support.h>
enum {
NRF5_FLASH_BASE = 0x00000000,
@ -240,7 +241,8 @@ static int nrf5_wait_for_nvmc(struct nrf5_info *chip)
{
uint32_t ready;
int res;
int timeout = 100;
int timeout_ms = 200;
int64_t ts_start = timeval_ms();
do {
res = target_read_u32(chip->target, NRF5_NVMC_READY, &ready);
@ -252,8 +254,9 @@ static int nrf5_wait_for_nvmc(struct nrf5_info *chip)
if (ready == 0x00000001)
return ERROR_OK;
alive_sleep(1);
} while (timeout--);
keep_alive();
} while ((timeval_ms()-ts_start) < timeout_ms);
LOG_DEBUG("Timed out waiting for NVMC_READY");
return ERROR_FLASH_BUSY;