[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