fix ENH_START_ADDR overflow
Fix enh_start_addr overflow when converting emmc enh_area which will
cause do_enh_area_set failure.
Signed-off-by: jason.zeng <jasonzvz@gmail.com>
Signed-off-by: Chris Ball <chris@printf.net>
jason.zeng authored 6 years ago
Chris Ball committed 6 years ago
1151 | 1151 | |
1152 | 1152 | enh_size_mult = (length_kib + align/2l) / align; |
1153 | 1153 | |
1154 | enh_start_addr = start_kib * 1024 / (is_blockaddresed(ext_csd) ? 512 : 1); | |
1154 | enh_start_addr = start_kib * (1024 / (is_blockaddresed(ext_csd) ? 512 : 1)); | |
1155 | 1155 | enh_start_addr /= align; |
1156 | 1156 | enh_start_addr *= align; |
1157 | 1157 | |
1694 | 1694 | (ext_csd[EXT_CSD_ENH_START_ADDR_1] << 8) | |
1695 | 1695 | ext_csd[EXT_CSD_ENH_START_ADDR_0]; |
1696 | 1696 | printf("Enhanced User Data Start Address" |
1697 | " [ENH_START_ADDR]: 0x%06x\n", regl); | |
1698 | printf(" i.e. %lu bytes offset\n", (is_blockaddresed(ext_csd) ? | |
1699 | 512l : 1l) * regl); | |
1697 | " [ENH_START_ADDR]: 0x%08x\n", regl); | |
1698 | printf(" i.e. %llu bytes offset\n", (is_blockaddresed(ext_csd) ? | |
1699 | 512ll : 1ll) * regl); | |
1700 | 1700 | |
1701 | 1701 | /* A441]: reserved [135] */ |
1702 | 1702 | printf("Bad Block Management mode" |