uboot/lib/crc8.c
<<
>>
Prefs
   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#else
   9#include <common.h>
  10#endif
  11#include <u-boot/crc.h>
  12
  13#define POLY    (0x1070U << 3)
  14
  15static unsigned char _crc8(unsigned short data)
  16{
  17        int i;
  18
  19        for (i = 0; i < 8; i++) {
  20                if (data & 0x8000)
  21                        data = data ^ POLY;
  22                data = data << 1;
  23        }
  24
  25        return (unsigned char)(data >> 8);
  26}
  27
  28unsigned int crc8(unsigned int crc, const unsigned char *vptr, int len)
  29{
  30        int i;
  31
  32        for (i = 0; i < len; i++)
  33                crc = _crc8((crc ^ vptr[i]) << 8);
  34
  35        return crc;
  36}
  37