1*78ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 2*78ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */ 3*78ee8d1cSJulian Grajkowski #ifndef ADF_FW_COUNTERS_H_ 4*78ee8d1cSJulian Grajkowski #define ADF_FW_COUNTERS_H_ 5*78ee8d1cSJulian Grajkowski 6*78ee8d1cSJulian Grajkowski #include <linux/rwsem.h> 7*78ee8d1cSJulian Grajkowski #include "adf_accel_devices.h" 8*78ee8d1cSJulian Grajkowski 9*78ee8d1cSJulian Grajkowski #define FW_COUNTERS_MAX_STR_LEN 64 10*78ee8d1cSJulian Grajkowski #define FW_COUNTERS_MAX_KEY_LEN_IN_BYTES FW_COUNTERS_MAX_STR_LEN 11*78ee8d1cSJulian Grajkowski #define FW_COUNTERS_MAX_VAL_LEN_IN_BYTES FW_COUNTERS_MAX_STR_LEN 12*78ee8d1cSJulian Grajkowski #define FW_COUNTERS_MAX_SECTION_LEN_IN_BYTES FW_COUNTERS_MAX_STR_LEN 13*78ee8d1cSJulian Grajkowski #define ADF_FW_COUNTERS_NO_RESPONSE -1 14*78ee8d1cSJulian Grajkowski 15*78ee8d1cSJulian Grajkowski struct adf_fw_counters_val { 16*78ee8d1cSJulian Grajkowski char key[FW_COUNTERS_MAX_KEY_LEN_IN_BYTES]; 17*78ee8d1cSJulian Grajkowski char val[FW_COUNTERS_MAX_VAL_LEN_IN_BYTES]; 18*78ee8d1cSJulian Grajkowski struct list_head list; 19*78ee8d1cSJulian Grajkowski }; 20*78ee8d1cSJulian Grajkowski 21*78ee8d1cSJulian Grajkowski struct adf_fw_counters_section { 22*78ee8d1cSJulian Grajkowski char name[FW_COUNTERS_MAX_SECTION_LEN_IN_BYTES]; 23*78ee8d1cSJulian Grajkowski struct list_head list; 24*78ee8d1cSJulian Grajkowski struct list_head param_head; 25*78ee8d1cSJulian Grajkowski }; 26*78ee8d1cSJulian Grajkowski 27*78ee8d1cSJulian Grajkowski struct adf_fw_counters_data { 28*78ee8d1cSJulian Grajkowski struct list_head ae_sec_list; 29*78ee8d1cSJulian Grajkowski struct sysctl_oid *debug; 30*78ee8d1cSJulian Grajkowski struct rw_semaphore lock; 31*78ee8d1cSJulian Grajkowski }; 32*78ee8d1cSJulian Grajkowski 33*78ee8d1cSJulian Grajkowski int adf_fw_counters_add(struct adf_accel_dev *accel_dev); 34*78ee8d1cSJulian Grajkowski void adf_fw_counters_remove(struct adf_accel_dev *accel_dev); 35*78ee8d1cSJulian Grajkowski int adf_fw_count_ras_event(struct adf_accel_dev *accel_dev, 36*78ee8d1cSJulian Grajkowski u32 *ras_event, 37*78ee8d1cSJulian Grajkowski char *aeidstr); 38*78ee8d1cSJulian Grajkowski 39*78ee8d1cSJulian Grajkowski #endif /* ADF_FW_COUNTERS_H_ */ 40