aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKai Geissdoerfer <kai.geissdoerfer@tu-dresden.de>2018-08-13 12:35:09 +0200
committerTomas Vanek <vanekt@fbl.cz>2018-09-17 17:15:03 +0100
commitad41246cf66d96b506694a0100e1bbf792d5ea77 (patch)
treea585602ccc0ebc396424a4642ecbb259373be1b4 /src
parent8c67115c7b02a10668c9b05cd4fd95a8a7d01c88 (diff)
downloadriscv-openocd-ad41246cf66d96b506694a0100e1bbf792d5ea77.zip
riscv-openocd-ad41246cf66d96b506694a0100e1bbf792d5ea77.tar.gz
riscv-openocd-ad41246cf66d96b506694a0100e1bbf792d5ea77.tar.bz2
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>
Diffstat (limited to 'src')
-rw-r--r--src/flash/nor/nrf5.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/flash/nor/nrf5.c b/src/flash/nor/nrf5.c
index 16459c7..1994bbc 100644
--- a/src/flash/nor/nrf5.c
+++ b/src/flash/nor/nrf5.c
@@ -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;