nitrox_debugfs.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // SPDX-License-Identifier: GPL-2.0
  2. #include <linux/seq_file.h>
  3. #include <linux/debugfs.h>
  4. #include "nitrox_csr.h"
  5. #include "nitrox_debugfs.h"
  6. #include "nitrox_dev.h"
  7. static int firmware_show(struct seq_file *s, void *v)
  8. {
  9. struct nitrox_device *ndev = s->private;
  10. seq_printf(s, "Version: %s\n", ndev->hw.fw_name[0]);
  11. seq_printf(s, "Version: %s\n", ndev->hw.fw_name[1]);
  12. return 0;
  13. }
  14. DEFINE_SHOW_ATTRIBUTE(firmware);
  15. static int device_show(struct seq_file *s, void *v)
  16. {
  17. struct nitrox_device *ndev = s->private;
  18. seq_printf(s, "NITROX [%d]\n", ndev->idx);
  19. seq_printf(s, " Part Name: %s\n", ndev->hw.partname);
  20. seq_printf(s, " Frequency: %d MHz\n", ndev->hw.freq);
  21. seq_printf(s, " Device ID: 0x%0x\n", ndev->hw.device_id);
  22. seq_printf(s, " Revision ID: 0x%0x\n", ndev->hw.revision_id);
  23. seq_printf(s, " Cores: [AE=%u SE=%u ZIP=%u]\n",
  24. ndev->hw.ae_cores, ndev->hw.se_cores, ndev->hw.zip_cores);
  25. return 0;
  26. }
  27. DEFINE_SHOW_ATTRIBUTE(device);
  28. static int stats_show(struct seq_file *s, void *v)
  29. {
  30. struct nitrox_device *ndev = s->private;
  31. seq_printf(s, "NITROX [%d] Request Statistics\n", ndev->idx);
  32. seq_printf(s, " Posted: %llu\n",
  33. (u64)atomic64_read(&ndev->stats.posted));
  34. seq_printf(s, " Completed: %llu\n",
  35. (u64)atomic64_read(&ndev->stats.completed));
  36. seq_printf(s, " Dropped: %llu\n",
  37. (u64)atomic64_read(&ndev->stats.dropped));
  38. return 0;
  39. }
  40. DEFINE_SHOW_ATTRIBUTE(stats);
  41. void nitrox_debugfs_exit(struct nitrox_device *ndev)
  42. {
  43. debugfs_remove_recursive(ndev->debugfs_dir);
  44. ndev->debugfs_dir = NULL;
  45. }
  46. void nitrox_debugfs_init(struct nitrox_device *ndev)
  47. {
  48. struct dentry *dir;
  49. dir = debugfs_create_dir(KBUILD_MODNAME, NULL);
  50. ndev->debugfs_dir = dir;
  51. debugfs_create_file("firmware", 0400, dir, ndev, &firmware_fops);
  52. debugfs_create_file("device", 0400, dir, ndev, &device_fops);
  53. debugfs_create_file("stats", 0400, dir, ndev, &stats_fops);
  54. }