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