[PATCH 19/19] hash: Plumb crc8 into the hash functions
Simon Glass
sjg at chromium.org
Sun Sep 1 22:09:57 CEST 2024
Hi Peter,
On Fri, 30 Aug 2024 at 06:17, Peter Robinson <pbrobinson at gmail.com> wrote:
>
> On Thu, 29 Aug 2024 at 16:02, Simon Glass <sjg at chromium.org> wrote:
> >
> > Add an entry for crc8, with watchdog handling.
>
> What's the watchdog handling do? What's this used for?
It does the hashing in chunks and touches the watchdog after every
chunk, to avoid the board resetting.
>
> Looking at the use of crc8 it's minimally used.
Yes, it's a cheap algorithm which provides some protection, so I am
using it in the VBE relocating loader (to come).
>
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > common/hash.c | 8 ++++++++
> > include/u-boot/crc.h | 3 +++
> > lib/crc8.c | 6 ++++++
> > 3 files changed, 17 insertions(+)
> >
> > diff --git a/common/hash.c b/common/hash.c
> > index ac63803fed9..43c4e185750 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);
> > +}
> > --
> > 2.34.1
> >
Regards,
Simon
More information about the U-Boot
mailing list