summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mci/mci_spi.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/mci/mci_spi.c b/drivers/mci/mci_spi.c
index cb5e0bb981..08939bea58 100644
--- a/drivers/mci/mci_spi.c
+++ b/drivers/mci/mci_spi.c
@@ -366,6 +366,7 @@ static int spi_mci_probe(struct device_d *dev)
struct spi_device *spi = (struct spi_device *)dev->type_data;
struct mmc_spi_host *host;
void *ones;
+ int status;
host = xzalloc(sizeof(*host));
host->mci.send_cmd = mmc_spi_request;
@@ -373,6 +374,16 @@ static int spi_mci_probe(struct device_d *dev)
host->mci.init = mmc_spi_init;
host->mci.hw_dev = dev;
+ /* MMC and SD specs only seem to care that sampling is on the
+ * rising edge ... meaning SPI modes 0 or 3. So either SPI mode
+ * should be legit. We'll use mode 0 since the steady state is 0,
+ * which is appropriate for hotplugging, unless the platform data
+ * specify mode 3 (if hardware is not compatible to mode 0).
+ */
+ if (spi->mode != SPI_MODE_3)
+ spi->mode = SPI_MODE_0;
+ spi->bits_per_word = 8;
+
host->dev = dev;
host->spi = spi;
dev->priv = host;