summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2013-04-24 11:23:27 +0000
committerStefano Babic <sbabic@denx.de>2013-04-26 09:16:48 +0200
commit8de16794a0a42196666dc965843969685f4f45ad (patch)
tree1cfa5b9136a548083954a5ec79765478b9f7aafe /tools
parent1155d555d6c4c77bafb45af240b805196ee13155 (diff)
downloadu-boot-imx-8de16794a0a42196666dc965843969685f4f45ad.zip
u-boot-imx-8de16794a0a42196666dc965843969685f4f45ad.tar.gz
u-boot-imx-8de16794a0a42196666dc965843969685f4f45ad.tar.bz2
mxs: mxsboot: Move sdcard BCB header to 4 sectors offset
The MX23 Boot ROM does blindly load from 2048 offset while the MX28 does parse the BCB header to known where to load the image from. We move the BCB header to 4 sectors offset so same code can be used by both SoCs avoiding code duplication. This idea was given by Marek Vasut <marex@denx.de> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Tested-by: Fabio Estevam <fabio.estevam@freescale.com> Tested-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'tools')
-rw-r--r--tools/mxsboot.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/tools/mxsboot.c b/tools/mxsboot.c
index 6c05aa4..d92c39f 100644
--- a/tools/mxsboot.c
+++ b/tools/mxsboot.c
@@ -551,7 +551,7 @@ static int mx28_create_sd_image(int infd, int outfd)
fsize = lseek(infd, 0, SEEK_END);
lseek(infd, 0, SEEK_SET);
- size = fsize + 512;
+ size = fsize + 4 * 512;
buf = malloc(size);
if (!buf) {
@@ -559,7 +559,7 @@ static int mx28_create_sd_image(int infd, int outfd)
goto err0;
}
- ret = read(infd, (uint8_t *)buf + 512, fsize);
+ ret = read(infd, (uint8_t *)buf + 4 * 512, fsize);
if (ret != fsize) {
ret = -1;
goto err1;
@@ -574,8 +574,8 @@ static int mx28_create_sd_image(int infd, int outfd)
cb->drv_info[0].chip_num = 0x0;
cb->drv_info[0].drive_type = 0x0;
cb->drv_info[0].tag = 0x1;
- cb->drv_info[0].first_sector_number = sd_sector + 1;
- cb->drv_info[0].sector_count = (size - 1) / 512;
+ cb->drv_info[0].first_sector_number = sd_sector + 4;
+ cb->drv_info[0].sector_count = (size - 4) / 512;
wr_size = write(outfd, buf, size);
if (wr_size != size) {