summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2015-10-15 14:34:12 +0200
committerTom Rini <trini@konsulko.com>2015-11-12 13:17:29 -0500
commit40aeeda396024913835dc67fa17041693af97bd1 (patch)
tree811ac4b2e53fc52af581829f98fff6d5516bcd3e /common
parent7bfc3b134626aafd70b550db094df327437c5698 (diff)
downloadblackbird-obmc-uboot-40aeeda396024913835dc67fa17041693af97bd1.tar.gz
blackbird-obmc-uboot-40aeeda396024913835dc67fa17041693af97bd1.zip
sparse: Simplify multiple logic
To check the alignment of the image blocks to the storage blocks, the current code uses a convoluted syntax, while a simple mod also does the work. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'common')
-rw-r--r--common/aboot.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/common/aboot.c b/common/aboot.c
index 243b330d91..2775254c74 100644
--- a/common/aboot.c
+++ b/common/aboot.c
@@ -37,11 +37,14 @@
#include <config.h>
#include <common.h>
#include <aboot.h>
+#include <div64.h>
#include <errno.h>
#include <malloc.h>
#include <part.h>
#include <sparse_format.h>
+#include <linux/math64.h>
+
typedef struct sparse_buffer {
void *data;
u32 length;
@@ -260,7 +263,7 @@ void write_sparse_image(block_dev_desc_t *dev_desc,
{
lbaint_t start;
lbaint_t blkcnt;
- unsigned int chunk;
+ unsigned int chunk, offset;
sparse_header_t *sparse_header;
chunk_header_t *chunk_header;
sparse_buffer_t *buffer;
@@ -274,9 +277,12 @@ void write_sparse_image(block_dev_desc_t *dev_desc,
return;
}
- /* verify sparse_header->blk_sz is an exact multiple of info->blksz */
- if (sparse_header->blk_sz !=
- (sparse_header->blk_sz & ~(info->blksz - 1))) {
+ /*
+ * Verify that the sparse block size is a multiple of our
+ * storage backend block size
+ */
+ div_u64_rem(sparse_header->blk_sz, info->blksz, &offset);
+ if (offset) {
printf("%s: Sparse image block size issue [%u]\n",
__func__, sparse_header->blk_sz);
fastboot_fail("sparse image block size issue");
OpenPOWER on IntegriCloud