xref: /openbmc/linux/include/linux/crc-ccitt.h (revision 0d85adb5)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds #ifndef _LINUX_CRC_CCITT_H
31da177e4SLinus Torvalds #define _LINUX_CRC_CCITT_H
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds #include <linux/types.h>
61da177e4SLinus Torvalds 
71da177e4SLinus Torvalds extern u16 const crc_ccitt_table[256];
80d85adb5SAndrew Morton extern u16 const crc_ccitt_false_table[256];
91da177e4SLinus Torvalds 
101da177e4SLinus Torvalds extern u16 crc_ccitt(u16 crc, const u8 *buffer, size_t len);
110d85adb5SAndrew Morton extern u16 crc_ccitt_false(u16 crc, const u8 *buffer, size_t len);
121da177e4SLinus Torvalds 
crc_ccitt_byte(u16 crc,const u8 c)131da177e4SLinus Torvalds static inline u16 crc_ccitt_byte(u16 crc, const u8 c)
141da177e4SLinus Torvalds {
151da177e4SLinus Torvalds 	return (crc >> 8) ^ crc_ccitt_table[(crc ^ c) & 0xff];
161da177e4SLinus Torvalds }
171da177e4SLinus Torvalds 
crc_ccitt_false_byte(u16 crc,const u8 c)180d85adb5SAndrew Morton static inline u16 crc_ccitt_false_byte(u16 crc, const u8 c)
190d85adb5SAndrew Morton {
200d85adb5SAndrew Morton     return (crc << 8) ^ crc_ccitt_false_table[(crc >> 8) ^ c];
210d85adb5SAndrew Morton }
220d85adb5SAndrew Morton 
231da177e4SLinus Torvalds #endif /* _LINUX_CRC_CCITT_H */
24