aboutsummaryrefslogtreecommitdiffstats
path: root/roms/u-boot/lib/crc8.c
diff options
context:
space:
mode:
Diffstat (limited to 'roms/u-boot/lib/crc8.c')
-rw-r--r--roms/u-boot/lib/crc8.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/roms/u-boot/lib/crc8.c b/roms/u-boot/lib/crc8.c
new file mode 100644
index 000000000..87b87b675
--- /dev/null
+++ b/roms/u-boot/lib/crc8.c
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2013 Google, Inc
+ */
+
+#ifdef USE_HOSTCC
+#include <arpa/inet.h>
+#else
+#include <common.h>
+#endif
+#include <u-boot/crc.h>
+
+#define POLY (0x1070U << 3)
+
+static unsigned char _crc8(unsigned short data)
+{
+ int i;
+
+ for (i = 0; i < 8; i++) {
+ if (data & 0x8000)
+ data = data ^ POLY;
+ data = data << 1;
+ }
+
+ return (unsigned char)(data >> 8);
+}
+
+unsigned int crc8(unsigned int crc, const unsigned char *vptr, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++)
+ crc = _crc8((crc ^ vptr[i]) << 8);
+
+ return crc;
+}