mmrm_debug.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
  4. */
  5. #include <linux/slab.h>
  6. #include "mmrm_debug.h"
  7. int msm_mmrm_debug = MMRM_ERR | MMRM_WARN | MMRM_PRINTK;
  8. u8 msm_mmrm_enable_throttle_feature = 1;
  9. u8 msm_mmrm_allow_multiple_register = 0;
  10. #define MAX_DBG_BUF_SIZE 4096
  11. static ssize_t msm_mmrm_debugfs_info_read(
  12. struct file *file, char __user *buf, size_t count, loff_t *ppos)
  13. {
  14. char *dbuf, *cur, *end;
  15. ssize_t len = 0;
  16. dbuf = kzalloc(MAX_DBG_BUF_SIZE, GFP_KERNEL);
  17. if (!dbuf) {
  18. d_mpr_e("%s: Allocation failed!\n", __func__);
  19. return -ENOMEM;
  20. }
  21. cur = dbuf;
  22. end = cur + MAX_DBG_BUF_SIZE;
  23. // TODO: Fill cur here
  24. len = simple_read_from_buffer(buf, count, ppos, dbuf, cur - dbuf);
  25. kfree(dbuf);
  26. return len;
  27. }
  28. const struct file_operations msm_mmrm_debugfs_info_fops = {
  29. .open = simple_open,
  30. .read = msm_mmrm_debugfs_info_read,
  31. };
  32. struct dentry *msm_mmrm_debugfs_init(void)
  33. {
  34. struct dentry *dir;
  35. int file_val;
  36. /* create a directory in debugfs root (/sys/kernel/debug) */
  37. dir = debugfs_create_dir("msm_mmrm", NULL);
  38. if (IS_ERR_OR_NULL(dir)) {
  39. d_mpr_e("%s: Call to debugfs_create_dir(%s) failed!\n", __func__, "mmrm");
  40. goto failed_create_dir;
  41. }
  42. /* basic info */
  43. if (!debugfs_create_file("info", 0444, dir, &file_val, &msm_mmrm_debugfs_info_fops)) {
  44. d_mpr_e("%s: Call to debugfs_create_file(%s) failed!\n", __func__, "info");
  45. goto failed_create_dir;
  46. }
  47. /* add other params here */
  48. debugfs_create_u32("debug_level", 0644, dir, &msm_mmrm_debug);
  49. debugfs_create_u8("allow_multiple_register", 0644, dir, &msm_mmrm_allow_multiple_register);
  50. debugfs_create_u8("enable_throttle_feature", 0644, dir, &msm_mmrm_enable_throttle_feature);
  51. return dir;
  52. failed_create_dir:
  53. d_mpr_e("%s: error\n", __func__);
  54. return NULL;
  55. }
  56. void msm_mmrm_debugfs_deinit(struct dentry *dir)
  57. {
  58. debugfs_remove_recursive(dir);
  59. }