summaryrefslogtreecommitdiffstats
path: root/drivers/mci
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mci')
-rw-r--r--drivers/mci/arasan-sdhci.c3
-rw-r--r--drivers/mci/mci-core.c18
2 files changed, 11 insertions, 10 deletions
diff --git a/drivers/mci/arasan-sdhci.c b/drivers/mci/arasan-sdhci.c
index f01396d7ee..b7dd98049f 100644
--- a/drivers/mci/arasan-sdhci.c
+++ b/drivers/mci/arasan-sdhci.c
@@ -772,7 +772,8 @@ static int arasan_sdhci_probe(struct device *dev)
mci->f_min = 50000000 / 256;
- arasan_sdhci_register_sdclk(&arasan_sdhci->clk_data, clk_xin, dev);
+ if (IS_ENABLED(CONFIG_ARCH_ZYNQMP))
+ arasan_sdhci_register_sdclk(&arasan_sdhci->clk_data, clk_xin, dev);
arasan_dt_parse_clk_phases(dev, &arasan_sdhci->clk_data);
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 414bcf6f06..083d2f4ed1 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -545,12 +545,12 @@ u8 *mci_get_ext_csd(struct mci *mci)
u8 *ext_csd;
int ret;
- ext_csd = xmalloc(512);
+ ext_csd = dma_alloc(512);
ret = mci_send_ext_csd(mci, ext_csd);
if (ret) {
printf("Failure to read EXT_CSD register\n");
- free(ext_csd);
+ dma_free(ext_csd);
return ERR_PTR(-EIO);
}
@@ -666,7 +666,7 @@ static int mmc_change_freq(struct mci *mci)
char cardtype;
int err;
- mci->ext_csd = xmalloc(512);
+ mci->ext_csd = dma_alloc(512);
mci->card_caps = 0;
/* Only version 4 supports high-speed */
@@ -1124,7 +1124,7 @@ static int mmc_compare_ext_csds(struct mci *mci, enum mci_bus_width bus_width)
if (bus_width == MMC_BUS_WIDTH_1)
return 0;
- bw_ext_csd = xmalloc(512);
+ bw_ext_csd = dma_alloc(512);
err = mci_send_ext_csd(mci, bw_ext_csd);
if (err) {
dev_info(&mci->dev, "mci_send_ext_csd failed with %d\n", err);
@@ -1173,7 +1173,7 @@ static int mmc_compare_ext_csds(struct mci *mci, enum mci_bus_width bus_width)
0 : -EINVAL;
out:
- free(bw_ext_csd);
+ dma_free(bw_ext_csd);
return err;
}
@@ -1431,11 +1431,11 @@ static int mmc_select_hs200(struct mci *mci)
/* find out maximum bus width and then try DDR if supported */
err = mci_mmc_select_bus_width(mci);
if (err > 0) {
- u32 status;
-
/* TODO actually set drive strength instead of 0. Currently unsupported. */
val = EXT_CSD_TIMING_HS200 | 0 << EXT_CSD_DRV_STR_SHIFT;
err = mci_switch(mci, EXT_CSD_HS_TIMING, val);
+ if (err == -EIO)
+ return -EBADMSG;
if (err)
goto err;
@@ -1452,7 +1452,7 @@ static int mmc_select_hs200(struct mci *mci)
mci_set_ios(mci);
mci_set_clock(mci, mci->host->hs_max_dtr);
- err = mci_switch_status(mci, &status);
+ err = mci_switch_status(mci, true);
/*
* mmc_select_timing() assumes timing has not changed if
@@ -2220,7 +2220,7 @@ static int mci_get_partition_setting_completed(struct mci *mci)
ret = ext_csd[EXT_CSD_PARTITION_SETTING_COMPLETED];
- free(ext_csd);
+ dma_free(ext_csd);
return ret;
}