9
0
Fork 0

mci_spi: add sanity check

as in linux

SD/MMC support only mode 0 or 3 (if 0 not supported by the spi master)
so if the mode is not 3 force 0

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Jean-Christophe PLAGNIOL-VILLARD 2012-11-13 21:07:20 +01:00 committed by Sascha Hauer
parent bcdafc8f3c
commit 0738b3c6fe
1 changed files with 11 additions and 0 deletions

View File

@ -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;