summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJaehoon Chung <jh80.chung@samsung.com>2016-06-29 19:46:16 +0900
committerMinkyu Kang <mk7.kang@samsung.com>2016-07-12 14:28:47 +0900
commitce757b18fb1ef21de2fd446031f4ad2a554dc1fb (patch)
treefe8ccd53ca003e52387e02ac56f523cccb08b75f /drivers
parentf565ea59cbc040bae1d5b49912ba93a2f836ba11 (diff)
downloadu-boot-ce757b18fb1ef21de2fd446031f4ad2a554dc1fb.tar.gz
u-boot-ce757b18fb1ef21de2fd446031f4ad2a554dc1fb.tar.xz
u-boot-ce757b18fb1ef21de2fd446031f4ad2a554dc1fb.zip
mmc: exynos_dw_mmc: add the error control for checking index
PERIPH_ID_SDMMC4(131) is not continous value with PERIPH_ID_SDMMC0(75). If there is no 'index' property in fdt, then dev_index should be assigned to dev_id(Peripheral ID). At this time, dev_index should be "56". It means Exynos SoC has "56" numbers of DWMMC IP. To prevent this behavior, it needs to check the maximum device index. Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/exynos_dw_mmc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c
index 80d17ad7ee..586002370d 100644
--- a/drivers/mmc/exynos_dw_mmc.c
+++ b/drivers/mmc/exynos_dw_mmc.c
@@ -160,6 +160,11 @@ static int exynos_dwmci_get_config(const void *blob, int node,
if (host->dev_index == host->dev_id)
host->dev_index = host->dev_id - PERIPH_ID_SDMMC0;
+ if (host->dev_index > 4) {
+ printf("DWMMC%d: Can't get the dev index\n", host->dev_index);
+ return -EINVAL;
+ }
+
/* Get the bus width from the device node */
host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 0);
if (host->buswidth <= 0) {