Re: mmc_spi and flash cards

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 28 Dec 2009 12:58:28 -0500, Cliff Brake <cliff.brake@xxxxxxxxx> wrote:
> 
> >> STOP_TRANSMISSION
> >> bit 3 -> R1_SPI_COM_CRC (the CRC of the last command failed)
> 
> mmc0: req done (CMD18): 0: 00000000 00000000 00000000 00000000
> mmc0:     4096 bytes transferred: 0
> mmc0:     (CMD12): -84: 00000008 00000000 00000000 00000000
> 

That's weird.

> mmc_spi spi1.0:   mmc_spi: CMD12, resp R1B
> mmc_spi spi1.0:   ... CMD12 response SPI_R1B: resp 0040 00000000
> 
> >> bit 6, R1_SPI_PARAMETER (commands argument, block length) was out of allowed range for this card.
> 

And that just seems completely bogus; the STOP_TRANSMISSION command
doesn't require any parameters.

Having read mmc_spi_response_get() I'm wondering if it's actually trying
to interpret a busy signal as a response code. Would you mind giving
this patch a go and seeing if the BUG_ON() triggers?

diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index d55fe4f..3e36ff4 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -310,6 +310,7 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
 
 checkstatus:
 	bitshift = 0;
+	BUG_ON(*cp == 0xff);
 	if (*cp & 0x80)	{
 		/* Houston, we have an ugly card with a bit-shifted response */
 		rotator = *cp++ << 8;

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux