* [PATCH 0/5] crc16: Remove duplicate implementations @ 2022-04-12 9:20 Pali Rohár 2022-04-12 9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár ` (4 more replies) 0 siblings, 5 replies; 16+ messages in thread From: Pali Rohár @ 2022-04-12 9:20 UTC (permalink / raw) To: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese Cc: u-boot This patch series removes duplicate implementations of CRC-16 with polynomial x^16 + x^15 + x^2 + 1. One implementation is enough. Atsha 5/5 patch depends on another atsha patch: https://patchwork.ozlabs.org/project/uboot/patch/20220402223634.20256-1-pali@kernel.org/ Pali Rohár (5): crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h crc16: Move standard CRC-16 implementation from ubifs to lib fs: ext4: Use CRC-16 implementation from linux/crc16.h misc: atsha204a: Remove duplicate CRC-16 implementation drivers/misc/Kconfig | 1 + drivers/misc/atsha204a-i2c.c | 122 +-------------------------- fs/ext4/Makefile | 2 +- fs/ext4/crc16.c | 62 -------------- fs/ext4/crc16.h | 16 ---- fs/ext4/ext4_common.c | 8 +- fs/ext4/ext4_common.h | 2 +- fs/ubifs/Makefile | 2 +- fs/ubifs/crc16.c | 60 -------------- fs/ubifs/lpt.c | 2 +- fs/ubifs/lpt_commit.c | 2 +- {fs/ubifs => include/linux}/crc16.h | 0 include/u-boot/crc.h | 5 +- lib/Makefile | 7 +- lib/crc16-ccitt.c | 84 +++++++++++++++++++ lib/crc16.c | 124 +++++++++++----------------- tools/Makefile | 2 +- 17 files changed, 156 insertions(+), 345 deletions(-) delete mode 100644 fs/ext4/crc16.c delete mode 100644 fs/ext4/crc16.h delete mode 100644 fs/ubifs/crc16.c rename {fs/ubifs => include/linux}/crc16.h (100%) create mode 100644 lib/crc16-ccitt.c -- 2.20.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c 2022-04-12 9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár @ 2022-04-12 9:20 ` Pali Rohár 2022-04-21 14:34 ` Stefan Roese 2022-04-21 23:56 ` Tom Rini 2022-04-12 9:20 ` [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h Pali Rohár ` (3 subsequent siblings) 4 siblings, 2 replies; 16+ messages in thread From: Pali Rohár @ 2022-04-12 9:20 UTC (permalink / raw) To: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese Cc: u-boot U-Boot CRC-16 implementation uses polynomial x^16 + x^12 + x^5 + 1 which is not standard CRC-16 algorithm, but it is known as CRC-16-CCITT. Rename file crc16.c to crc16-ccitt.c to reduce confusion. Signed-off-by: Pali Rohár <pali@kernel.org> --- include/u-boot/crc.h | 2 +- lib/Makefile | 8 ++++---- lib/{crc16.c => crc16-ccitt.c} | 2 +- tools/Makefile | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) rename lib/{crc16.c => crc16-ccitt.c} (99%) diff --git a/include/u-boot/crc.h b/include/u-boot/crc.h index 52ec6a9e2d4b..eba8edfb4f31 100644 --- a/include/u-boot/crc.h +++ b/include/u-boot/crc.h @@ -25,7 +25,7 @@ */ unsigned int crc8(unsigned int crc_start, const unsigned char *vptr, int len); -/* lib/crc16.c - 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ +/* lib/crc16-ccitt.c - 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ uint16_t crc16_ccitt(uint16_t crc_start, const unsigned char *s, int len); /** * crc16_ccitt_wd_buf - Perform CRC16-CCIT on an input buffer and return the diff --git a/lib/Makefile b/lib/Makefile index 11b03d1cbec8..b4f03cc149d3 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -37,7 +37,7 @@ 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 @@ -90,9 +90,9 @@ obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += libfdt/ obj-$(CONFIG_$(SPL_TPL_)OF_REAL) += fdtdec_common.o fdtdec.o ifdef CONFIG_SPL_BUILD -obj-$(CONFIG_SPL_YMODEM_SUPPORT) += crc16.o -obj-$(CONFIG_$(SPL_TPL_)HASH) += crc16.o -obj-$(CONFIG_MMC_SPI_CRC_ON) += crc16.o +obj-$(CONFIG_SPL_YMODEM_SUPPORT) += crc16-ccitt.o +obj-$(CONFIG_$(SPL_TPL_)HASH) += crc16-ccitt.o +obj-$(CONFIG_MMC_SPI_CRC_ON) += crc16-ccitt.o obj-y += net_utils.o endif obj-$(CONFIG_ADDR_MAP) += addr_map.o diff --git a/lib/crc16.c b/lib/crc16-ccitt.c similarity index 99% rename from lib/crc16.c rename to lib/crc16-ccitt.c index f46ba727c9a8..6cadbc103d3e 100644 --- a/lib/crc16.c +++ b/lib/crc16-ccitt.c @@ -2,7 +2,7 @@ /* *========================================================================== * - * crc16.c + * crc16-ccitt.c * * 16 bit CRC with polynomial x^16+x^12+x^5+1 * diff --git a/tools/Makefile b/tools/Makefile index 60231c728ceb..852dc638f418 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -131,7 +131,7 @@ dumpimage-mkimage-objs := aisimage.o \ $(ROCKCHIP_OBS) \ socfpgaimage.o \ sunxi_egon.o \ - lib/crc16.o \ + lib/crc16-ccitt.o \ lib/hash-checksum.o \ lib/sha1.o \ lib/sha256.o \ -- 2.20.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c 2022-04-12 9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár @ 2022-04-21 14:34 ` Stefan Roese 2022-04-21 23:56 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Stefan Roese @ 2022-04-21 14:34 UTC (permalink / raw) To: Pali Rohár, Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún Cc: u-boot On 4/12/22 11:20, Pali Rohár wrote: > U-Boot CRC-16 implementation uses polynomial x^16 + x^12 + x^5 + 1 which is > not standard CRC-16 algorithm, but it is known as CRC-16-CCITT. Rename file > crc16.c to crc16-ccitt.c to reduce confusion. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > include/u-boot/crc.h | 2 +- > lib/Makefile | 8 ++++---- > lib/{crc16.c => crc16-ccitt.c} | 2 +- > tools/Makefile | 2 +- > 4 files changed, 7 insertions(+), 7 deletions(-) > rename lib/{crc16.c => crc16-ccitt.c} (99%) > > diff --git a/include/u-boot/crc.h b/include/u-boot/crc.h > index 52ec6a9e2d4b..eba8edfb4f31 100644 > --- a/include/u-boot/crc.h > +++ b/include/u-boot/crc.h > @@ -25,7 +25,7 @@ > */ > unsigned int crc8(unsigned int crc_start, const unsigned char *vptr, int len); > > -/* lib/crc16.c - 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ > +/* lib/crc16-ccitt.c - 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ > uint16_t crc16_ccitt(uint16_t crc_start, const unsigned char *s, int len); > /** > * crc16_ccitt_wd_buf - Perform CRC16-CCIT on an input buffer and return the > diff --git a/lib/Makefile b/lib/Makefile > index 11b03d1cbec8..b4f03cc149d3 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -37,7 +37,7 @@ 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 > @@ -90,9 +90,9 @@ obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += libfdt/ > obj-$(CONFIG_$(SPL_TPL_)OF_REAL) += fdtdec_common.o fdtdec.o > > ifdef CONFIG_SPL_BUILD > -obj-$(CONFIG_SPL_YMODEM_SUPPORT) += crc16.o > -obj-$(CONFIG_$(SPL_TPL_)HASH) += crc16.o > -obj-$(CONFIG_MMC_SPI_CRC_ON) += crc16.o > +obj-$(CONFIG_SPL_YMODEM_SUPPORT) += crc16-ccitt.o > +obj-$(CONFIG_$(SPL_TPL_)HASH) += crc16-ccitt.o > +obj-$(CONFIG_MMC_SPI_CRC_ON) += crc16-ccitt.o > obj-y += net_utils.o > endif > obj-$(CONFIG_ADDR_MAP) += addr_map.o > diff --git a/lib/crc16.c b/lib/crc16-ccitt.c > similarity index 99% > rename from lib/crc16.c > rename to lib/crc16-ccitt.c > index f46ba727c9a8..6cadbc103d3e 100644 > --- a/lib/crc16.c > +++ b/lib/crc16-ccitt.c > @@ -2,7 +2,7 @@ > /* > *========================================================================== > * > - * crc16.c > + * crc16-ccitt.c > * > * 16 bit CRC with polynomial x^16+x^12+x^5+1 > * > diff --git a/tools/Makefile b/tools/Makefile > index 60231c728ceb..852dc638f418 100644 > --- a/tools/Makefile > +++ b/tools/Makefile > @@ -131,7 +131,7 @@ dumpimage-mkimage-objs := aisimage.o \ > $(ROCKCHIP_OBS) \ > socfpgaimage.o \ > sunxi_egon.o \ > - lib/crc16.o \ > + lib/crc16-ccitt.o \ > lib/hash-checksum.o \ > lib/sha1.o \ > lib/sha256.o \ Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c 2022-04-12 9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár 2022-04-21 14:34 ` Stefan Roese @ 2022-04-21 23:56 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Tom Rini @ 2022-04-21 23:56 UTC (permalink / raw) To: Pali Rohár Cc: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese, u-boot [-- Attachment #1: Type: text/plain, Size: 412 bytes --] On Tue, Apr 12, 2022 at 11:20:40AM +0200, Pali Rohár wrote: > U-Boot CRC-16 implementation uses polynomial x^16 + x^12 + x^5 + 1 which is > not standard CRC-16 algorithm, but it is known as CRC-16-CCITT. Rename file > crc16.c to crc16-ccitt.c to reduce confusion. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Stefan Roese <sr@denx.de> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h 2022-04-12 9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár 2022-04-12 9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár @ 2022-04-12 9:20 ` Pali Rohár 2022-04-21 14:34 ` Stefan Roese 2022-04-21 23:56 ` Tom Rini 2022-04-12 9:20 ` [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib Pali Rohár ` (2 subsequent siblings) 4 siblings, 2 replies; 16+ messages in thread From: Pali Rohár @ 2022-04-12 9:20 UTC (permalink / raw) To: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese Cc: u-boot File fs/ubifs/crc16.h is standard linux's crc16.h include file. So move it from fs/ubifs to include/linux where are also other linux include files. Signed-off-by: Pali Rohár <pali@kernel.org> --- fs/ubifs/crc16.c | 2 +- fs/ubifs/lpt.c | 2 +- fs/ubifs/lpt_commit.c | 2 +- {fs/ubifs => include/linux}/crc16.h | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename {fs/ubifs => include/linux}/crc16.h (100%) diff --git a/fs/ubifs/crc16.c b/fs/ubifs/crc16.c index 443ccf855d5e..7cf33fc7eb61 100644 --- a/fs/ubifs/crc16.c +++ b/fs/ubifs/crc16.c @@ -6,7 +6,7 @@ */ #include <linux/types.h> -#include "crc16.h" +#include <linux/crc16.h> /** CRC table for the CRC-16. The poly is 0x8005 (x^16 + x^15 + x^2 + 1) */ u16 const crc16_table[256] = { diff --git a/fs/ubifs/lpt.c b/fs/ubifs/lpt.c index 62748b0210b2..27835e60d2c0 100644 --- a/fs/ubifs/lpt.c +++ b/fs/ubifs/lpt.c @@ -42,7 +42,7 @@ #include <linux/compat.h> #include <linux/err.h> #include <ubi_uboot.h> -#include "crc16.h" +#include <linux/crc16.h> #endif /** diff --git a/fs/ubifs/lpt_commit.c b/fs/ubifs/lpt_commit.c index 897d0014306c..ba0b19a1f2b2 100644 --- a/fs/ubifs/lpt_commit.c +++ b/fs/ubifs/lpt_commit.c @@ -23,7 +23,7 @@ #include <linux/bitops.h> #include <linux/compat.h> #include <linux/err.h> -#include "crc16.h" +#include <linux/crc16.h> #endif #include "ubifs.h" diff --git a/fs/ubifs/crc16.h b/include/linux/crc16.h similarity index 100% rename from fs/ubifs/crc16.h rename to include/linux/crc16.h -- 2.20.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h 2022-04-12 9:20 ` [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h Pali Rohár @ 2022-04-21 14:34 ` Stefan Roese 2022-04-21 23:56 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Stefan Roese @ 2022-04-21 14:34 UTC (permalink / raw) To: Pali Rohár, Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún Cc: u-boot On 4/12/22 11:20, Pali Rohár wrote: > File fs/ubifs/crc16.h is standard linux's crc16.h include file. So move it > from fs/ubifs to include/linux where are also other linux include files. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > fs/ubifs/crc16.c | 2 +- > fs/ubifs/lpt.c | 2 +- > fs/ubifs/lpt_commit.c | 2 +- > {fs/ubifs => include/linux}/crc16.h | 0 > 4 files changed, 3 insertions(+), 3 deletions(-) > rename {fs/ubifs => include/linux}/crc16.h (100%) > > diff --git a/fs/ubifs/crc16.c b/fs/ubifs/crc16.c > index 443ccf855d5e..7cf33fc7eb61 100644 > --- a/fs/ubifs/crc16.c > +++ b/fs/ubifs/crc16.c > @@ -6,7 +6,7 @@ > */ > > #include <linux/types.h> > -#include "crc16.h" > +#include <linux/crc16.h> > > /** CRC table for the CRC-16. The poly is 0x8005 (x^16 + x^15 + x^2 + 1) */ > u16 const crc16_table[256] = { > diff --git a/fs/ubifs/lpt.c b/fs/ubifs/lpt.c > index 62748b0210b2..27835e60d2c0 100644 > --- a/fs/ubifs/lpt.c > +++ b/fs/ubifs/lpt.c > @@ -42,7 +42,7 @@ > #include <linux/compat.h> > #include <linux/err.h> > #include <ubi_uboot.h> > -#include "crc16.h" > +#include <linux/crc16.h> > #endif > > /** > diff --git a/fs/ubifs/lpt_commit.c b/fs/ubifs/lpt_commit.c > index 897d0014306c..ba0b19a1f2b2 100644 > --- a/fs/ubifs/lpt_commit.c > +++ b/fs/ubifs/lpt_commit.c > @@ -23,7 +23,7 @@ > #include <linux/bitops.h> > #include <linux/compat.h> > #include <linux/err.h> > -#include "crc16.h" > +#include <linux/crc16.h> > #endif > #include "ubifs.h" > > diff --git a/fs/ubifs/crc16.h b/include/linux/crc16.h > similarity index 100% > rename from fs/ubifs/crc16.h > rename to include/linux/crc16.h Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h 2022-04-12 9:20 ` [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h Pali Rohár 2022-04-21 14:34 ` Stefan Roese @ 2022-04-21 23:56 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Tom Rini @ 2022-04-21 23:56 UTC (permalink / raw) To: Pali Rohár Cc: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese, u-boot [-- Attachment #1: Type: text/plain, Size: 359 bytes --] On Tue, Apr 12, 2022 at 11:20:41AM +0200, Pali Rohár wrote: > File fs/ubifs/crc16.h is standard linux's crc16.h include file. So move it > from fs/ubifs to include/linux where are also other linux include files. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Stefan Roese <sr@denx.de> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib 2022-04-12 9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár 2022-04-12 9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár 2022-04-12 9:20 ` [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h Pali Rohár @ 2022-04-12 9:20 ` Pali Rohár 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 2022-04-12 9:20 ` [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h Pali Rohár 2022-04-12 9:20 ` [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation Pali Rohár 4 siblings, 2 replies; 16+ messages in thread From: Pali Rohár @ 2022-04-12 9:20 UTC (permalink / raw) To: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese Cc: u-boot This implementation provides standard CRC-16 algorithm with polynomial x^16 + x^15 + x^2 + 1. Signed-off-by: Pali Rohár <pali@kernel.org> --- fs/ubifs/Makefile | 2 +- include/u-boot/crc.h | 3 +++ lib/Makefile | 1 + {fs/ubifs => lib}/crc16.c | 0 4 files changed, 5 insertions(+), 1 deletion(-) rename {fs/ubifs => lib}/crc16.c (100%) diff --git a/fs/ubifs/Makefile b/fs/ubifs/Makefile index 64d64472945e..631ba5f438cf 100644 --- a/fs/ubifs/Makefile +++ b/fs/ubifs/Makefile @@ -9,5 +9,5 @@ obj-y := ubifs.o io.o super.o sb.o master.o lpt.o obj-y += lpt_commit.o scan.o lprops.o -obj-y += tnc.o tnc_misc.o debug.o crc16.o budget.o +obj-y += tnc.o tnc_misc.o debug.o budget.o obj-y += log.o orphan.o recovery.o replay.o gc.o diff --git a/include/u-boot/crc.h b/include/u-boot/crc.h index eba8edfb4f31..5174bd7ac413 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); +/* 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); + /* lib/crc16-ccitt.c - 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ uint16_t crc16_ccitt(uint16_t crc_start, const unsigned char *s, int len); /** diff --git a/lib/Makefile b/lib/Makefile index b4f03cc149d3..0d0261b8986f 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -37,6 +37,7 @@ 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 diff --git a/fs/ubifs/crc16.c b/lib/crc16.c similarity index 100% rename from fs/ubifs/crc16.c rename to lib/crc16.c -- 2.20.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib 2022-04-12 9:20 ` [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib Pali Rohár @ 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Stefan Roese @ 2022-04-21 14:35 UTC (permalink / raw) To: Pali Rohár, Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún Cc: u-boot On 4/12/22 11:20, Pali Rohár wrote: > This implementation provides standard CRC-16 algorithm with polynomial > x^16 + x^15 + x^2 + 1. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > fs/ubifs/Makefile | 2 +- > include/u-boot/crc.h | 3 +++ > lib/Makefile | 1 + > {fs/ubifs => lib}/crc16.c | 0 > 4 files changed, 5 insertions(+), 1 deletion(-) > rename {fs/ubifs => lib}/crc16.c (100%) > > diff --git a/fs/ubifs/Makefile b/fs/ubifs/Makefile > index 64d64472945e..631ba5f438cf 100644 > --- a/fs/ubifs/Makefile > +++ b/fs/ubifs/Makefile > @@ -9,5 +9,5 @@ > > obj-y := ubifs.o io.o super.o sb.o master.o lpt.o > obj-y += lpt_commit.o scan.o lprops.o > -obj-y += tnc.o tnc_misc.o debug.o crc16.o budget.o > +obj-y += tnc.o tnc_misc.o debug.o budget.o > obj-y += log.o orphan.o recovery.o replay.o gc.o > diff --git a/include/u-boot/crc.h b/include/u-boot/crc.h > index eba8edfb4f31..5174bd7ac413 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); > > +/* 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); > + > /* lib/crc16-ccitt.c - 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ > uint16_t crc16_ccitt(uint16_t crc_start, const unsigned char *s, int len); > /** > diff --git a/lib/Makefile b/lib/Makefile > index b4f03cc149d3..0d0261b8986f 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -37,6 +37,7 @@ 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 > diff --git a/fs/ubifs/crc16.c b/lib/crc16.c > similarity index 100% > rename from fs/ubifs/crc16.c > rename to lib/crc16.c Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib 2022-04-12 9:20 ` [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib Pali Rohár 2022-04-21 14:35 ` Stefan Roese @ 2022-04-21 23:57 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Tom Rini @ 2022-04-21 23:57 UTC (permalink / raw) To: Pali Rohár Cc: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese, u-boot [-- Attachment #1: Type: text/plain, Size: 305 bytes --] On Tue, Apr 12, 2022 at 11:20:42AM +0200, Pali Rohár wrote: > This implementation provides standard CRC-16 algorithm with polynomial > x^16 + x^15 + x^2 + 1. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Stefan Roese <sr@denx.de> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h 2022-04-12 9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár ` (2 preceding siblings ...) 2022-04-12 9:20 ` [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib Pali Rohár @ 2022-04-12 9:20 ` Pali Rohár 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 2022-04-12 9:20 ` [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation Pali Rohár 4 siblings, 2 replies; 16+ messages in thread From: Pali Rohár @ 2022-04-12 9:20 UTC (permalink / raw) To: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese Cc: u-boot Implementation in linux/crc16.h provides standard CRC-16 algorithm with polynomial x^16 + x^15 + x^2 + 1. Use it and remove duplicate ext4 CRC-16 specific code. Signed-off-by: Pali Rohár <pali@kernel.org> --- fs/ext4/Makefile | 2 +- fs/ext4/crc16.c | 62 ------------------------------------------- fs/ext4/crc16.h | 16 ----------- fs/ext4/ext4_common.c | 8 +++--- fs/ext4/ext4_common.h | 2 +- 5 files changed, 6 insertions(+), 84 deletions(-) delete mode 100644 fs/ext4/crc16.c delete mode 100644 fs/ext4/crc16.h diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile index c2544beee3a5..6ae44a2d0a34 100644 --- a/fs/ext4/Makefile +++ b/fs/ext4/Makefile @@ -8,4 +8,4 @@ # obj-y := ext4fs.o ext4_common.o dev.o -obj-$(CONFIG_EXT4_WRITE) += ext4_write.o ext4_journal.o crc16.o +obj-$(CONFIG_EXT4_WRITE) += ext4_write.o ext4_journal.o diff --git a/fs/ext4/crc16.c b/fs/ext4/crc16.c deleted file mode 100644 index 3afb34daefa1..000000000000 --- a/fs/ext4/crc16.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * crc16.c - * - * This source code is licensed under the GNU General Public License, - * Version 2. See the file COPYING for more details. - */ - -#include <common.h> -#include <asm/byteorder.h> -#include <linux/stat.h> -#include "crc16.h" - -/** CRC table for the CRC-16. The poly is 0x8005 (x16 + x15 + x2 + 1) */ -static __u16 const crc16_table[256] = { - 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, - 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, - 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, - 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, - 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, - 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, - 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, - 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, - 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, - 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, - 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, - 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, - 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, - 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, - 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, - 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, - 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, - 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, - 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, - 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, - 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, - 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, - 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, - 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, - 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, - 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, - 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, - 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, - 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, - 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, - 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, - 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 -}; - -/** - * Compute the CRC-16 for the data buffer -*/ - -unsigned int ext2fs_crc16(unsigned int crc, - const void *buffer, unsigned int len) -{ - const unsigned char *cp = buffer; - - while (len--) - crc = (((crc >> 8) & 0xffU) ^ - crc16_table[(crc ^ *cp++) & 0xffU]) & 0x0000ffffU; - return crc; -} diff --git a/fs/ext4/crc16.h b/fs/ext4/crc16.h deleted file mode 100644 index 5fd113a56c03..000000000000 --- a/fs/ext4/crc16.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * crc16.h - CRC-16 routine - * Implements the standard CRC-16: - * Width 16 - * Poly 0x8005 (x16 + x15 + x2 + 1) - * Init 0 - * - * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> - * This source code is licensed under the GNU General Public License, - * Version 2. See the file COPYING for more details. - */ -#ifndef __CRC16_H -#define __CRC16_H -extern unsigned int ext2fs_crc16(unsigned int crc, - const void *buffer, unsigned int len); -#endif diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index c52cc400e1f2..d49ba4a9954d 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -427,14 +427,14 @@ uint16_t ext4fs_checksum_update(uint32_t i) if (le32_to_cpu(fs->sb->feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_GDT_CSUM) { int offset = offsetof(struct ext2_block_group, bg_checksum); - crc = ext2fs_crc16(~0, fs->sb->unique_id, + crc = crc16(~0, (__u8 *)fs->sb->unique_id, sizeof(fs->sb->unique_id)); - crc = ext2fs_crc16(crc, &le32_i, sizeof(le32_i)); - crc = ext2fs_crc16(crc, desc, offset); + crc = crc16(crc, (__u8 *)&le32_i, sizeof(le32_i)); + crc = crc16(crc, (__u8 *)desc, offset); offset += sizeof(desc->bg_checksum); /* skip checksum */ assert(offset == sizeof(*desc)); if (offset < fs->gdsize) { - crc = ext2fs_crc16(crc, (__u8 *)desc + offset, + crc = crc16(crc, (__u8 *)desc + offset, fs->gdsize - offset); } } diff --git a/fs/ext4/ext4_common.h b/fs/ext4/ext4_common.h index beaee9c80bd6..504c708b0647 100644 --- a/fs/ext4/ext4_common.h +++ b/fs/ext4/ext4_common.h @@ -27,7 +27,7 @@ #include <linux/errno.h> #if defined(CONFIG_EXT4_WRITE) #include "ext4_journal.h" -#include "crc16.h" +#include <linux/crc16.h> #endif #define YES 1 -- 2.20.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h 2022-04-12 9:20 ` [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h Pali Rohár @ 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Stefan Roese @ 2022-04-21 14:35 UTC (permalink / raw) To: Pali Rohár, Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún Cc: u-boot On 4/12/22 11:20, Pali Rohár wrote: > Implementation in linux/crc16.h provides standard CRC-16 algorithm with > polynomial x^16 + x^15 + x^2 + 1. Use it and remove duplicate ext4 CRC-16 > specific code. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > fs/ext4/Makefile | 2 +- > fs/ext4/crc16.c | 62 ------------------------------------------- > fs/ext4/crc16.h | 16 ----------- > fs/ext4/ext4_common.c | 8 +++--- > fs/ext4/ext4_common.h | 2 +- > 5 files changed, 6 insertions(+), 84 deletions(-) > delete mode 100644 fs/ext4/crc16.c > delete mode 100644 fs/ext4/crc16.h > > diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile > index c2544beee3a5..6ae44a2d0a34 100644 > --- a/fs/ext4/Makefile > +++ b/fs/ext4/Makefile > @@ -8,4 +8,4 @@ > # > > obj-y := ext4fs.o ext4_common.o dev.o > -obj-$(CONFIG_EXT4_WRITE) += ext4_write.o ext4_journal.o crc16.o > +obj-$(CONFIG_EXT4_WRITE) += ext4_write.o ext4_journal.o > diff --git a/fs/ext4/crc16.c b/fs/ext4/crc16.c > deleted file mode 100644 > index 3afb34daefa1..000000000000 > --- a/fs/ext4/crc16.c > +++ /dev/null > @@ -1,62 +0,0 @@ > -/* > - * crc16.c > - * > - * This source code is licensed under the GNU General Public License, > - * Version 2. See the file COPYING for more details. > - */ > - > -#include <common.h> > -#include <asm/byteorder.h> > -#include <linux/stat.h> > -#include "crc16.h" > - > -/** CRC table for the CRC-16. The poly is 0x8005 (x16 + x15 + x2 + 1) */ > -static __u16 const crc16_table[256] = { > - 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, > - 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, > - 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, > - 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, > - 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, > - 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, > - 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, > - 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, > - 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, > - 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, > - 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, > - 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, > - 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, > - 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, > - 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, > - 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, > - 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, > - 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, > - 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, > - 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, > - 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, > - 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, > - 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, > - 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, > - 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, > - 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, > - 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, > - 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, > - 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, > - 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, > - 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, > - 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 > -}; > - > -/** > - * Compute the CRC-16 for the data buffer > -*/ > - > -unsigned int ext2fs_crc16(unsigned int crc, > - const void *buffer, unsigned int len) > -{ > - const unsigned char *cp = buffer; > - > - while (len--) > - crc = (((crc >> 8) & 0xffU) ^ > - crc16_table[(crc ^ *cp++) & 0xffU]) & 0x0000ffffU; > - return crc; > -} > diff --git a/fs/ext4/crc16.h b/fs/ext4/crc16.h > deleted file mode 100644 > index 5fd113a56c03..000000000000 > --- a/fs/ext4/crc16.h > +++ /dev/null > @@ -1,16 +0,0 @@ > -/* > - * crc16.h - CRC-16 routine > - * Implements the standard CRC-16: > - * Width 16 > - * Poly 0x8005 (x16 + x15 + x2 + 1) > - * Init 0 > - * > - * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> > - * This source code is licensed under the GNU General Public License, > - * Version 2. See the file COPYING for more details. > - */ > -#ifndef __CRC16_H > -#define __CRC16_H > -extern unsigned int ext2fs_crc16(unsigned int crc, > - const void *buffer, unsigned int len); > -#endif > diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c > index c52cc400e1f2..d49ba4a9954d 100644 > --- a/fs/ext4/ext4_common.c > +++ b/fs/ext4/ext4_common.c > @@ -427,14 +427,14 @@ uint16_t ext4fs_checksum_update(uint32_t i) > if (le32_to_cpu(fs->sb->feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_GDT_CSUM) { > int offset = offsetof(struct ext2_block_group, bg_checksum); > > - crc = ext2fs_crc16(~0, fs->sb->unique_id, > + crc = crc16(~0, (__u8 *)fs->sb->unique_id, > sizeof(fs->sb->unique_id)); > - crc = ext2fs_crc16(crc, &le32_i, sizeof(le32_i)); > - crc = ext2fs_crc16(crc, desc, offset); > + crc = crc16(crc, (__u8 *)&le32_i, sizeof(le32_i)); > + crc = crc16(crc, (__u8 *)desc, offset); > offset += sizeof(desc->bg_checksum); /* skip checksum */ > assert(offset == sizeof(*desc)); > if (offset < fs->gdsize) { > - crc = ext2fs_crc16(crc, (__u8 *)desc + offset, > + crc = crc16(crc, (__u8 *)desc + offset, > fs->gdsize - offset); > } > } > diff --git a/fs/ext4/ext4_common.h b/fs/ext4/ext4_common.h > index beaee9c80bd6..504c708b0647 100644 > --- a/fs/ext4/ext4_common.h > +++ b/fs/ext4/ext4_common.h > @@ -27,7 +27,7 @@ > #include <linux/errno.h> > #if defined(CONFIG_EXT4_WRITE) > #include "ext4_journal.h" > -#include "crc16.h" > +#include <linux/crc16.h> > #endif > > #define YES 1 Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h 2022-04-12 9:20 ` [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h Pali Rohár 2022-04-21 14:35 ` Stefan Roese @ 2022-04-21 23:57 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Tom Rini @ 2022-04-21 23:57 UTC (permalink / raw) To: Pali Rohár Cc: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese, u-boot [-- Attachment #1: Type: text/plain, Size: 375 bytes --] On Tue, Apr 12, 2022 at 11:20:43AM +0200, Pali Rohár wrote: > Implementation in linux/crc16.h provides standard CRC-16 algorithm with > polynomial x^16 + x^15 + x^2 + 1. Use it and remove duplicate ext4 CRC-16 > specific code. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Stefan Roese <sr@denx.de> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation 2022-04-12 9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár ` (3 preceding siblings ...) 2022-04-12 9:20 ` [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h Pali Rohár @ 2022-04-12 9:20 ` Pali Rohár 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 4 siblings, 2 replies; 16+ messages in thread From: Pali Rohár @ 2022-04-12 9:20 UTC (permalink / raw) To: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese Cc: u-boot ATSHA204A uses bit-reversed checksum of standard CRC-16 with polynomial x^16 + x^15 + x^2 + 1. This ATSHA204A specific checksum can be calculated just by using common U-Boot functions bitrev16() and crc16(). So replace custom driver CRC-16 implementation by common U-Boot functions. Signed-off-by: Pali Rohár <pali@kernel.org> --- drivers/misc/Kconfig | 1 + drivers/misc/atsha204a-i2c.c | 122 +---------------------------------- 2 files changed, 4 insertions(+), 119 deletions(-) diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 7029bb7b5c58..95bb678a6635 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -40,6 +40,7 @@ config ALTERA_SYSID config ATSHA204A bool "Support for Atmel ATSHA204A module" + select BITREVERSE depends on MISC help Enable support for I2C connected Atmel's ATSHA204A diff --git a/drivers/misc/atsha204a-i2c.c b/drivers/misc/atsha204a-i2c.c index 8b0055f99893..aa6acf0f9a0e 100644 --- a/drivers/misc/atsha204a-i2c.c +++ b/drivers/misc/atsha204a-i2c.c @@ -18,6 +18,7 @@ #include <log.h> #include <asm/global_data.h> #include <linux/delay.h> +#include <linux/bitrev.h> #include <u-boot/crc.h> #define ATSHA204A_TWLO 60 @@ -27,126 +28,9 @@ DECLARE_GLOBAL_DATA_PTR; -/* - * The ATSHA204A uses an (to me) unknown CRC-16 algorithm. - * The Reveng CRC-16 catalogue does not contain it. - * - * Because in Atmel's documentation only a primitive implementation - * can be found, I have implemented this one with lookup table. - */ - -/* - * This is the code that computes the table below: - * - * int i, j; - * for (i = 0; i < 256; ++i) { - * u8 c = 0; - * for (j = 0; j < 8; ++j) { - * c = (c << 1) | ((i >> j) & 1); - * } - * bitreverse_table[i] = c; - * } - */ - -static u8 const bitreverse_table[256] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff, -}; - -/* - * This is the code that computes the table below: - * - * int i, j; - * for (i = 0; i < 256; ++i) { - * u16 c = i << 8; - * for (j = 0; j < 8; ++j) { - * int b = c >> 15; - * c <<= 1; - * if (b) - * c ^= 0x8005; - * } - * crc16_table[i] = c; - * } - */ -static u16 const crc16_table[256] = { - 0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011, - 0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022, - 0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072, - 0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041, - 0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2, - 0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1, - 0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1, - 0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082, - 0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192, - 0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1, - 0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1, - 0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2, - 0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151, - 0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162, - 0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132, - 0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101, - 0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312, - 0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321, - 0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371, - 0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342, - 0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1, - 0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2, - 0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2, - 0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381, - 0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291, - 0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2, - 0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2, - 0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1, - 0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252, - 0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261, - 0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231, - 0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202, -}; - -static inline u16 crc16_byte(u16 crc, const u8 data) +static inline u16 atsha204a_crc16(const u8 *buffer, size_t len) { - u16 t = crc16_table[((crc >> 8) ^ bitreverse_table[data]) & 0xff]; - return ((crc << 8) ^ t); -} - -static u16 atsha204a_crc16(const u8 *buffer, size_t len) -{ - u16 crc = 0; - - while (len--) - crc = crc16_byte(crc, *buffer++); - - return crc; + return bitrev16(crc16(0, buffer, len)); } static int atsha204a_send(struct udevice *dev, const u8 *buf, u8 len) -- 2.20.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation 2022-04-12 9:20 ` [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation Pali Rohár @ 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Stefan Roese @ 2022-04-21 14:35 UTC (permalink / raw) To: Pali Rohár, Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún Cc: u-boot On 4/12/22 11:20, Pali Rohár wrote: > ATSHA204A uses bit-reversed checksum of standard CRC-16 with polynomial > x^16 + x^15 + x^2 + 1. > > This ATSHA204A specific checksum can be calculated just by using common > U-Boot functions bitrev16() and crc16(). > > So replace custom driver CRC-16 implementation by common U-Boot functions. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > drivers/misc/Kconfig | 1 + > drivers/misc/atsha204a-i2c.c | 122 +---------------------------------- > 2 files changed, 4 insertions(+), 119 deletions(-) > > diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig > index 7029bb7b5c58..95bb678a6635 100644 > --- a/drivers/misc/Kconfig > +++ b/drivers/misc/Kconfig > @@ -40,6 +40,7 @@ config ALTERA_SYSID > > config ATSHA204A > bool "Support for Atmel ATSHA204A module" > + select BITREVERSE > depends on MISC > help > Enable support for I2C connected Atmel's ATSHA204A > diff --git a/drivers/misc/atsha204a-i2c.c b/drivers/misc/atsha204a-i2c.c > index 8b0055f99893..aa6acf0f9a0e 100644 > --- a/drivers/misc/atsha204a-i2c.c > +++ b/drivers/misc/atsha204a-i2c.c > @@ -18,6 +18,7 @@ > #include <log.h> > #include <asm/global_data.h> > #include <linux/delay.h> > +#include <linux/bitrev.h> > #include <u-boot/crc.h> > > #define ATSHA204A_TWLO 60 > @@ -27,126 +28,9 @@ > > DECLARE_GLOBAL_DATA_PTR; > > -/* > - * The ATSHA204A uses an (to me) unknown CRC-16 algorithm. > - * The Reveng CRC-16 catalogue does not contain it. > - * > - * Because in Atmel's documentation only a primitive implementation > - * can be found, I have implemented this one with lookup table. > - */ > - > -/* > - * This is the code that computes the table below: > - * > - * int i, j; > - * for (i = 0; i < 256; ++i) { > - * u8 c = 0; > - * for (j = 0; j < 8; ++j) { > - * c = (c << 1) | ((i >> j) & 1); > - * } > - * bitreverse_table[i] = c; > - * } > - */ > - > -static u8 const bitreverse_table[256] = { > - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, > - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, > - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, > - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, > - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, > - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, > - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, > - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, > - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, > - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, > - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, > - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, > - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, > - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, > - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, > - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, > - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, > - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, > - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, > - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, > - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, > - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, > - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, > - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, > - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, > - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, > - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, > - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, > - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, > - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, > - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, > - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff, > -}; > - > -/* > - * This is the code that computes the table below: > - * > - * int i, j; > - * for (i = 0; i < 256; ++i) { > - * u16 c = i << 8; > - * for (j = 0; j < 8; ++j) { > - * int b = c >> 15; > - * c <<= 1; > - * if (b) > - * c ^= 0x8005; > - * } > - * crc16_table[i] = c; > - * } > - */ > -static u16 const crc16_table[256] = { > - 0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011, > - 0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022, > - 0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072, > - 0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041, > - 0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2, > - 0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1, > - 0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1, > - 0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082, > - 0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192, > - 0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1, > - 0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1, > - 0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2, > - 0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151, > - 0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162, > - 0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132, > - 0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101, > - 0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312, > - 0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321, > - 0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371, > - 0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342, > - 0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1, > - 0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2, > - 0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2, > - 0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381, > - 0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291, > - 0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2, > - 0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2, > - 0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1, > - 0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252, > - 0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261, > - 0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231, > - 0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202, > -}; > - > -static inline u16 crc16_byte(u16 crc, const u8 data) > +static inline u16 atsha204a_crc16(const u8 *buffer, size_t len) > { > - u16 t = crc16_table[((crc >> 8) ^ bitreverse_table[data]) & 0xff]; > - return ((crc << 8) ^ t); > -} > - > -static u16 atsha204a_crc16(const u8 *buffer, size_t len) > -{ > - u16 crc = 0; > - > - while (len--) > - crc = crc16_byte(crc, *buffer++); > - > - return crc; > + return bitrev16(crc16(0, buffer, len)); > } > > static int atsha204a_send(struct udevice *dev, const u8 *buf, u8 len) Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation 2022-04-12 9:20 ` [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation Pali Rohár 2022-04-21 14:35 ` Stefan Roese @ 2022-04-21 23:57 ` Tom Rini 1 sibling, 0 replies; 16+ messages in thread From: Tom Rini @ 2022-04-21 23:57 UTC (permalink / raw) To: Pali Rohár Cc: Simon Glass, Bin Meng, Adrian Fiergolski, Marek Behún, Stefan Roese, u-boot [-- Attachment #1: Type: text/plain, Size: 511 bytes --] On Tue, Apr 12, 2022 at 11:20:44AM +0200, Pali Rohár wrote: > ATSHA204A uses bit-reversed checksum of standard CRC-16 with polynomial > x^16 + x^15 + x^2 + 1. > > This ATSHA204A specific checksum can be calculated just by using common > U-Boot functions bitrev16() and crc16(). > > So replace custom driver CRC-16 implementation by common U-Boot functions. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Stefan Roese <sr@denx.de> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2022-04-21 23:58 UTC | newest] Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-04-12 9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár 2022-04-12 9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár 2022-04-21 14:34 ` Stefan Roese 2022-04-21 23:56 ` Tom Rini 2022-04-12 9:20 ` [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h Pali Rohár 2022-04-21 14:34 ` Stefan Roese 2022-04-21 23:56 ` Tom Rini 2022-04-12 9:20 ` [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib Pali Rohár 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 2022-04-12 9:20 ` [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h Pali Rohár 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini 2022-04-12 9:20 ` [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation Pali Rohár 2022-04-21 14:35 ` Stefan Roese 2022-04-21 23:57 ` Tom Rini
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.