summaryrefslogtreecommitdiffstats
path: root/include/linux/crc-ccitt.h
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2018-03-26 06:12:31 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2018-04-03 09:07:52 +0200
commit37ebcf9984b0f6fe6282a433f8640894c3b9cdda (patch)
tree6d7a88236048fe805687f8b59640776274ab8471 /include/linux/crc-ccitt.h
parente96dc23280c43dd6b026ea71bcbaf3353abb4c83 (diff)
downloadbarebox-37ebcf9984b0f6fe6282a433f8640894c3b9cdda.tar.gz
barebox-37ebcf9984b0f6fe6282a433f8640894c3b9cdda.tar.xz
lib: Port CRC-CCITT functions from Linux kernel
Port CRC-CCITT implemenation in order to support porting MFD driver for RAVE SP. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/linux/crc-ccitt.h')
-rw-r--r--include/linux/crc-ccitt.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/linux/crc-ccitt.h b/include/linux/crc-ccitt.h
new file mode 100644
index 0000000000..72c92c396b
--- /dev/null
+++ b/include/linux/crc-ccitt.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_CRC_CCITT_H
+#define _LINUX_CRC_CCITT_H
+
+#include <linux/types.h>
+
+extern u16 const crc_ccitt_table[256];
+extern u16 const crc_ccitt_false_table[256];
+
+extern u16 crc_ccitt(u16 crc, const u8 *buffer, size_t len);
+extern u16 crc_ccitt_false(u16 crc, const u8 *buffer, size_t len);
+
+static inline u16 crc_ccitt_byte(u16 crc, const u8 c)
+{
+ return (crc >> 8) ^ crc_ccitt_table[(crc ^ c) & 0xff];
+}
+
+static inline u16 crc_ccitt_false_byte(u16 crc, const u8 c)
+{
+ return (crc << 8) ^ crc_ccitt_false_table[(crc >> 8) ^ c];
+}
+
+#endif /* _LINUX_CRC_CCITT_H */