aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei WANG <wei_wang@realsil.com.cn>2012-11-19 22:24:36 -0500
committerSamuel Ortiz <sameo@linux.intel.com>2012-11-21 10:07:54 -0500
commit38d324df75e6642ea6f71bc67765cc5b8c4f751b (patch)
tree98b474592a038e238052780f34f41af30defdff6
parent759f2598ef3876637e40d99a4ceb7a3d83a4d8d3 (diff)
mmc: rtsx: Configure SD_CFG2 register in sd_rw_multi
For Realtek card reader, internal regsiter SD_CFG2 should be configured before transferring data. The default value of SD_CFG2 is proper for writing data. But for reading sequence, the timing is not good enough. So in some extreme circumstance, card reader may sample the response data from the card as good even if the data is wrong. And this will cause the bad consequence. In the prior version, the value of this register has been calculated, but forgotten to write back to the internal register. Signed-off-by: Wei WANG <wei_wang@realsil.com.cn> Acked-by: Chris Ball <cjb@laptop.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--drivers/mmc/host/rtsx_pci_sdmmc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
index 0e934bf51309..067dd4627362 100644
--- a/drivers/mmc/host/rtsx_pci_sdmmc.c
+++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
@@ -405,6 +405,7 @@ static int sd_rw_multi(struct realtek_pci_sdmmc *host, struct mmc_request *mrq)
405 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, 405 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE,
406 0x01, RING_BUFFER); 406 0x01, RING_BUFFER);
407 407
408 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, cfg2);
408 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, 409 rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF,
409 trans_mode | SD_TRANSFER_START); 410 trans_mode | SD_TRANSFER_START);
410 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, 411 rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER,