projects
/
karo-tx-uboot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
karo: use lldiv() for 64bit division
[karo-tx-uboot.git]
/
board
/
karo
/
tx28
/
flash.c
diff --git
a/board/karo/tx28/flash.c
b/board/karo/tx28/flash.c
index
4aa3bc9
..
7833f79
100644
(file)
--- a/
board/karo/tx28/flash.c
+++ b/
board/karo/tx28/flash.c
@@
-407,7
+407,7
@@
int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
size_t size = 0;
void *addr = NULL;
struct mx28_fcb *fcb;
size_t size = 0;
void *addr = NULL;
struct mx28_fcb *fcb;
- unsigned long mtd_num_blocks =
mtd->size / mtd->erasesize
;
+ unsigned long mtd_num_blocks =
lldiv(mtd->size, mtd->erasesize)
;
#ifdef CONFIG_ENV_IS_IN_NAND
unsigned long env_start_block = CONFIG_ENV_OFFSET / mtd->erasesize;
unsigned long env_end_block = env_start_block +
#ifdef CONFIG_ENV_IS_IN_NAND
unsigned long env_start_block = CONFIG_ENV_OFFSET / mtd->erasesize;
unsigned long env_end_block = env_start_block +
@@
-420,7
+420,7
@@
int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
unsigned long fw_num_blocks;
int fw1_skip, fw2_skip;
unsigned long extra_blocks = 0;
unsigned long fw_num_blocks;
int fw1_skip, fw2_skip;
unsigned long extra_blocks = 0;
-
size_t
max_len1, max_len2;
+
u64
max_len1, max_len2;
struct mtd_device *dev;
struct part_info *part_info;
struct part_info *redund_part_info;
struct mtd_device *dev;
struct part_info *part_info;
struct part_info *redund_part_info;
@@
-544,12
+544,12
@@
int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
uboot_part, ret);
return ret;
}
uboot_part, ret);
return ret;
}
- fw1_start_block =
part_info->offset / mtd->erasesize
;
+ fw1_start_block =
lldiv(part_info->offset, mtd->erasesize)
;
max_len1 = part_info->size;
if (size == 0)
max_len1 = part_info->size;
if (size == 0)
- fw_num_blocks =
max_len1 / mtd->erasesize
;
+ fw_num_blocks =
lldiv(max_len1, mtd->erasesize)
;
} else {
} else {
- max_len1 = (fw_num_blocks + extra_blocks) * mtd->erasesize;
+ max_len1 = (
u64)(
fw_num_blocks + extra_blocks) * mtd->erasesize;
}
if (redund_part) {
}
if (redund_part) {
@@
-560,26
+560,26
@@
int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
redund_part, ret);
return ret;
}
redund_part, ret);
return ret;
}
- fw2_start_block =
redund_part_info->offset / mtd->erasesize
;
+ fw2_start_block =
lldiv(redund_part_info->offset, mtd->erasesize)
;
max_len2 = redund_part_info->size;
if (fw2_start_block == fcb_start_block) {
fw2_start_block++;
max_len2 -= mtd->erasesize;
}
if (size == 0)
max_len2 = redund_part_info->size;
if (fw2_start_block == fcb_start_block) {
fw2_start_block++;
max_len2 -= mtd->erasesize;
}
if (size == 0)
- fw_num_blocks =
max_len2 / mtd->erasesize
;
+ fw_num_blocks =
lldiv(max_len2, mtd->erasesize)
;
} else if (fw2_set) {
} else if (fw2_set) {
- max_len2 = (fw_num_blocks + extra_blocks) * mtd->erasesize;
+ max_len2 = (
u64)(
fw_num_blocks + extra_blocks) * mtd->erasesize;
} else {
max_len2 = 0;
}
fw1_skip = find_contig_space(fw1_start_block, fw_num_blocks,
} else {
max_len2 = 0;
}
fw1_skip = find_contig_space(fw1_start_block, fw_num_blocks,
-
max_len1 / mtd->erasesize
);
+
lldiv(max_len1, mtd->erasesize)
);
if (fw1_skip < 0) {
if (fw1_skip < 0) {
- printf("Could not find %lu contiguous good blocks for fw image in blocks %lu..%lu\n",
+ printf("Could not find %lu contiguous good blocks for fw image in blocks %lu..%l
l
u\n",
fw_num_blocks, fw1_start_block,
fw_num_blocks, fw1_start_block,
- fw1_start_block +
max_len1 / mtd->erasesize
- 1);
+ fw1_start_block +
lldiv(max_len1, mtd->erasesize)
- 1);
if (uboot_part) {
#ifdef CONFIG_ENV_IS_IN_NAND
if (part_info->offset <= CONFIG_ENV_OFFSET + TOTAL_ENV_SIZE) {
if (uboot_part) {
#ifdef CONFIG_ENV_IS_IN_NAND
if (part_info->offset <= CONFIG_ENV_OFFSET + TOTAL_ENV_SIZE) {
@@
-606,11
+606,11
@@
int do_update(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
fw2_start_block = fw1_end_block + 1;
if (fw2_start_block > 0) {
fw2_skip = find_contig_space(fw2_start_block, fw_num_blocks,
fw2_start_block = fw1_end_block + 1;
if (fw2_start_block > 0) {
fw2_skip = find_contig_space(fw2_start_block, fw_num_blocks,
-
max_len2 / mtd->erasesize
);
+
lldiv(max_len2, mtd->erasesize)
);
if (fw2_skip < 0) {
if (fw2_skip < 0) {
- printf("Could not find %lu contiguous good blocks for redundant fw image in blocks %lu..%lu\n",
+ printf("Could not find %lu contiguous good blocks for redundant fw image in blocks %lu..%l
l
u\n",
fw_num_blocks, fw2_start_block,
fw_num_blocks, fw2_start_block,
- fw2_start_block +
max_len2 / mtd->erasesize
- 1);
+ fw2_start_block +
lldiv(max_len2, mtd->erasesize)
- 1);
if (redund_part) {
printf("Increase the size of the '%s' partition or use a different partition\n",
redund_part);
if (redund_part) {
printf("Increase the size of the '%s' partition or use a different partition\n",
redund_part);