From 006e7b478d3e63583f91598d5e28111c1ccb0df9 Mon Sep 17 00:00:00 2001 From: lintao Date: Tue, 21 Oct 2014 13:01:55 +0800 Subject: [PATCH] mmc: lookup mszs for edmac, diff M base from idmac --- arch/arm/boot/dts/rk312x-sdk.dtsi | 4 ++-- drivers/mmc/host/rk_sdmmc.c | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/rk312x-sdk.dtsi b/arch/arm/boot/dts/rk312x-sdk.dtsi index f33a9a11b382..ac7b2b3bc9d7 100755 --- a/arch/arm/boot/dts/rk312x-sdk.dtsi +++ b/arch/arm/boot/dts/rk312x-sdk.dtsi @@ -74,8 +74,8 @@ }; &emmc { - clock-frequency = <37500000>; - clock-freq-min-max = <400000 37500000>; + clock-frequency = <50000000>; + clock-freq-min-max = <400000 50000000>; supports-highspeed; supports-emmc; bootpart-no-access; diff --git a/drivers/mmc/host/rk_sdmmc.c b/drivers/mmc/host/rk_sdmmc.c index 0f50c70b6a13..2457b85b8cc6 100755 --- a/drivers/mmc/host/rk_sdmmc.c +++ b/drivers/mmc/host/rk_sdmmc.c @@ -614,6 +614,7 @@ static void dw_mci_edmac_start_dma(struct dw_mci *host, unsigned int sg_len) struct dma_slave_config slave_config; struct dma_async_tx_descriptor *desc = NULL; struct scatterlist *sgl = host->data->sg; + const u32 mszs[] = {1, 4, 8, 16, 32, 64, 128, 256}; u32 sg_elems = host->data->sg_len; int ret = 0; @@ -624,7 +625,9 @@ static void dw_mci_edmac_start_dma(struct dw_mci *host, unsigned int sg_len) slave_config.src_addr_width = slave_config.dst_addr_width; /* Match FIFO dma burst MSIZE with external dma config*/ - slave_config.dst_maxburst = ((host->fifoth_val) >> 28) && 0x7; + slave_config.dst_maxburst = mszs[((host->fifoth_val) >> 28) && 0x7]; + if ((host->mmc->restrict_caps & RESTRICT_CARD_TYPE_SDIO)) + slave_config.dst_maxburst /= mszs[((host->fifoth_val) >> 28) && 0x7]; slave_config.src_maxburst = slave_config.dst_maxburst; if(host->data->flags & MMC_DATA_WRITE){ -- 2.34.1