copy_flash: update window size

When a pnor partition is copied to a window, update the window size with
the actual number of blocks copied. This is required in the response of
the V2 Read Window Command.

Change-Id: I2c158df1bd261a4e62b9cbb2765e7623a7fb3dc9
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/mboxd_flash_physical.c b/mboxd_flash_physical.c
index 55624d9..69d2f3c 100644
--- a/mboxd_flash_physical.c
+++ b/mboxd_flash_physical.c
@@ -240,13 +240,15 @@
  * @offset:	The flash offset to copy from (bytes)
  * @mem:	The buffer to copy into (must be of atleast 'size' bytes)
  * @size:	The number of bytes to copy
- *
- * Return:	0 on success otherwise negative error code
+ * Return:	Number of bytes copied on success, otherwise negative error
+ *		code. copy_flash will copy at most 'size' bytes, but it may
+ *		copy less.
  */
-int copy_flash(struct mbox_context *context, uint32_t offset, void *mem,
-	       uint32_t size)
+int64_t copy_flash(struct mbox_context *context, uint32_t offset, void *mem,
+		   uint32_t size)
 {
 	int32_t size_read;
+	void *start = mem;
 
 	MSG_DBG("Copy flash to %p for size 0x%.8x from offset 0x%.8x\n",
 		mem, size, offset);
@@ -269,7 +271,7 @@
 		mem += size_read;
 	} while (size && size_read);
 
-	return size ? -MBOX_R_SYSTEM_ERROR : 0;
+	return size_read ? mem - start : -MBOX_R_SYSTEM_ERROR;
 }
 
 /*