xref: /rk3399_rockchip-uboot/include/crc.h (revision ecb57f69b236a0c11a08cbe74d22be76fc72091a)
1cf48eb9aSWolfgang Denk /*
2cf48eb9aSWolfgang Denk  *==========================================================================
3cf48eb9aSWolfgang Denk  *
4cf48eb9aSWolfgang Denk  *      crc.h
5cf48eb9aSWolfgang Denk  *
6cf48eb9aSWolfgang Denk  *      Interface for the CRC algorithms.
7cf48eb9aSWolfgang Denk  *
8cf48eb9aSWolfgang Denk  *==========================================================================
9e85427fdSWolfgang Denk  * SPDX-License-Identifier:	eCos-2.0
10cf48eb9aSWolfgang Denk  *==========================================================================
11cf48eb9aSWolfgang Denk  *#####DESCRIPTIONBEGIN####
12cf48eb9aSWolfgang Denk  *
13cf48eb9aSWolfgang Denk  * Author(s):    Andrew Lunn
14cf48eb9aSWolfgang Denk  * Contributors: Andrew Lunn
15cf48eb9aSWolfgang Denk  * Date:         2002-08-06
16cf48eb9aSWolfgang Denk  * Purpose:
17cf48eb9aSWolfgang Denk  * Description:
18cf48eb9aSWolfgang Denk  *
19cf48eb9aSWolfgang Denk  * This code is part of eCos (tm).
20cf48eb9aSWolfgang Denk  *
21cf48eb9aSWolfgang Denk  *####DESCRIPTIONEND####
22cf48eb9aSWolfgang Denk  *
23cf48eb9aSWolfgang Denk  *==========================================================================
24cf48eb9aSWolfgang Denk  */
25f2841d37SMarkus Klotzbuecher 
26f2841d37SMarkus Klotzbuecher #ifndef _SERVICES_CRC_CRC_H_
27f2841d37SMarkus Klotzbuecher #define _SERVICES_CRC_CRC_H_
28f2841d37SMarkus Klotzbuecher 
29f2841d37SMarkus Klotzbuecher #include <linux/types.h>
30f2841d37SMarkus Klotzbuecher 
31f2841d37SMarkus Klotzbuecher #ifndef __externC
32f2841d37SMarkus Klotzbuecher # ifdef __cplusplus
33f2841d37SMarkus Klotzbuecher #  define __externC extern "C"
34f2841d37SMarkus Klotzbuecher # else
35f2841d37SMarkus Klotzbuecher #  define __externC extern
36f2841d37SMarkus Klotzbuecher # endif
37f2841d37SMarkus Klotzbuecher #endif
38f2841d37SMarkus Klotzbuecher 
39cf48eb9aSWolfgang Denk /* Compute a CRC, using the POSIX 1003 definition */
40f2841d37SMarkus Klotzbuecher extern uint32_t
41f2841d37SMarkus Klotzbuecher cyg_posix_crc32(unsigned char *s, int len);
42f2841d37SMarkus Klotzbuecher 
43cf48eb9aSWolfgang Denk /* Gary S. Brown's 32 bit CRC */
44f2841d37SMarkus Klotzbuecher 
45f2841d37SMarkus Klotzbuecher extern uint32_t
46f2841d37SMarkus Klotzbuecher cyg_crc32(unsigned char *s, int len);
47f2841d37SMarkus Klotzbuecher 
48cf48eb9aSWolfgang Denk /* Gary S. Brown's 32 bit CRC, but accumulate the result from a */
49cf48eb9aSWolfgang Denk /* previous CRC calculation */
50f2841d37SMarkus Klotzbuecher 
51f2841d37SMarkus Klotzbuecher extern uint32_t
52f2841d37SMarkus Klotzbuecher cyg_crc32_accumulate(uint32_t crc, unsigned char *s, int len);
53f2841d37SMarkus Klotzbuecher 
54cf48eb9aSWolfgang Denk /* Ethernet FCS Algorithm */
55f2841d37SMarkus Klotzbuecher 
56f2841d37SMarkus Klotzbuecher extern uint32_t
57f2841d37SMarkus Klotzbuecher cyg_ether_crc32(unsigned char *s, int len);
58f2841d37SMarkus Klotzbuecher 
59cf48eb9aSWolfgang Denk /* Ethernet FCS algorithm, but accumulate the result from a previous */
60cf48eb9aSWolfgang Denk /* CRC calculation. */
61f2841d37SMarkus Klotzbuecher 
62f2841d37SMarkus Klotzbuecher extern uint32_t
63f2841d37SMarkus Klotzbuecher cyg_ether_crc32_accumulate(uint32_t crc, unsigned char *s, int len);
64f2841d37SMarkus Klotzbuecher 
65*ecb57f69SStefan Roese /* 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */
66f2841d37SMarkus Klotzbuecher 
67*ecb57f69SStefan Roese uint16_t crc16_ccitt(uint16_t crc_start, unsigned char *s, int len);
68f2841d37SMarkus Klotzbuecher 
69cf48eb9aSWolfgang Denk #endif /* _SERVICES_CRC_CRC_H_ */
70