]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mmc: exynos_dw_mmc: Fix obtaining the base address of controller
authorSam Protsenko <semen.protsenko@linaro.org>
Thu, 8 Aug 2024 03:14:23 +0000 (22:14 -0500)
committerMinkyu Kang <mk7.kang@samsung.com>
Mon, 19 Aug 2024 07:09:06 +0000 (16:09 +0900)
Getting the base address with outdated fdtdec_get_addr() API and further
casting it to (void *) leads to next build warning on ARM64 platforms:

    In function 'exynos_dwmci_get_config':
        warning: cast to pointer from integer of different size
        [-Wint-to-pointer-cast]
            host->ioaddr = (void *)base;

Use livetree API instead (dev_read_addr_ptr()), which handles this
correctly.

Fixes: a082a2dde061 ("EXYNOS5: DWMMC: Added FDT support for DWMMC")
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
drivers/mmc/exynos_dw_mmc.c

index 377c9e6d90b95f4fa51f64a720460c1e11fdcfd6..a86d58663c1b6037b459f1e599f5b6488ecc487f 100644 (file)
@@ -155,7 +155,7 @@ static int exynos_dwmci_get_config(struct udevice *dev, const void *blob,
                                   struct dwmci_exynos_priv_data *priv)
 {
        int err = 0;
-       u32 base, timing[3];
+       u32 timing[3];
 
        /* Extract device id for each mmc channel */
        host->dev_id = pinmux_decode_periph_id(blob, node);
@@ -173,12 +173,11 @@ static int exynos_dwmci_get_config(struct udevice *dev, const void *blob,
        host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 4);
 
        /* Set the base address from the device node */
-       base = fdtdec_get_addr(blob, node, "reg");
-       if (!base) {
+       host->ioaddr = dev_read_addr_ptr(dev);
+       if (!host->ioaddr) {
                printf("DWMMC%d: Can't get base address\n", host->dev_index);
                return -EINVAL;
        }
-       host->ioaddr = (void *)base;
 
        /* Extract the timing info from the node */
        err =  fdtdec_get_int_array(blob, node, "samsung,timing", timing, 3);