/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */
/*
 * Copyright (c) 2021 MediaTek Inc.
 */

#ifndef ATSC30_COMMON_ROHC_CRC_H
#define ATSC30_COMMON_ROHC_CRC_H

#include <linux/types.h>

enum {
	CRC_3_INIT_VAL = 0x7,
	CRC_7_INIT_VAL = 0x7f,
	CRC_8_INIT_VAL = 0xff,
};

typedef enum {
	ROHC_CRC_TYPE_UNKONWN = 0,
	ROHC_CRC_TYPE_3 = 3,
	ROHC_CRC_TYPE_7 = 7,
	ROHC_CRC_TYPE_8 = 8,
} rohc_crc_type_t;

u8 rohc_cal_crc(
		const rohc_crc_type_t crc_type,
		const u8 *const data,
		const u32 length,
		const u8 init_val);

#endif /* ATSC30_COMMON_ROHC_CRC_H */
