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