From 3650981de7e5854b5023fddeb1a4656794a0aae0 Mon Sep 17 00:00:00 2001
From: Spencer Oliver <ntfreak@users.sourceforge.net>
Date: Mon, 10 May 2010 14:15:12 +0100
Subject: mips32: 20 second timeout/megabyte for CRC check

There was a fixed 20 second timeout which is too little
for large, slow timeout checks.

Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
---
 src/target/mips32.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'src/target')

diff --git a/src/target/mips32.c b/src/target/mips32.c
index de8253fc..0923a792 100644
--- a/src/target/mips32.c
+++ b/src/target/mips32.c
@@ -662,8 +662,10 @@ int mips32_checksum_memory(struct target *target, uint32_t address,
 	init_reg_param(&reg_params[1], "a1", 32, PARAM_OUT);
 	buf_set_u32(reg_params[1].value, 0, 32, count);
 
+	int timeout = 20000 * (1 + (count / (1024 * 1024)));
+
 	if ((retval = target_run_algorithm(target, 0, NULL, 2, reg_params,
-			crc_algorithm->address, crc_algorithm->address + (sizeof(mips_crc_code)-4), 10000,
+			crc_algorithm->address, crc_algorithm->address + (sizeof(mips_crc_code)-4), timeout,
 			&mips32_info)) != ERROR_OK)
 	{
 		destroy_reg_param(&reg_params[0]);
-- 
cgit v1.2.3