@@ -27,6 +27,8 @@ ifneq ($(CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI),)
ccflags-y += -DCONFIG_CAAM_QI
endif
+caam-$(CONFIG_DEBUG_FS) += debugfs.o
+
obj-$(CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM) += dpaa2_caam.o
dpaa2_caam-y := caamalg_qi2.o dpseci.o
@@ -13,6 +13,7 @@
#include <linux/fsl/mc.h>
#include "compat.h"
+#include "debugfs.h"
#include "regs.h"
#include "intern.h"
#include "jr.h"
@@ -582,12 +583,10 @@ static int init_clocks(struct device *dev, const struct caam_imx_data *data)
return devm_add_action_or_reset(dev, disable_clocks, ctrlpriv);
}
-#ifdef CONFIG_DEBUG_FS
static void caam_remove_debugfs(void *root)
{
debugfs_remove_recursive(root);
}
-#endif
#ifdef CONFIG_FSL_MC_BUS
static bool check_version(struct fsl_mc_version *mc_version, u32 major,
@@ -613,21 +612,22 @@ static bool check_version(struct fsl_mc_version *mc_version, u32 major,
static int caam_probe(struct platform_device *pdev)
{
int ret, ring, gen_sk, ent_delay = RTSDCTL_ENT_DLY_MIN;
+ struct debugfs_blob_wrapper blob0 __maybe_unused;
u64 caam_id;
const struct soc_device_attribute *imx_soc_match;
struct device *dev;
struct device_node *nprop, *np;
struct caam_ctrl __iomem *ctrl;
struct caam_drv_private *ctrlpriv;
-#ifdef CONFIG_DEBUG_FS
+ struct debugfs_blob_wrapper *blob;
struct caam_perfmon *perfmon;
struct dentry *dfs_root;
-#endif
u32 scfgr, comp_params;
u8 rng_vid;
int pg_size;
int BLOCK_OFFSET = 0;
bool pr_support = false;
+ struct dentry *ctl;
ctrlpriv = devm_kzalloc(&pdev->dev, sizeof(*ctrlpriv), GFP_KERNEL);
if (!ctrlpriv)
@@ -777,7 +777,6 @@ static int caam_probe(struct platform_device *pdev)
ctrlpriv->era = caam_get_era(ctrl);
ctrlpriv->domain = iommu_get_domain_for_dev(dev);
-#ifdef CONFIG_DEBUG_FS
/*
* FIXME: needs better naming distinction, as some amalgamation of
* "caam" and nprop->full_name. The OF name isn't distinctive,
@@ -786,11 +785,16 @@ static int caam_probe(struct platform_device *pdev)
perfmon = (struct caam_perfmon __force *)&ctrl->perfmon;
dfs_root = debugfs_create_dir(dev_name(dev), NULL);
- ret = devm_add_action_or_reset(dev, caam_remove_debugfs, dfs_root);
- if (ret)
- return ret;
+ if (IS_ENABLED(CONFIG_DEBUG_FS)) {
+ ret = devm_add_action_or_reset(dev, caam_remove_debugfs,
+ dfs_root);
+ if (ret)
+ return ret;
+ }
- ctrlpriv->ctl = debugfs_create_dir("ctl", dfs_root);
+ ctl = debugfs_create_dir("ctl", dfs_root);
+#ifdef CONFIG_DEBUG_FS
+ ctrlpriv->ctl = ctl;
#endif
/* Check to see if (DPAA 1.x) QI present. If so, enable */
@@ -912,56 +916,54 @@ static int caam_probe(struct platform_device *pdev)
dev_info(dev, "job rings = %d, qi = %d\n",
ctrlpriv->total_jobrs, ctrlpriv->qi_present);
-#ifdef CONFIG_DEBUG_FS
- debugfs_create_file("rq_dequeued", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->req_dequeued,
- &caam_fops_u64_ro);
- debugfs_create_file("ob_rq_encrypted", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->ob_enc_req,
- &caam_fops_u64_ro);
- debugfs_create_file("ib_rq_decrypted", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->ib_dec_req,
- &caam_fops_u64_ro);
- debugfs_create_file("ob_bytes_encrypted", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->ob_enc_bytes,
- &caam_fops_u64_ro);
- debugfs_create_file("ob_bytes_protected", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->ob_prot_bytes,
- &caam_fops_u64_ro);
- debugfs_create_file("ib_bytes_decrypted", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->ib_dec_bytes,
- &caam_fops_u64_ro);
- debugfs_create_file("ib_bytes_validated", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->ib_valid_bytes,
- &caam_fops_u64_ro);
+ caam_debugfs_create_file_u64("rq_dequeued",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->req_dequeued);
+ caam_debugfs_create_file_u64("ob_rq_encrypted",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->ob_enc_req);
+ caam_debugfs_create_file_u64("ib_rq_decrypted",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->ib_dec_req);
+ caam_debugfs_create_file_u64("ob_bytes_encrypted",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->ob_enc_bytes);
+ caam_debugfs_create_file_u64("ob_bytes_protected",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->ob_prot_bytes);
+ caam_debugfs_create_file_u64("ib_bytes_decrypted",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->ib_dec_bytes);
+ caam_debugfs_create_file_u64("ib_bytes_validated",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->ib_valid_bytes);
/* Controller level - global status values */
- debugfs_create_file("fault_addr", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->faultaddr,
- &caam_fops_u32_ro);
- debugfs_create_file("fault_detail", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->faultdetail,
- &caam_fops_u32_ro);
- debugfs_create_file("fault_status", S_IRUSR | S_IRGRP | S_IROTH,
- ctrlpriv->ctl, &perfmon->status,
- &caam_fops_u32_ro);
+ caam_debugfs_create_file_u32("fault_addr",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->faultaddr);
+ caam_debugfs_create_file_u32("fault_detail",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->faultdetail);
+ caam_debugfs_create_file_u32("fault_status",
+ S_IRUSR | S_IRGRP | S_IROTH,
+ ctl, &perfmon->status);
/* Internal covering keys (useful in non-secure mode only) */
- ctrlpriv->ctl_kek_wrap.data = (__force void *)&ctrlpriv->ctrl->kek[0];
- ctrlpriv->ctl_kek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
- debugfs_create_blob("kek", S_IRUSR | S_IRGRP | S_IROTH, ctrlpriv->ctl,
- &ctrlpriv->ctl_kek_wrap);
-
- ctrlpriv->ctl_tkek_wrap.data = (__force void *)&ctrlpriv->ctrl->tkek[0];
- ctrlpriv->ctl_tkek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
- debugfs_create_blob("tkek", S_IRUSR | S_IRGRP | S_IROTH, ctrlpriv->ctl,
- &ctrlpriv->ctl_tkek_wrap);
-
- ctrlpriv->ctl_tdsk_wrap.data = (__force void *)&ctrlpriv->ctrl->tdsk[0];
- ctrlpriv->ctl_tdsk_wrap.size = KEK_KEY_SIZE * sizeof(u32);
- debugfs_create_blob("tdsk", S_IRUSR | S_IRGRP | S_IROTH, ctrlpriv->ctl,
- &ctrlpriv->ctl_tdsk_wrap);
-#endif
+ blob = caam_debugfs_ptr(&ctrlpriv->ctl_kek_wrap, &blob0);
+ blob->data = (__force void *)&ctrlpriv->ctrl->kek[0];
+ blob->size = KEK_KEY_SIZE * sizeof(u32);
+ debugfs_create_blob("kek", S_IRUSR | S_IRGRP | S_IROTH, ctl, blob);
+
+ blob = caam_debugfs_ptr(&ctrlpriv->ctl_tkek_wrap, &blob0);
+ blob->data = (__force void *)&ctrlpriv->ctrl->tkek[0];
+ blob->size = KEK_KEY_SIZE * sizeof(u32);
+ debugfs_create_blob("tkek", S_IRUSR | S_IRGRP | S_IROTH, ctl, blob);
+
+ blob = caam_debugfs_ptr(&ctrlpriv->ctl_tdsk_wrap, &blob0);
+ blob->data = (__force void *)&ctrlpriv->ctrl->tdsk[0];
+ blob->size = KEK_KEY_SIZE * sizeof(u32);
+ debugfs_create_blob("tdsk", S_IRUSR | S_IRGRP | S_IROTH, ctl, blob);
ret = devm_of_platform_populate(dev);
if (ret)
new file mode 100644
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/* Copyright 2019 NXP */
+
+#include <linux/debugfs.h>
+#include "debugfs.h"
+#include "regs.h"
+
+static int caam_debugfs_u64_get(void *data, u64 *val)
+{
+ *val = caam64_to_cpu(*(u64 *)data);
+ return 0;
+}
+
+static int caam_debugfs_u32_get(void *data, u64 *val)
+{
+ *val = caam32_to_cpu(*(u32 *)data);
+ return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n");
+DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n");
+
+struct dentry *caam_debugfs_create_file_u32(const char *name, umode_t mode,
+ struct dentry *parent, void *data)
+{
+ return debugfs_create_file(name, mode, parent, data,
+ &caam_fops_u32_ro);
+}
+
+struct dentry *caam_debugfs_create_file_u64(const char *name, umode_t mode,
+ struct dentry *parent, void *data)
+{
+ return debugfs_create_file(name, mode, parent, data,
+ &caam_fops_u64_ro);
+}
new file mode 100644
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
+/* Copyright 2019 NXP */
+
+#ifndef CAAM_DEBUGFS_H
+#define CAAM_DEBUGFS_H
+
+#include <linux/err.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+
+struct dentry;
+
+#ifdef CONFIG_DEBUG_FS
+#define caam_debugfs_ptr(X, Y) X
+
+struct dentry *caam_debugfs_create_file_u32(const char *name, umode_t mode,
+ struct dentry *parent, void *data);
+struct dentry *caam_debugfs_create_file_u64(const char *name, umode_t mode,
+ struct dentry *parent, void *data);
+#else
+#define caam_debugfs_ptr(X, Y) Y
+
+static inline struct dentry *caam_debugfs_create_file_u32(
+ const char *name, umode_t mode, struct dentry *parent, void *data)
+{
+ return ERR_PTR(-ENODEV);
+}
+
+static inline struct dentry *caam_debugfs_create_file_u64(
+ const char *name, umode_t mode, struct dentry *parent, void *data)
+{
+ return ERR_PTR(-ENODEV);
+}
+#endif /* CONFIG_DEBUG_FS */
+
+#endif /* CAAM_DEBUGFS_H */
@@ -195,23 +195,6 @@ static inline void caam_qi_algapi_exit(void)
#endif /* CONFIG_CAAM_QI */
-#ifdef CONFIG_DEBUG_FS
-static int caam_debugfs_u64_get(void *data, u64 *val)
-{
- *val = caam64_to_cpu(*(u64 *)data);
- return 0;
-}
-
-static int caam_debugfs_u32_get(void *data, u64 *val)
-{
- *val = caam32_to_cpu(*(u32 *)data);
- return 0;
-}
-
-DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u32_ro, caam_debugfs_u32_get, NULL, "%llu\n");
-DEFINE_SIMPLE_ATTRIBUTE(caam_fops_u64_ro, caam_debugfs_u64_get, NULL, "%llu\n");
-#endif
-
static inline u64 caam_get_dma_mask(struct device *dev)
{
struct device_node *nprop = dev->of_node;
@@ -11,6 +11,7 @@
#include <linux/kthread.h>
#include <soc/fsl/qman.h>
+#include "debugfs.h"
#include "regs.h"
#include "qi.h"
#include "desc.h"
@@ -776,8 +777,8 @@ int caam_qi_init(struct platform_device *caam_pdev)
}
#ifdef CONFIG_DEBUG_FS
- debugfs_create_file("qi_congested", 0444, ctrlpriv->ctl,
- ×_congested, &caam_fops_u64_ro);
+ caam_debugfs_create_file_u64("qi_congested", 0444, ctrlpriv->ctl,
+ ×_congested);
#endif
err = devm_add_action_or_reset(qidev, caam_qi_shutdown, ctrlpriv);