mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
mmc: exynos_dw_mmc: Don't call pinmux functions on ARM64 chips
Pinmux configuration on ARM64 platforms must be performed during startup
in pinctrl driver using info from device tree. exynos_pinmux_config()
and pinmux_decode_periph_id() are only available on ARM32 platforms, so
don't call those functions on ARM64 platforms. Instead of the latter
function, use "non-removable" property from device tree to derive the
dev_index value.
This fixes next linking errors on ARM64 platforms:
ld: drivers/mmc/exynos_dw_mmc.o:
in function `exynos_dwmci_get_config':
undefined reference to `pinmux_decode_periph_id'
ld: drivers/mmc/exynos_dw_mmc.o:
in function `do_dwmci_init':
undefined reference to `exynos_pinmux_config'
Fixes: a082a2dde0 ("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>
This commit is contained in:
committed by
Minkyu Kang
parent
c61f92eeb6
commit
f6b7f9e7bf
@@ -144,6 +144,7 @@ static int exynos_dwmci_core_init(struct dwmci_host *host)
|
||||
|
||||
static int do_dwmci_init(struct dwmci_host *host)
|
||||
{
|
||||
#ifdef CONFIG_CPU_V7A
|
||||
int flag, err;
|
||||
|
||||
flag = host->buswidth == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE;
|
||||
@@ -152,6 +153,7 @@ static int do_dwmci_init(struct dwmci_host *host)
|
||||
printf("DWMMC%d not configure\n", host->dev_index);
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
return exynos_dwmci_core_init(host);
|
||||
}
|
||||
@@ -163,6 +165,7 @@ static int exynos_dwmci_get_config(struct udevice *dev, const void *blob,
|
||||
int err = 0;
|
||||
u32 timing[3];
|
||||
|
||||
#ifdef CONFIG_CPU_V7A
|
||||
/* Extract device id for each mmc channel */
|
||||
host->dev_id = pinmux_decode_periph_id(blob, node);
|
||||
|
||||
@@ -174,6 +177,12 @@ static int exynos_dwmci_get_config(struct udevice *dev, const void *blob,
|
||||
printf("DWMMC%d: Can't get the dev index\n", host->dev_index);
|
||||
return -EINVAL;
|
||||
}
|
||||
#else
|
||||
if (dev_read_bool(dev, "non-removable"))
|
||||
host->dev_index = 0; /* eMMC */
|
||||
else
|
||||
host->dev_index = 2; /* SD card */
|
||||
#endif
|
||||
|
||||
/* Get the bus width from the device node (Default is 4bit buswidth) */
|
||||
host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 4);
|
||||
|
||||
Reference in New Issue
Block a user