1*a4b16dadSTom Zanussi /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
2*a4b16dadSTom Zanussi /* Copyright(c) 2021 Intel Corporation */
3*a4b16dadSTom Zanussi #ifndef ADF_PFVF_UTILS_H
4*a4b16dadSTom Zanussi #define ADF_PFVF_UTILS_H
5*a4b16dadSTom Zanussi 
6*a4b16dadSTom Zanussi #include <linux/types.h>
7*a4b16dadSTom Zanussi #include "adf_pfvf_msg.h"
8*a4b16dadSTom Zanussi 
9*a4b16dadSTom Zanussi /* How long to wait for far side to acknowledge receipt */
10*a4b16dadSTom Zanussi #define ADF_PFVF_MSG_ACK_DELAY_US	4
11*a4b16dadSTom Zanussi #define ADF_PFVF_MSG_ACK_MAX_DELAY_US	(1 * USEC_PER_SEC)
12*a4b16dadSTom Zanussi 
13*a4b16dadSTom Zanussi u8 adf_pfvf_calc_blkmsg_crc(u8 const *buf, u8 buf_len);
14*a4b16dadSTom Zanussi void adf_pfvf_crc_init(void);
15*a4b16dadSTom Zanussi 
16*a4b16dadSTom Zanussi struct pfvf_field_format {
17*a4b16dadSTom Zanussi 	u8  offset;
18*a4b16dadSTom Zanussi 	u32 mask;
19*a4b16dadSTom Zanussi };
20*a4b16dadSTom Zanussi 
21*a4b16dadSTom Zanussi struct pfvf_csr_format {
22*a4b16dadSTom Zanussi 	struct pfvf_field_format type;
23*a4b16dadSTom Zanussi 	struct pfvf_field_format data;
24*a4b16dadSTom Zanussi };
25*a4b16dadSTom Zanussi 
26*a4b16dadSTom Zanussi u32 adf_pfvf_csr_msg_of(struct adf_accel_dev *accel_dev, struct pfvf_message msg,
27*a4b16dadSTom Zanussi 			const struct pfvf_csr_format *fmt);
28*a4b16dadSTom Zanussi struct pfvf_message adf_pfvf_message_of(struct adf_accel_dev *accel_dev, u32 raw_msg,
29*a4b16dadSTom Zanussi 					const struct pfvf_csr_format *fmt);
30*a4b16dadSTom Zanussi 
31*a4b16dadSTom Zanussi #endif /* ADF_PFVF_UTILS_H */
32