mips32: 20 second timeout/megabyte for CRC check
[fw/openocd] / src / target / mips32.c
index de8253fceaad9eef0a347467bd78234fb41d8410..0923a79293c28db7b7b164b72e52f6455498e0be 100644 (file)
@@ -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]);