debugfs.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
  2. /* Copyright 2019 NXP */
  3. #include <linux/debugfs.h>
  4. #include "compat.h"
  5. #include "debugfs.h"
  6. #include "regs.h"
  7. #include "intern.h"
  8. static int caam_debugfs_u64_get(void *data, u64 *val)
  9. {
  10. *val = caam64_to_cpu(*(u64 *)data);
  11. return 0;
  12. }
  13. static int caam_debugfs_u32_get(void *data, u64 *val)
  14. {
  15. *val = caam32_to_cpu(*(u32 *)data);
  16. return 0;
  17. }
  18. DEFINE_DEBUGFS_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n");
  19. DEFINE_DEBUGFS_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n");
  20. #ifdef CONFIG_CAAM_QI
  21. /*
  22. * This is a counter for the number of times the congestion group (where all
  23. * the request and response queueus are) reached congestion. Incremented
  24. * each time the congestion callback is called with congested == true.
  25. */
  26. static u64 times_congested;
  27. void caam_debugfs_qi_congested(void)
  28. {
  29. times_congested++;
  30. }
  31. void caam_debugfs_qi_init(struct caam_drv_private *ctrlpriv)
  32. {
  33. debugfs_create_file("qi_congested", 0444, ctrlpriv->ctl,
  34. &times_congested, &caam_fops_u64_ro);
  35. }
  36. #endif
  37. void caam_debugfs_init(struct caam_drv_private *ctrlpriv, struct dentry *root)
  38. {
  39. struct caam_perfmon *perfmon;
  40. /*
  41. * FIXME: needs better naming distinction, as some amalgamation of
  42. * "caam" and nprop->full_name. The OF name isn't distinctive,
  43. * but does separate instances
  44. */
  45. perfmon = (struct caam_perfmon __force *)&ctrlpriv->ctrl->perfmon;
  46. ctrlpriv->ctl = debugfs_create_dir("ctl", root);
  47. debugfs_create_file("rq_dequeued", 0444, ctrlpriv->ctl,
  48. &perfmon->req_dequeued, &caam_fops_u64_ro);
  49. debugfs_create_file("ob_rq_encrypted", 0444, ctrlpriv->ctl,
  50. &perfmon->ob_enc_req, &caam_fops_u64_ro);
  51. debugfs_create_file("ib_rq_decrypted", 0444, ctrlpriv->ctl,
  52. &perfmon->ib_dec_req, &caam_fops_u64_ro);
  53. debugfs_create_file("ob_bytes_encrypted", 0444, ctrlpriv->ctl,
  54. &perfmon->ob_enc_bytes, &caam_fops_u64_ro);
  55. debugfs_create_file("ob_bytes_protected", 0444, ctrlpriv->ctl,
  56. &perfmon->ob_prot_bytes, &caam_fops_u64_ro);
  57. debugfs_create_file("ib_bytes_decrypted", 0444, ctrlpriv->ctl,
  58. &perfmon->ib_dec_bytes, &caam_fops_u64_ro);
  59. debugfs_create_file("ib_bytes_validated", 0444, ctrlpriv->ctl,
  60. &perfmon->ib_valid_bytes, &caam_fops_u64_ro);
  61. /* Controller level - global status values */
  62. debugfs_create_file("fault_addr", 0444, ctrlpriv->ctl,
  63. &perfmon->faultaddr, &caam_fops_u32_ro);
  64. debugfs_create_file("fault_detail", 0444, ctrlpriv->ctl,
  65. &perfmon->faultdetail, &caam_fops_u32_ro);
  66. debugfs_create_file("fault_status", 0444, ctrlpriv->ctl,
  67. &perfmon->status, &caam_fops_u32_ro);
  68. /* Internal covering keys (useful in non-secure mode only) */
  69. ctrlpriv->ctl_kek_wrap.data = (__force void *)&ctrlpriv->ctrl->kek[0];
  70. ctrlpriv->ctl_kek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
  71. debugfs_create_blob("kek", 0444, ctrlpriv->ctl,
  72. &ctrlpriv->ctl_kek_wrap);
  73. ctrlpriv->ctl_tkek_wrap.data = (__force void *)&ctrlpriv->ctrl->tkek[0];
  74. ctrlpriv->ctl_tkek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
  75. debugfs_create_blob("tkek", 0444, ctrlpriv->ctl,
  76. &ctrlpriv->ctl_tkek_wrap);
  77. ctrlpriv->ctl_tdsk_wrap.data = (__force void *)&ctrlpriv->ctrl->tdsk[0];
  78. ctrlpriv->ctl_tdsk_wrap.size = KEK_KEY_SIZE * sizeof(u32);
  79. debugfs_create_blob("tdsk", 0444, ctrlpriv->ctl,
  80. &ctrlpriv->ctl_tdsk_wrap);
  81. }