diff --git a/common/xyzModem.c b/common/xyzModem.c index 56f4bcaf99..5656aac48f 100644 --- a/common/xyzModem.c +++ b/common/xyzModem.c @@ -446,7 +446,7 @@ xyzModem_get_hdr (void) /* Verify checksum/CRC */ if (xyz.crc_mode) { - cksum = cyg_crc16 (xyz.pkt, xyz.len); + cksum = crc16_ccitt(0, xyz.pkt, xyz.len); if (cksum != ((xyz.crc1 << 8) | xyz.crc2)) { ZM_DEBUG (zm_dprintf ("CRC error - recvd: %02x%02x, computed: %x\n", diff --git a/drivers/mmc/mmc_spi.c b/drivers/mmc/mmc_spi.c index 9032a73d78..7547e1aef8 100644 --- a/drivers/mmc/mmc_spi.c +++ b/drivers/mmc/mmc_spi.c @@ -91,7 +91,7 @@ static uint mmc_spi_readdata(struct mmc *mmc, void *xbuf, spi_xfer(spi, bsize * 8, NULL, buf, 0); spi_xfer(spi, 2 * 8, NULL, &crc, 0); #ifdef CONFIG_MMC_SPI_CRC_ON - if (be_to_cpu16(cyg_crc16(buf, bsize)) != crc) { + if (be_to_cpu16(crc16_ccitt(0, buf, bsize)) != crc) { debug("%s: CRC error\n", mmc->cfg->name); r1 = R1_SPI_COM_CRC; break; @@ -120,7 +120,7 @@ static uint mmc_spi_writedata(struct mmc *mmc, const void *xbuf, tok[1] = multi ? SPI_TOKEN_MULTI_WRITE : SPI_TOKEN_SINGLE; while (bcnt--) { #ifdef CONFIG_MMC_SPI_CRC_ON - crc = cpu_to_be16(cyg_crc16((u8 *)buf, bsize)); + crc = cpu_to_be16(crc16_ccitt(0, (u8 *)buf, bsize)); #endif spi_xfer(spi, 2 * 8, tok, NULL, 0); spi_xfer(spi, bsize * 8, buf, NULL, 0); diff --git a/include/crc.h b/include/crc.h index 5085d4ed47..b0031b20ab 100644 --- a/include/crc.h +++ b/include/crc.h @@ -62,8 +62,8 @@ cyg_ether_crc32(unsigned char *s, int len); extern uint32_t cyg_ether_crc32_accumulate(uint32_t crc, unsigned char *s, int len); -/* 16 bit CRC with polynomial x^16+x^12+x^5+1 */ +/* 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ -extern uint16_t cyg_crc16(unsigned char *s, int len); +uint16_t crc16_ccitt(uint16_t crc_start, unsigned char *s, int len); #endif /* _SERVICES_CRC_CRC_H_ */ diff --git a/lib/crc16.c b/lib/crc16.c index 57e46f82d9..753b987b02 100644 --- a/lib/crc16.c +++ b/lib/crc16.c @@ -61,12 +61,12 @@ static const uint16_t crc16_tab[] = { 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, }; -uint16_t cyg_crc16(unsigned char *buf, int len) +uint16_t crc16_ccitt(uint16_t crc_start, unsigned char *buf, int len) { int i; uint16_t cksum; - cksum = 0; + cksum = crc_start; for (i = 0; i < len; i++) cksum = crc16_tab[((cksum>>8) ^ *buf++) & 0xff] ^ (cksum << 8);