crc16.h 540 B

12345678910111213141516171819202122232425262728
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * crc16.h - CRC-16 routine
  4. *
  5. * Implements the standard CRC-16:
  6. * Width 16
  7. * Poly 0x8005 (x^16 + x^15 + x^2 + 1)
  8. * Init 0
  9. *
  10. * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com>
  11. */
  12. #ifndef __CRC16_H
  13. #define __CRC16_H
  14. #include <linux/types.h>
  15. extern u16 const crc16_table[256];
  16. extern u16 crc16(u16 crc, const u8 *buffer, size_t len);
  17. static inline u16 crc16_byte(u16 crc, const u8 data)
  18. {
  19. return (crc >> 8) ^ crc16_table[(crc ^ data) & 0xff];
  20. }
  21. #endif /* __CRC16_H */