summaryrefslogtreecommitdiffstats
path: root/drivers/mci/mci-core.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-06-03 11:53:12 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-06-20 16:18:16 +0200
commit9590d6f9f13559411c137e5d3390dc7c6d5732b0 (patch)
tree4d7f817160778d01b191c467772152b00024ebb7 /drivers/mci/mci-core.c
parent2ab4c0869e281099e162d7783f3954c5ea7915e4 (diff)
downloadbarebox-9590d6f9f13559411c137e5d3390dc7c6d5732b0.tar.gz
barebox-9590d6f9f13559411c137e5d3390dc7c6d5732b0.tar.xz
mci: add mci_caps function
To let the card caps be card caps and not the intersection between card caps and host caps. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci/mci-core.c')
-rw-r--r--drivers/mci/mci-core.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 6ea389d33e..2829b8e1d6 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -66,6 +66,11 @@
* - Transcend SDHC, 8 GiB (Class 6)
*/
+static inline unsigned mci_caps(struct mci *mci)
+{
+ return mci->card_caps & mci->host->host_caps;
+}
+
/**
* Call the MMC/SD instance driver to run the command on the MMC/SD card
* @param mci MCI instance
@@ -898,7 +903,7 @@ static int mci_startup_sd(struct mci *mci)
struct mci_cmd cmd;
int err;
- if (mci->card_caps & MMC_CAP_4_BIT_DATA) {
+ if (mci_caps(mci) & MMC_CAP_4_BIT_DATA) {
dev_dbg(&mci->dev, "Prepare for bus width change\n");
mci_setup_cmd(&cmd, MMC_CMD_APP_CMD, mci->rca << 16, MMC_RSP_R1);
err = mci_send_cmd(mci, &cmd, NULL);
@@ -918,7 +923,7 @@ static int mci_startup_sd(struct mci *mci)
mci_set_bus_width(mci, MMC_BUS_WIDTH_4);
}
/* if possible, speed up the transfer */
- if (mci->card_caps & MMC_CAP_SD_HIGHSPEED)
+ if (mci_caps(mci) & MMC_CAP_SD_HIGHSPEED)
mci_set_clock(mci, 50000000);
else
mci_set_clock(mci, 25000000);
@@ -941,7 +946,7 @@ static int mci_startup_mmc(struct mci *mci)
};
/* if possible, speed up the transfer */
- if (mci->card_caps & MMC_CAP_MMC_HIGHSPEED) {
+ if (mci_caps(mci) & MMC_CAP_MMC_HIGHSPEED) {
if (mci->card_caps & MMC_CAP_MMC_HIGHSPEED_52MHZ)
mci_set_clock(mci, 52000000);
else
@@ -995,8 +1000,7 @@ static int mci_startup(struct mci *mci)
struct mci_cmd cmd;
int err;
-#ifdef CONFIG_MMC_SPI_CRC_ON
- if (mmc_host_is_spi(host)) { /* enable CRC check for spi */
+ if (IS_ENABLED(CONFIG_MMC_SPI_CRC_ON) && mmc_host_is_spi(host)) { /* enable CRC check for spi */
mci_setup_cmd(&cmd, MMC_CMD_SPI_CRC_ON_OFF, 1, MMC_RSP_R1);
err = mci_send_cmd(mci, &cmd, NULL);
@@ -1006,7 +1010,6 @@ static int mci_startup(struct mci *mci)
return err;
}
}
-#endif
dev_dbg(&mci->dev, "Put the Card in Identify Mode\n");
@@ -1096,9 +1099,6 @@ static int mci_startup(struct mci *mci)
mci_extract_card_capacity_from_csd(mci);
- /* Restrict card's capabilities by what the host can do */
- mci->card_caps &= host->host_caps;
-
if (IS_SD(mci))
err = mci_startup_sd(mci);
else