xref: /linux/drivers/crypto/intel/qat/qat_common/adf_pm_dbgfs_utils.h (revision 8d2b0853add1d7534dc0794e3c8e0b9e8c4ec640)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright(c) 2025 Intel Corporation */
3 #ifndef ADF_PM_DBGFS_UTILS_H_
4 #define ADF_PM_DBGFS_UTILS_H_
5 
6 #include <linux/stddef.h>
7 #include <linux/stringify.h>
8 #include <linux/types.h>
9 #include "icp_qat_fw_init_admin.h"
10 
11 #define PM_INFO_MEMBER_OFF(member)	\
12 	(offsetof(struct icp_qat_fw_init_admin_pm_info, member) / sizeof(u32))
13 
14 #define PM_INFO_REGSET_ENTRY_MASK(_reg_, _field_, _mask_)	\
15 {								\
16 	.reg_offset = PM_INFO_MEMBER_OFF(_reg_),		\
17 	.key = __stringify(_field_),				\
18 	.field_mask = _mask_,					\
19 }
20 
21 #define PM_INFO_REGSET_ENTRY32(_reg_, _field_)	\
22 	PM_INFO_REGSET_ENTRY_MASK(_reg_, _field_, GENMASK(31, 0))
23 
24 struct pm_status_row {
25 	int reg_offset;
26 	u32 field_mask;
27 	const char *key;
28 };
29 
30 int adf_pm_scnprint_table_upper_keys(char *buff, const struct pm_status_row *table,
31 				     u32 *pm_info_regs, size_t buff_size, int table_len);
32 
33 int adf_pm_scnprint_table_lower_keys(char *buff, const struct pm_status_row *table,
34 				     u32 *pm_info_regs, size_t buff_size, int table_len);
35 
36 #endif /* ADF_PM_DBGFS_UTILS_H_ */
37