u-boot/lib/crc32c.c
Tom Rini 467382ca03 lib: Remove <common.h> inclusion from these files
After some header file cleanups to add missing include files, remove
common.h from all files in the lib directory. This primarily means just
dropping the line but in a few cases we need to add in other header
files now.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
2023-12-21 08:54:37 -05:00

38 lines
940 B
C

// SPDX-License-Identifier: GPL-2.0+
/*
* Copied from Linux kernel crypto/crc32c.c
* Copyright (c) 2004 Cisco Systems, Inc.
* Copyright (c) 2008 Herbert Xu <herbert@gondor.apana.org.au>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*/
#include <compiler.h>
uint32_t crc32c_cal(uint32_t crc, const char *data, int length,
uint32_t *crc32c_table)
{
while (length--)
crc = crc32c_table[(u8)(crc ^ *data++)] ^ (crc >> 8);
return crc;
}
void crc32c_init(uint32_t *crc32c_table, uint32_t pol)
{
int i, j;
uint32_t v;
const uint32_t poly = pol; /* Bit-reflected CRC32C polynomial */
for (i = 0; i < 256; i++) {
v = i;
for (j = 0; j < 8; j++)
v = (v >> 1) ^ ((v & 1) ? poly : 0);
crc32c_table[i] = v;
}
}