From 013b05f7f813f0d0c15a6bb20068e9423a28bd0d Mon Sep 17 00:00:00 2001
From: David Brownell <dbrownell@users.sourceforge.net>
Date: Fri, 18 Dec 2009 10:09:35 -0800
Subject: [PATCH] Subject: flash fill[bwh] should use bulk i/o

It's currently allocating a big buffer but writing it out in
units of sizeof(host's pointer) ... sub-optimal.

Plus fix a couple minor coding style goofs.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
---
 src/flash/nor/tcl.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/flash/nor/tcl.c b/src/flash/nor/tcl.c
index 1e933b273..b5e1b2ce8 100644
--- a/src/flash/nor/tcl.c
+++ b/src/flash/nor/tcl.c
@@ -534,14 +534,16 @@ COMMAND_HANDLER(handle_flash_fill_command)
 
 	for (wrote = 0; wrote < (count*wordsize); wrote += cur_size)
 	{
-		cur_size = MIN((count*wordsize - wrote), sizeof(chunk));
 		struct flash_bank *bank;
+
 		bank = get_flash_bank_by_addr(target, address);
 		if (bank == NULL)
 		{
 			retval = ERROR_FAIL;
 			goto done;
 		}
+
+		cur_size = MIN((count * wordsize - wrote), chunksize);
 		err = flash_driver_write(bank, chunk, address - bank->base + wrote, cur_size);
 		if (err != ERROR_OK)
 		{
@@ -576,7 +578,7 @@ COMMAND_HANDLER(handle_flash_fill_command)
 				duration_elapsed(&bench), duration_kbps(&bench, wrote));
 	}
 
-	done:
+done:
 	free(readback);
 	free(chunk);