diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-06-03 11:53:12 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-06-20 16:18:16 +0200 |
commit | 9590d6f9f13559411c137e5d3390dc7c6d5732b0 (patch) | |
tree | 4d7f817160778d01b191c467772152b00024ebb7 /drivers/mci/mci-core.c | |
parent | 2ab4c0869e281099e162d7783f3954c5ea7915e4 (diff) | |
download | barebox-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.c | 18 |
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 |