1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * There are multiple 16-bit CRC polynomials in common use, but this is 3*4882a593Smuzhiyun * *the* standard CRC-32 polynomial, first popularized by Ethernet. 4*4882a593Smuzhiyun * x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun #define CRCPOLY_LE 0xedb88320 7*4882a593Smuzhiyun #define CRCPOLY_BE 0x04c11db7 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun /* How many bits at a time to use. Requires a table of 4<<CRC_xx_BITS bytes. */ 10*4882a593Smuzhiyun /* For less performance-sensitive, use 4 */ 11*4882a593Smuzhiyun #ifndef CRC_LE_BITS 12*4882a593Smuzhiyun # define CRC_LE_BITS 8 13*4882a593Smuzhiyun #endif 14*4882a593Smuzhiyun #ifndef CRC_BE_BITS 15*4882a593Smuzhiyun # define CRC_BE_BITS 8 16*4882a593Smuzhiyun #endif 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* 19*4882a593Smuzhiyun * Little-endian CRC computation. Used with serial bit streams sent 20*4882a593Smuzhiyun * lsbit-first. Be sure to use cpu_to_le32() to append the computed CRC. 21*4882a593Smuzhiyun */ 22*4882a593Smuzhiyun #if CRC_LE_BITS > 8 || CRC_LE_BITS < 1 || CRC_LE_BITS & CRC_LE_BITS-1 23*4882a593Smuzhiyun # error CRC_LE_BITS must be a power of 2 between 1 and 8 24*4882a593Smuzhiyun #endif 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* 27*4882a593Smuzhiyun * Big-endian CRC computation. Used with serial bit streams sent 28*4882a593Smuzhiyun * msbit-first. Be sure to use cpu_to_be32() to append the computed CRC. 29*4882a593Smuzhiyun */ 30*4882a593Smuzhiyun #if CRC_BE_BITS > 8 || CRC_BE_BITS < 1 || CRC_BE_BITS & CRC_BE_BITS-1 31*4882a593Smuzhiyun # error CRC_BE_BITS must be a power of 2 between 1 and 8 32*4882a593Smuzhiyun #endif 33