diff options
author | Stefan Roese | 2016-04-08 15:56:29 +0200 |
---|---|---|
committer | Tom Rini | 2016-04-11 20:48:26 -0400 |
commit | 456ecd08ec026e67a17a77baa3778c9f1b8e474d (patch) | |
tree | 300fa2792b8a7e1b958c08e4b1b4d92c48baf50d /include/linux/crc8.h | |
parent | 5b2beab5cdf6209e5b4027312d8f9e2a13f1ce46 (diff) |
lib/crc8: Add crc start value
To make the usage of this function more flexible, lets add the CRC start
value as parameter to this function. This way it can be used by other
functions requiring different start values than 0 as well.
For non-zero CRC start values to work, I've reworked the function a bit.
The new implementation is copied from the Linux version in
drivers/i2c/i2c-core.c / i2c_smbus_pec(). Which supports non-zero
CRC stating values.
I've double-checked that the results for zero starting values are
identical to the results from the original version of this function.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/linux/crc8.h')
-rw-r--r-- | include/linux/crc8.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/crc8.h b/include/linux/crc8.h index b5fd2ac9d6e..f7c300a9b1e 100644 --- a/include/linux/crc8.h +++ b/include/linux/crc8.h @@ -14,10 +14,11 @@ * This uses an x^8 + x^2 + x + 1 polynomial. A table-based algorithm would * be faster, but for only a few bytes it isn't worth the code size * + * @crc_start: CRC8 start value * @vptr: Buffer to checksum * @len: Length of buffer in bytes * @return CRC8 checksum */ -unsigned int crc8(const unsigned char *vptr, int len); +unsigned int crc8(unsigned int crc_start, const unsigned char *vptr, int len); #endif |