1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright (c) 2013 Google, Inc 4 */ 5 6#ifdef USE_HOSTCC 7#include <arpa/inet.h> 8#endif 9#include <u-boot/crc.h> 10 11#define POLY (0x1070U << 3) 12 13static unsigned char _crc8(unsigned short data) 14{ 15 int i; 16 17 for (i = 0; i < 8; i++) { 18 if (data & 0x8000) 19 data = data ^ POLY; 20 data = data << 1; 21 } 22 23 return (unsigned char)(data >> 8); 24} 25 26unsigned int crc8(unsigned int crc, const unsigned char *vptr, int len) 27{ 28 int i; 29 30 for (i = 0; i < len; i++) 31 crc = _crc8((crc ^ vptr[i]) << 8); 32 33 return crc; 34} 35