All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [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

* [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

* [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

* [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 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 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 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 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 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 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

* 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

* 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

* 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

* 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.