blob: c8403734aba692491c7f1f2d769edc547fbd09bd [file] [log] [blame]
# Copyright (c) 2016,2023 Intel Corporation
# Copyright (c) 2025 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0
DT_CHOSEN_Z_CRC := zephyr,crc
menuconfig CRC
bool "Cyclic redundancy check (CRC) Support"
help
Enable use of CRC.
if CRC
module = CRC
module-str = CRC
source "subsys/logging/Kconfig.template.log_config"
config CRC_HW_HANDLER
bool "CRC Hardware Accelerator"
default y if $(dt_chosen_enabled,$(DT_CHOSEN_Z_CRC))
select CRC_DRIVER
help
Enable use of CRC hardware
config CRC4
bool "CRC-4 (Generic)"
depends on CRC_DRIVER_HAS_CRC4
default y
help
Implements a generic CRC-4 algorithm. This is suitable for platforms
without hardware CRC support. Offers flexibility but has lower performance
compared to hardware-based implementations.
config CRC4_TI
bool "CRC-4 (TI Polynomial)"
depends on CRC_DRIVER_HAS_CRC4_TI
default y
help
Implements the TI-specific CRC-4 algorithm. Commonly used in low-level
embedded communication where minimal CRC overhead is needed.
config CRC7_BE
bool "CRC-7 (Big Endian)"
depends on CRC_DRIVER_HAS_CRC7_BE
default y
help
Implements a CRC-7 algorithm with Big Endian bit order. Often used
in SD card protocols and other serial communication standards.
config CRC8
bool "CRC-8 (Generic)"
depends on CRC_DRIVER_HAS_CRC8
default y
help
Implements a generic CRC-8 algorithm. Useful for small data integrity
checks such as checksums and simple communication protocols.
config CRC8_ROHC
bool "CRC-8 (ROHC)"
depends on CRC_DRIVER_HAS_CRC8_ROHC
default y
help
Implements the CRC-8 ROHC (Robust Header Compression) algorithm,
typically used in compressed IP header protocols and networking.
config CRC8_CCITT
bool "CRC-8 (CCITT)"
depends on CRC_DRIVER_HAS_CRC8_CCITT
default y
help
Implements the CRC-8 CCITT polynomial. Commonly used in
telecommunications and low-power sensor protocols.
config CRC16
bool "CRC-16 (Generic)"
depends on CRC_DRIVER_HAS_CRC16
default y
help
Implements the generic CRC-16 algorithm. Frequently used in
storage, file transmission, and basic serial communication protocols.
config CRC16_ANSI
bool "CRC-16 (ANSI)"
depends on CRC_DRIVER_HAS_CRC16_ANSI
default y
help
Implements the ANSI variant of CRC-16, also known as CRC-16-IBM.
Commonly applied in legacy serial and file systems.
config CRC16_CCITT
bool "CRC-16 (CCITT)"
depends on CRC_DRIVER_HAS_CRC16_CCITT
default y
help
Implements the CCITT variant of CRC-16, widely used in
telecommunication systems such as XMODEM and HDLC protocols.
config CRC16_ITU_T
bool "CRC-16 (ITU-T)"
depends on CRC_DRIVER_HAS_CRC16_ITU_T
default y
help
Implements the ITU-T (formerly CCITT) CRC-16 variant.
Popular in modem protocols and wireless communication standards.
config CRC16_REFLECT
bool "CRC-16 (Reflected)"
depends on CRC_DRIVER_HAS_CRC16_REFLECT
default y
help
Implements the reflected (bit-reversed) variant of CRC-16-CCITT.
Useful in systems that process data in LSB-first order.
config CRC24_PGP
bool "CRC-24 (PGP)"
depends on CRC_DRIVER_HAS_CRC24_PGP
default y
help
Implements a CRC24 algorithm, used in applications like Bluetooth
and certain cryptographic protocols.
config CRC32_C
bool "CRC-32C"
depends on CRC_DRIVER_HAS_CRC32_C
default y
help
Implements the CRC32-C (Castagnoli) algorithm, optimized for
high-performance applications such as storage, networking,
and error detection in modern processors.
config CRC32_IEEE
bool "CRC-32 (IEEE)"
depends on CRC_DRIVER_HAS_CRC32_IEEE
default y
help
Implements the CRC32-IEEE (CRC-32) algorithm, commonly used
in Ethernet, ZIP file integrity checks, and other standard
networking and storage applications.
config CRC32_K_4_2
bool "CRC-32K/4.2"
depends on CRC_DRIVER_HAS_CRC32_K_4_2
default y
help
Implement the CRC-32K/4.2 algorithm, a variant of the standard
CRC32-IEEE used in Ethernet, ZIP files, and other data integrity
applications.
config CRC32_K_4_2_TABLE_256
bool "CRC-32K/4.2 Table 256"
help
Enables the software implementation of the CRC-32K/4.2 algorithm
using a 256-entry lookup table for faster computation.
config CRC_SHELL
bool "CRC Shell"
depends on SHELL
select POSIX_C_LIB_EXT
help
Enable CRC checking for memory regions from the shell.
endif # CRC