diff options
author | Deepak Kodihalli <dkodihal@in.ibm.com> | 2017-07-12 03:41:08 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-07-19 23:00:12 +0000 |
commit | 7ee307c7e88ba0c1aae1791e95c2573c6b1e62cb (patch) | |
tree | e29fdfef5456cbad240bfd6001e61241bf5cacdc /mboxd_flash_physical.c | |
parent | 017e45c3f202116ad09d5abdcaeb88f5b5f52594 (diff) | |
download | phosphor-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.c | 12 |
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; } /* |