1*4882a593Smuzhiyun /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ 2*4882a593Smuzhiyun /* Copyright(c) 2014 - 2020 Intel Corporation */ 3*4882a593Smuzhiyun #ifndef ADF_CFG_H_ 4*4882a593Smuzhiyun #define ADF_CFG_H_ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/list.h> 7*4882a593Smuzhiyun #include <linux/rwsem.h> 8*4882a593Smuzhiyun #include <linux/debugfs.h> 9*4882a593Smuzhiyun #include "adf_accel_devices.h" 10*4882a593Smuzhiyun #include "adf_cfg_common.h" 11*4882a593Smuzhiyun #include "adf_cfg_strings.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun struct adf_cfg_key_val { 14*4882a593Smuzhiyun char key[ADF_CFG_MAX_KEY_LEN_IN_BYTES]; 15*4882a593Smuzhiyun char val[ADF_CFG_MAX_VAL_LEN_IN_BYTES]; 16*4882a593Smuzhiyun enum adf_cfg_val_type type; 17*4882a593Smuzhiyun struct list_head list; 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct adf_cfg_section { 21*4882a593Smuzhiyun char name[ADF_CFG_MAX_SECTION_LEN_IN_BYTES]; 22*4882a593Smuzhiyun struct list_head list; 23*4882a593Smuzhiyun struct list_head param_head; 24*4882a593Smuzhiyun }; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun struct adf_cfg_device_data { 27*4882a593Smuzhiyun struct list_head sec_list; 28*4882a593Smuzhiyun struct dentry *debug; 29*4882a593Smuzhiyun struct rw_semaphore lock; 30*4882a593Smuzhiyun }; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun int adf_cfg_dev_add(struct adf_accel_dev *accel_dev); 33*4882a593Smuzhiyun void adf_cfg_dev_remove(struct adf_accel_dev *accel_dev); 34*4882a593Smuzhiyun int adf_cfg_section_add(struct adf_accel_dev *accel_dev, const char *name); 35*4882a593Smuzhiyun void adf_cfg_del_all(struct adf_accel_dev *accel_dev); 36*4882a593Smuzhiyun int adf_cfg_add_key_value_param(struct adf_accel_dev *accel_dev, 37*4882a593Smuzhiyun const char *section_name, 38*4882a593Smuzhiyun const char *key, const void *val, 39*4882a593Smuzhiyun enum adf_cfg_val_type type); 40*4882a593Smuzhiyun int adf_cfg_get_param_value(struct adf_accel_dev *accel_dev, 41*4882a593Smuzhiyun const char *section, const char *name, char *value); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #endif 44