diff options
Diffstat (limited to 'drivers/mci')
-rw-r--r-- | drivers/mci/arasan-sdhci.c | 3 | ||||
-rw-r--r-- | drivers/mci/mci-core.c | 18 |
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; } |