xref: /kernel/linux/linux-6.6/lib/842/842_debugfs.h (revision 62306a36)
162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#ifndef __842_DEBUGFS_H__
462306a36Sopenharmony_ci#define __842_DEBUGFS_H__
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/debugfs.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_cistatic bool sw842_template_counts;
962306a36Sopenharmony_cimodule_param_named(template_counts, sw842_template_counts, bool, 0444);
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistatic atomic_t template_count[OPS_MAX], template_repeat_count,
1262306a36Sopenharmony_ci	template_zeros_count, template_short_data_count, template_end_count;
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistatic struct dentry *sw842_debugfs_root;
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistatic int __init sw842_debugfs_create(void)
1762306a36Sopenharmony_ci{
1862306a36Sopenharmony_ci	umode_t m = S_IRUGO | S_IWUSR;
1962306a36Sopenharmony_ci	int i;
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	if (!debugfs_initialized())
2262306a36Sopenharmony_ci		return -ENODEV;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	sw842_debugfs_root = debugfs_create_dir(MODULE_NAME, NULL);
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	for (i = 0; i < ARRAY_SIZE(template_count); i++) {
2762306a36Sopenharmony_ci		char name[32];
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci		snprintf(name, 32, "template_%02x", i);
3062306a36Sopenharmony_ci		debugfs_create_atomic_t(name, m, sw842_debugfs_root,
3162306a36Sopenharmony_ci					&template_count[i]);
3262306a36Sopenharmony_ci	}
3362306a36Sopenharmony_ci	debugfs_create_atomic_t("template_repeat", m, sw842_debugfs_root,
3462306a36Sopenharmony_ci				&template_repeat_count);
3562306a36Sopenharmony_ci	debugfs_create_atomic_t("template_zeros", m, sw842_debugfs_root,
3662306a36Sopenharmony_ci				&template_zeros_count);
3762306a36Sopenharmony_ci	debugfs_create_atomic_t("template_short_data", m, sw842_debugfs_root,
3862306a36Sopenharmony_ci				&template_short_data_count);
3962306a36Sopenharmony_ci	debugfs_create_atomic_t("template_end", m, sw842_debugfs_root,
4062306a36Sopenharmony_ci				&template_end_count);
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	return 0;
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cistatic void __exit sw842_debugfs_remove(void)
4662306a36Sopenharmony_ci{
4762306a36Sopenharmony_ci	debugfs_remove_recursive(sw842_debugfs_root);
4862306a36Sopenharmony_ci}
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci#endif
51