diff options
author | Simon Glass <sjg@chromium.org> | 2024-12-07 10:24:12 -0700 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-12-12 16:35:24 -0600 |
commit | f0315babfb43c6d1f5d4ff0ea7554ec2c27bf7b1 (patch) | |
tree | 05e5b0e9c3e37875d659aa2f30b9173e84686293 | |
parent | 63702119d65c23602fa386766593c4ade6e6c7e7 (diff) | |
download | u-boot-f0315babfb43c6d1f5d4ff0ea7554ec2c27bf7b1.tar.gz |
hash: Plumb crc8 into the hash functions
Add an entry for crc8, with watchdog handling.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/hash.c | 8 | ||||
-rw-r--r-- | include/u-boot/crc.h | 3 | ||||
-rw-r--r-- | lib/crc8.c | 6 |
3 files changed, 17 insertions, 0 deletions
diff --git a/common/hash.c b/common/hash.c index db6925d6782..5d389420eff 100644 --- a/common/hash.c +++ b/common/hash.c @@ -304,6 +304,14 @@ static struct hash_algo hash_algo[] = { .hash_update = hash_update_crc16_ccitt, .hash_finish = hash_finish_crc16_ccitt, }, +#if CONFIG_IS_ENABLED(CRC8) + { + .name = "crc8", + .digest_size = 1, + .chunk_size = CHUNKSZ_CRC32, + .hash_func_ws = crc8_wd_buf, + }, +#endif #if CONFIG_IS_ENABLED(CRC32) { .name = "crc32", diff --git a/include/u-boot/crc.h b/include/u-boot/crc.h index 5174bd7ac41..b2badaf6a97 100644 --- a/include/u-boot/crc.h +++ b/include/u-boot/crc.h @@ -25,6 +25,9 @@ */ unsigned int crc8(unsigned int crc_start, const unsigned char *vptr, int len); +void crc8_wd_buf(const unsigned char *input, unsigned int len, + unsigned char output[1], unsigned int chunk_sz); + /* lib/crc16.c - 16 bit CRC with polynomial x^16 + x^15 + x^2 + 1 */ uint16_t crc16(uint16_t crc, const unsigned char *buffer, size_t len); diff --git a/lib/crc8.c b/lib/crc8.c index 20d46d16147..811e19917b4 100644 --- a/lib/crc8.c +++ b/lib/crc8.c @@ -32,3 +32,9 @@ unsigned int crc8(unsigned int crc, const unsigned char *vptr, int len) return crc; } + +void crc8_wd_buf(const unsigned char *input, unsigned int len, + unsigned char output[1], unsigned int chunk_sz) +{ + *output = crc8(0, input, len); +} |