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:
parent
bcdafc8f3c
commit
0738b3c6fe
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue