summaryrefslogtreecommitdiffstats
path: root/mboxd_flash_physical.c
diff options
context:
space:
mode:
authorDeepak Kodihalli <dkodihal@in.ibm.com>2017-07-12 03:41:08 -0500
committerPatrick Williams <patrick@stwcx.xyz>2017-07-19 23:00:12 +0000
commit7ee307c7e88ba0c1aae1791e95c2573c6b1e62cb (patch)
treee29fdfef5456cbad240bfd6001e61241bf5cacdc /mboxd_flash_physical.c
parent017e45c3f202116ad09d5abdcaeb88f5b5f52594 (diff)
downloadphosphor-mboxd-7ee307c7e88ba0c1aae1791e95c2573c6b1e62cb.tar.gz
phosphor-mboxd-7ee307c7e88ba0c1aae1791e95c2573c6b1e62cb.zip
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>
Diffstat (limited to 'mboxd_flash_physical.c')
-rw-r--r--mboxd_flash_physical.c12
1 files changed, 7 insertions, 5 deletions
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 @@ int erase_flash(struct mbox_context *context, uint32_t offset, uint32_t count)
* @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 @@ int copy_flash(struct mbox_context *context, uint32_t offset, void *mem,
mem += size_read;
} while (size && size_read);
- return size ? -MBOX_R_SYSTEM_ERROR : 0;
+ return size_read ? mem - start : -MBOX_R_SYSTEM_ERROR;
}
/*
OpenPOWER on IntegriCloud