2011/11/28 Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>: > Without CRC support the mmc spi driver fails to compile with > the following: > > drivers/mci/mci_spi.c:74:18: error: static declaration of 'crc7' follows non-static declaration > > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > --- > drivers/mci/mci_spi.c | 29 ++++++++++++----------------- > 1 files changed, 12 insertions(+), 17 deletions(-) > > diff --git a/drivers/mci/mci_spi.c b/drivers/mci/mci_spi.c > index 124e49b..653910b 100644 > --- a/drivers/mci/mci_spi.c > +++ b/drivers/mci/mci_spi.c > @@ -64,23 +64,6 @@ > #define RTOUT 3000000 /* 1 sec */ > #define WTOUT 3000000 /* 1 sec */ > > -#ifndef CONFIG_MMC_SPI_CRC_ON > -/* 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. > - */ > - > -static inline u8 crc7(u8 crc, const u8 *buffer, size_t len) > -{ > - /* This is the crc7 value for a CMD0 command with a zero argument. > - * It'll be left shifted and ored with '1' in mmc_spi_command_send > - * to give 0x95 (also known as the CMD0 constant CRC value...) > - */ > - return 0x4A; > -} > -#endif > - > struct mmc_spi_host { > struct mci_host mci; > struct spi_device *spi; > @@ -141,6 +124,14 @@ 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; > @@ -153,7 +144,11 @@ 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.7.1 > Sorry for that one. I did test it but should have missed something.... _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox