lib: Allow crc16 code to be dropped

This code is not necessarily needed in VPL, even if SPL uses it, so
adjust the rules to allow it to be dropped.

Do the same for the hash API.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Simon Glass 2025-01-26 11:43:14 -07:00 committed by Tom Rini
parent 00ae9b2ac3
commit 5929c2f39f
4 changed files with 27 additions and 8 deletions

View file

@ -143,7 +143,8 @@ static int __maybe_unused hash_finish_sha512(struct hash_algo *algo, void *ctx,
return 0;
}
static int hash_init_crc16_ccitt(struct hash_algo *algo, void **ctxp)
static int __maybe_unused hash_init_crc16_ccitt(struct hash_algo *algo,
void **ctxp)
{
uint16_t *ctx = malloc(sizeof(uint16_t));
*ctx = 0;
@ -151,16 +152,18 @@ static int hash_init_crc16_ccitt(struct hash_algo *algo, void **ctxp)
return 0;
}
static int hash_update_crc16_ccitt(struct hash_algo *algo, void *ctx,
const void *buf, unsigned int size,
int is_last)
static int __maybe_unused hash_update_crc16_ccitt(struct hash_algo *algo,
void *ctx, const void *buf,
unsigned int size,
int is_last)
{
*((uint16_t *)ctx) = crc16_ccitt(*((uint16_t *)ctx), buf, size);
return 0;
}
static int hash_finish_crc16_ccitt(struct hash_algo *algo, void *ctx,
void *dest_buf, int size)
static int __maybe_unused hash_finish_crc16_ccitt(struct hash_algo *algo,
void *ctx, void *dest_buf,
int size)
{
if (size < algo->digest_size)
return -1;
@ -295,6 +298,7 @@ static struct hash_algo hash_algo[] = {
#endif
},
#endif
#if CONFIG_IS_ENABLED(CRC16)
{
.name = "crc16-ccitt",
.digest_size = 2,
@ -304,6 +308,7 @@ static struct hash_algo hash_algo[] = {
.hash_update = hash_update_crc16_ccitt,
.hash_finish = hash_finish_crc16_ccitt,
},
#endif
#if CONFIG_IS_ENABLED(CRC8) && IS_ENABLED(CONFIG_HASH_CRC8)
{
.name = "crc8",

View file

@ -758,6 +758,16 @@ config VPL_CRC8
checksum with feedback to produce an 8-bit result. The code is small
and it does not require a lookup table (unlike CRC32).
config CRC16
bool "Support CRC16"
default y
help
Enables CRC16 support. This is normally required. Two algorithms are
provided:
- CCITT, with a polynomical x^16 + x^12 + x^5 + 1
- standard, with polynomial x^16 + x^15 + x^2 + 1 (0x8005)
config SPL_CRC16
bool "Support CRC16 in SPL"
depends on SPL

View file

@ -35,8 +35,6 @@ obj-$(CONFIG_CIRCBUF) += circbuf.o
endif
obj-y += crc8.o
obj-y += crc16.o
obj-y += crc16-ccitt.o
obj-$(CONFIG_ERRNO_STR) += errno_str.o
obj-$(CONFIG_FIT) += fdtdec_common.o
obj-$(CONFIG_TEST_FDTDEC) += fdtdec_test.o
@ -71,6 +69,7 @@ endif
obj-$(CONFIG_$(PHASE_)CRC8) += crc8.o
obj-$(CONFIG_$(PHASE_)CRC16) += crc16.o
obj-$(CONFIG_$(PHASE_)CRC16) += crc16-ccitt.o
obj-y += crypto/

View file

@ -9,6 +9,11 @@ config MKIMAGE_DTC_PATH
some cases the system dtc may not support all required features
and the path to a different version should be given here.
config TOOLS_CRC16
def_bool y
help
Enable CRC32 support in the tools builds
config TOOLS_CRC32
def_bool y
help