Skip to content
Snippets Groups Projects
Commit e9978b17 authored by Jaehoon Chung's avatar Jaehoon Chung Committed by Peng Fan
Browse files

cmd: mmc: check whether bootbus's arguments is valid or not


According to Specification, each bit have valid value.
But it doesn't check whether arguments is valid or not.
It has potential bug with arguments passed by wrong value.

Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
parent 8ae82c4b
No related branches found
No related tags found
No related merge requests found
......@@ -735,8 +735,45 @@ static int do_mmc_bootbus(struct cmd_tbl *cmdtp, int flag,
return CMD_RET_FAILURE;
}
/*
* BOOT_BUS_CONDITIONS[177]
* BOOT_MODE[4:3]
* 0x0 : Use SDR + Backward compatible timing in boot operation
* 0x1 : Use SDR + High Speed Timing in boot operation mode
* 0x2 : Use DDR in boot operation
* RESET_BOOT_BUS_CONDITIONS
* 0x0 : Reset bus width to x1, SDR, Backward compatible
* 0x1 : Retain BOOT_BUS_WIDTH and BOOT_MODE
* BOOT_BUS_WIDTH
* 0x0 : x1(sdr) or x4 (ddr) buswidth
* 0x1 : x4(sdr/ddr) buswith
* 0x2 : x8(sdr/ddr) buswith
*
*/
if (width >= 0x3) {
printf("boot_bus_width %d is invalid\n", width);
return CMD_RET_FAILURE;
}
if (reset >= 0x2) {
printf("reset_boot_bus_width %d is invalid\n", reset);
return CMD_RET_FAILURE;
}
if (mode >= 0x3) {
printf("reset_boot_bus_width %d is invalid\n", mode);
return CMD_RET_FAILURE;
}
/* acknowledge to be sent during boot operation */
return mmc_set_boot_bus_width(mmc, width, reset, mode);
if (mmc_set_boot_bus_width(mmc, width, reset, mode)) {
puts("BOOT_BUS_WIDTH is failed to change.\n");
return CMD_RET_FAILURE;
}
printf("Set to BOOT_BUS_WIDTH = 0x%x, RESET = 0x%x, BOOT_MODE = 0x%x\n",
width, reset, mode);
return CMD_RET_SUCCESS;
}
static int do_mmc_boot_resize(struct cmd_tbl *cmdtp, int flag,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment