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