pl111_debugfs.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright © 2017 Broadcom
  4. */
  5. #include <linux/seq_file.h>
  6. #include <drm/drm_debugfs.h>
  7. #include <drm/drm_file.h>
  8. #include "pl111_drm.h"
  9. #define REGDEF(reg) { reg, #reg }
  10. static const struct {
  11. u32 reg;
  12. const char *name;
  13. } pl111_reg_defs[] = {
  14. REGDEF(CLCD_TIM0),
  15. REGDEF(CLCD_TIM1),
  16. REGDEF(CLCD_TIM2),
  17. REGDEF(CLCD_TIM3),
  18. REGDEF(CLCD_UBAS),
  19. REGDEF(CLCD_LBAS),
  20. REGDEF(CLCD_PL111_CNTL),
  21. REGDEF(CLCD_PL111_IENB),
  22. REGDEF(CLCD_PL111_RIS),
  23. REGDEF(CLCD_PL111_MIS),
  24. REGDEF(CLCD_PL111_ICR),
  25. REGDEF(CLCD_PL111_UCUR),
  26. REGDEF(CLCD_PL111_LCUR),
  27. };
  28. static int pl111_debugfs_regs(struct seq_file *m, void *unused)
  29. {
  30. struct drm_info_node *node = (struct drm_info_node *)m->private;
  31. struct drm_device *dev = node->minor->dev;
  32. struct pl111_drm_dev_private *priv = dev->dev_private;
  33. int i;
  34. for (i = 0; i < ARRAY_SIZE(pl111_reg_defs); i++) {
  35. seq_printf(m, "%s (0x%04x): 0x%08x\n",
  36. pl111_reg_defs[i].name, pl111_reg_defs[i].reg,
  37. readl(priv->regs + pl111_reg_defs[i].reg));
  38. }
  39. return 0;
  40. }
  41. static const struct drm_info_list pl111_debugfs_list[] = {
  42. {"regs", pl111_debugfs_regs, 0},
  43. };
  44. void
  45. pl111_debugfs_init(struct drm_minor *minor)
  46. {
  47. drm_debugfs_create_files(pl111_debugfs_list,
  48. ARRAY_SIZE(pl111_debugfs_list),
  49. minor->debugfs_root, minor);
  50. }