Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
0002 /* Copyright 2019 NXP */
0003 
0004 #include <linux/debugfs.h>
0005 #include "compat.h"
0006 #include "debugfs.h"
0007 #include "regs.h"
0008 #include "intern.h"
0009 
0010 static int caam_debugfs_u64_get(void *data, u64 *val)
0011 {
0012     *val = caam64_to_cpu(*(u64 *)data);
0013     return 0;
0014 }
0015 
0016 static int caam_debugfs_u32_get(void *data, u64 *val)
0017 {
0018     *val = caam32_to_cpu(*(u32 *)data);
0019     return 0;
0020 }
0021 
0022 DEFINE_DEBUGFS_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n");
0023 DEFINE_DEBUGFS_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n");
0024 
0025 #ifdef CONFIG_CAAM_QI
0026 /*
0027  * This is a counter for the number of times the congestion group (where all
0028  * the request and response queueus are) reached congestion. Incremented
0029  * each time the congestion callback is called with congested == true.
0030  */
0031 static u64 times_congested;
0032 
0033 void caam_debugfs_qi_congested(void)
0034 {
0035     times_congested++;
0036 }
0037 
0038 void caam_debugfs_qi_init(struct caam_drv_private *ctrlpriv)
0039 {
0040     debugfs_create_file("qi_congested", 0444, ctrlpriv->ctl,
0041                 &times_congested, &caam_fops_u64_ro);
0042 }
0043 #endif
0044 
0045 void caam_debugfs_init(struct caam_drv_private *ctrlpriv, struct dentry *root)
0046 {
0047     struct caam_perfmon *perfmon;
0048 
0049     /*
0050      * FIXME: needs better naming distinction, as some amalgamation of
0051      * "caam" and nprop->full_name. The OF name isn't distinctive,
0052      * but does separate instances
0053      */
0054     perfmon = (struct caam_perfmon __force *)&ctrlpriv->ctrl->perfmon;
0055 
0056     ctrlpriv->ctl = debugfs_create_dir("ctl", root);
0057 
0058     debugfs_create_file("rq_dequeued", 0444, ctrlpriv->ctl,
0059                 &perfmon->req_dequeued, &caam_fops_u64_ro);
0060     debugfs_create_file("ob_rq_encrypted", 0444, ctrlpriv->ctl,
0061                 &perfmon->ob_enc_req, &caam_fops_u64_ro);
0062     debugfs_create_file("ib_rq_decrypted", 0444, ctrlpriv->ctl,
0063                 &perfmon->ib_dec_req, &caam_fops_u64_ro);
0064     debugfs_create_file("ob_bytes_encrypted", 0444, ctrlpriv->ctl,
0065                 &perfmon->ob_enc_bytes, &caam_fops_u64_ro);
0066     debugfs_create_file("ob_bytes_protected", 0444, ctrlpriv->ctl,
0067                 &perfmon->ob_prot_bytes, &caam_fops_u64_ro);
0068     debugfs_create_file("ib_bytes_decrypted", 0444, ctrlpriv->ctl,
0069                 &perfmon->ib_dec_bytes, &caam_fops_u64_ro);
0070     debugfs_create_file("ib_bytes_validated", 0444, ctrlpriv->ctl,
0071                 &perfmon->ib_valid_bytes, &caam_fops_u64_ro);
0072 
0073     /* Controller level - global status values */
0074     debugfs_create_file("fault_addr", 0444, ctrlpriv->ctl,
0075                 &perfmon->faultaddr, &caam_fops_u32_ro);
0076     debugfs_create_file("fault_detail", 0444, ctrlpriv->ctl,
0077                 &perfmon->faultdetail, &caam_fops_u32_ro);
0078     debugfs_create_file("fault_status", 0444, ctrlpriv->ctl,
0079                 &perfmon->status, &caam_fops_u32_ro);
0080 
0081     /* Internal covering keys (useful in non-secure mode only) */
0082     ctrlpriv->ctl_kek_wrap.data = (__force void *)&ctrlpriv->ctrl->kek[0];
0083     ctrlpriv->ctl_kek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
0084     debugfs_create_blob("kek", 0444, ctrlpriv->ctl,
0085                 &ctrlpriv->ctl_kek_wrap);
0086 
0087     ctrlpriv->ctl_tkek_wrap.data = (__force void *)&ctrlpriv->ctrl->tkek[0];
0088     ctrlpriv->ctl_tkek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
0089     debugfs_create_blob("tkek", 0444, ctrlpriv->ctl,
0090                 &ctrlpriv->ctl_tkek_wrap);
0091 
0092     ctrlpriv->ctl_tdsk_wrap.data = (__force void *)&ctrlpriv->ctrl->tdsk[0];
0093     ctrlpriv->ctl_tdsk_wrap.size = KEK_KEY_SIZE * sizeof(u32);
0094     debugfs_create_blob("tdsk", 0444, ctrlpriv->ctl,
0095                 &ctrlpriv->ctl_tdsk_wrap);
0096 }