]> git.sur5r.net Git - u-boot/commitdiff
mmc: exynos_dw_mmc: add the error control for checking index
authorJaehoon Chung <jh80.chung@samsung.com>
Wed, 29 Jun 2016 10:46:16 +0000 (19:46 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Tue, 12 Jul 2016 05:28:47 +0000 (14:28 +0900)
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>
drivers/mmc/exynos_dw_mmc.c

index 80d17ad7ee4faa9cf6fded5bca7836cc45a760d3..586002370d374c475adb51525baa7a5d6de85c3f 100644 (file)
@@ -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) {