19260db66SDamian Muszynski // SPDX-License-Identifier: GPL-2.0-only 29260db66SDamian Muszynski /* Copyright(c) 2023 Intel Corporation */ 39260db66SDamian Muszynski 49260db66SDamian Muszynski #include <linux/debugfs.h> 59260db66SDamian Muszynski #include "adf_accel_devices.h" 69260db66SDamian Muszynski #include "adf_cfg.h" 79260db66SDamian Muszynski #include "adf_common_drv.h" 89260db66SDamian Muszynski #include "adf_dbgfs.h" 9865b50feSLucas Segarra Fernandez #include "adf_fw_counters.h" 10359b84f8SDamian Muszynski #include "adf_heartbeat_dbgfs.h" 119260db66SDamian Muszynski 129260db66SDamian Muszynski /** 139260db66SDamian Muszynski * adf_dbgfs_init() - add persistent debugfs entries 149260db66SDamian Muszynski * @accel_dev: Pointer to acceleration device. 159260db66SDamian Muszynski * 169260db66SDamian Muszynski * This function creates debugfs entries that are persistent through a device 179260db66SDamian Muszynski * state change (from up to down or vice versa). 189260db66SDamian Muszynski */ adf_dbgfs_init(struct adf_accel_dev * accel_dev)199260db66SDamian Muszynskivoid adf_dbgfs_init(struct adf_accel_dev *accel_dev) 209260db66SDamian Muszynski { 219260db66SDamian Muszynski char name[ADF_DEVICE_NAME_LENGTH]; 229260db66SDamian Muszynski 239260db66SDamian Muszynski /* Create dev top level debugfs entry */ 249260db66SDamian Muszynski snprintf(name, sizeof(name), "%s%s_%s", ADF_DEVICE_NAME_PREFIX, 259260db66SDamian Muszynski accel_dev->hw_device->dev_class->name, 269260db66SDamian Muszynski pci_name(accel_dev->accel_pci_dev.pci_dev)); 279260db66SDamian Muszynski 28*2a064b78SCabiddu, Giovanni accel_dev->debugfs_dir = debugfs_create_dir(name, NULL); 299260db66SDamian Muszynski 309260db66SDamian Muszynski adf_cfg_dev_dbgfs_add(accel_dev); 319260db66SDamian Muszynski } 329260db66SDamian Muszynski EXPORT_SYMBOL_GPL(adf_dbgfs_init); 339260db66SDamian Muszynski 349260db66SDamian Muszynski /** 359260db66SDamian Muszynski * adf_dbgfs_exit() - remove persistent debugfs entries 369260db66SDamian Muszynski * @accel_dev: Pointer to acceleration device. 379260db66SDamian Muszynski */ adf_dbgfs_exit(struct adf_accel_dev * accel_dev)389260db66SDamian Muszynskivoid adf_dbgfs_exit(struct adf_accel_dev *accel_dev) 399260db66SDamian Muszynski { 409260db66SDamian Muszynski adf_cfg_dev_dbgfs_rm(accel_dev); 419260db66SDamian Muszynski debugfs_remove(accel_dev->debugfs_dir); 429260db66SDamian Muszynski } 439260db66SDamian Muszynski EXPORT_SYMBOL_GPL(adf_dbgfs_exit); 449260db66SDamian Muszynski 459260db66SDamian Muszynski /** 469260db66SDamian Muszynski * adf_dbgfs_add() - add non-persistent debugfs entries 479260db66SDamian Muszynski * @accel_dev: Pointer to acceleration device. 489260db66SDamian Muszynski * 499260db66SDamian Muszynski * This function creates debugfs entries that are not persistent through 509260db66SDamian Muszynski * a device state change (from up to down or vice versa). 519260db66SDamian Muszynski */ adf_dbgfs_add(struct adf_accel_dev * accel_dev)529260db66SDamian Muszynskivoid adf_dbgfs_add(struct adf_accel_dev *accel_dev) 539260db66SDamian Muszynski { 54359b84f8SDamian Muszynski if (!accel_dev->is_vf) { 55865b50feSLucas Segarra Fernandez adf_fw_counters_dbgfs_add(accel_dev); 56359b84f8SDamian Muszynski adf_heartbeat_dbgfs_add(accel_dev); 57359b84f8SDamian Muszynski } 589260db66SDamian Muszynski } 599260db66SDamian Muszynski 609260db66SDamian Muszynski /** 619260db66SDamian Muszynski * adf_dbgfs_rm() - remove non-persistent debugfs entries 629260db66SDamian Muszynski * @accel_dev: Pointer to acceleration device. 639260db66SDamian Muszynski */ adf_dbgfs_rm(struct adf_accel_dev * accel_dev)649260db66SDamian Muszynskivoid adf_dbgfs_rm(struct adf_accel_dev *accel_dev) 659260db66SDamian Muszynski { 66359b84f8SDamian Muszynski if (!accel_dev->is_vf) { 67359b84f8SDamian Muszynski adf_heartbeat_dbgfs_rm(accel_dev); 68865b50feSLucas Segarra Fernandez adf_fw_counters_dbgfs_rm(accel_dev); 699260db66SDamian Muszynski } 70359b84f8SDamian Muszynski } 71