[PATCH] mci_spi: always compute command crc byte

Sascha Hauer s.hauer at pengutronix.de
Wed Nov 14 03:25:37 EST 2012


On Mon, Nov 12, 2012 at 10:16:31PM +0100, Franck Jullien wrote:
> The spec says: "the CMD8 CRC verification is always enabled.
> The Host shall set correct CRC in the argument ofCMD8. If
> CRC error is detected, card returns CRC error in R1 response
> regardless of command index."
> 
> Make it simple, and compute crc on every commands.
> 
> Signed-off-by: Franck Jullien <franck.jullien at gmail.com>

Applied, thanks

Sascha

> ---
>  drivers/mci/Kconfig   |    2 +-
>  drivers/mci/mci_spi.c |   12 ------------
>  2 files changed, 1 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/mci/Kconfig b/drivers/mci/Kconfig
> index b1a678e..5c0ca4d 100644
> --- a/drivers/mci/Kconfig
> +++ b/drivers/mci/Kconfig
> @@ -88,6 +88,7 @@ config MCI_ATMEL
>  
>  config MCI_SPI
>  	bool "MMC/SD over SPI"
> +	select CRC7
>  	depends on SPI
>  	help
>  	  Some systems access MMC/SD/SDIO cards using a SPI controller
> @@ -98,7 +99,6 @@ config MCI_SPI
>  
>  config MMC_SPI_CRC_ON
>  	bool "Enable CRC protection for transfers"
> -	select CRC7
>  	select CRC16
>  	depends on MCI_SPI
>  	help
> diff --git a/drivers/mci/mci_spi.c b/drivers/mci/mci_spi.c
> index 5894104..cb5e0bb 100644
> --- a/drivers/mci/mci_spi.c
> +++ b/drivers/mci/mci_spi.c
> @@ -121,14 +121,6 @@ mmc_spi_writebytes(struct mmc_spi_host *host, unsigned len, void *data)
>  	return status;
>  }
>  
> -/*
> - * Note that while the CRC, in general, is ignored in SPI mode, the very first
> - * command must be followed by a valid CRC, since the card is not yet in SPI mode.
> - * The CRC byte for a CMD0 command with a zero argument is a constant 0x4A. For
> - * simplicity, this CRC byte is always sent with every command.
> - */
> -#define MMC_SPI_CMD0_CRC	((0x4a << 1) | 0x1)
> -
>  static int mmc_spi_command_send(struct mmc_spi_host *host, struct mci_cmd *cmd)
>  {
>  	uint8_t r1;
> @@ -141,11 +133,7 @@ static int mmc_spi_command_send(struct mmc_spi_host *host, struct mci_cmd *cmd)
>  	command[3] = cmd->cmdarg >> 16;
>  	command[4] = cmd->cmdarg >> 8;
>  	command[5] = cmd->cmdarg;
> -#ifdef CONFIG_MMC_SPI_CRC_ON
>  	command[6] = (crc7(0, &command[1], 5) << 1) | 0x01;
> -#else
> -	command[6] = MMC_SPI_CMD0_CRC;
> -#endif
>  
>  	mmc_spi_writebytes(host, 7, command);
>  
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list