diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-03-04 10:48:39 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-03-04 14:19:17 +0100 |
commit | 74de1afbd2ed4262d4105b12641de0c5c487d930 (patch) | |
tree | 925c267bb2196c4d59e8f41060fbd5bf4eeef81e /include | |
parent | 990100d9a75b2818a93b834df8bf14aa02c6c8e7 (diff) | |
download | barebox-74de1afbd2ed4262d4105b12641de0c5c487d930.tar.gz barebox-74de1afbd2ed4262d4105b12641de0c5c487d930.tar.xz |
crc: import crc_itu_t() from kernel
Our cyc_crc16() function is the same function as crc_itu_t() in the
Linux kernel. Import and use crc_itu_t() from the Kernel for
consistency.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/crc.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/include/crc.h b/include/crc.h index 847a0a4b64..317f6f5494 100644 --- a/include/crc.h +++ b/include/crc.h @@ -3,8 +3,20 @@ #include <linux/types.h> -/* 16 bit CRC with polynomial x^16+x^12+x^5+1 */ -extern uint16_t cyg_crc16(const unsigned char *s, int len); +/* + * Implements the standard CRC ITU-T V.41: + * Width 16 + * Poly 0x1021 (x^16 + x^12 + x^15 + 1) + * Init 0 + */ +extern u16 const crc_itu_t_table[256]; + +extern u16 crc_itu_t(u16 crc, const u8 *buffer, size_t len); + +static inline u16 crc_itu_t_byte(u16 crc, const u8 data) +{ + return (crc << 8) ^ crc_itu_t_table[((crc >> 8) ^ data) & 0xff]; +} uint32_t crc32(uint32_t, const void *, unsigned int); uint32_t crc32_no_comp(uint32_t, const void *, unsigned int); |