All of lore.kernel.org
 help / color / mirror / Atom feed
From: Amit Kucheria <amit.kucheria@linaro.org>
To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	bjorn.andersson@linaro.org, edubezval@gmail.com,
	andy.gross@linaro.org, Andy Gross <agross@kernel.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Rob Herring <robh+dt@kernel.org>, Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Subject: [PATCH 04/15] drivers: thermal: tsens: Add debugfs support
Date: Fri, 26 Jul 2019 03:48:39 +0530	[thread overview]
Message-ID: <534b5017c2210ba8d541c206dace204d6617b4c9.1564091601.git.amit.kucheria@linaro.org> (raw)
In-Reply-To: <cover.1564091601.git.amit.kucheria@linaro.org>
In-Reply-To: <cover.1564091601.git.amit.kucheria@linaro.org>

Dump some basic version info and sensor details into debugfs

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
---
 drivers/thermal/qcom/tsens-common.c | 85 +++++++++++++++++++++++++++++
 drivers/thermal/qcom/tsens.c        |  2 +
 drivers/thermal/qcom/tsens.h        |  6 ++
 3 files changed, 93 insertions(+)

diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 7437bfe196e5..7ab2e740a1da 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
  */
 
+#include <linux/debugfs.h>
 #include <linux/err.h>
 #include <linux/io.h>
 #include <linux/nvmem-consumer.h>
@@ -139,6 +140,79 @@ int get_temp_common(struct tsens_sensor *s, int *temp)
 	return 0;
 }
 
+#ifdef CONFIG_DEBUG_FS
+static int dbg_sensors_show(struct seq_file *s, void *data)
+{
+	struct platform_device *pdev = s->private;
+	struct tsens_priv *priv = platform_get_drvdata(pdev);
+	int i;
+
+	seq_printf(s, "max: %2d\nnum: %2d\n\n",
+		   priv->feat->max_sensors, priv->num_sensors);
+
+	seq_puts(s, "      id   slope  offset\n------------------------\n");
+	for (i = 0;  i < priv->num_sensors; i++) {
+		seq_printf(s, "%8d%8d%8d\n", priv->sensor[i].hw_id,
+			   priv->sensor[i].slope, priv->sensor[i].offset);
+	}
+
+	return 0;
+}
+
+static int dbg_version_show(struct seq_file *s, void *data)
+{
+	struct platform_device *pdev = s->private;
+	struct tsens_priv *priv = platform_get_drvdata(pdev);
+	u32 maj_ver, min_ver, step_ver;
+	int ret;
+
+	if (tsens_ver(priv) > VER_0_1) {
+		ret = regmap_field_read(priv->rf[VER_MAJOR], &maj_ver);
+		if (ret)
+			return ret;
+		ret = regmap_field_read(priv->rf[VER_MINOR], &min_ver);
+		if (ret)
+			return ret;
+		ret = regmap_field_read(priv->rf[VER_STEP], &step_ver);
+		if (ret)
+			return ret;
+		seq_printf(s, "%d.%d.%d\n", maj_ver, min_ver, step_ver);
+	} else {
+		seq_puts(s, "0.1.0\n");
+	}
+
+	return 0;
+}
+
+DEFINE_SHOW_ATTRIBUTE(dbg_version);
+DEFINE_SHOW_ATTRIBUTE(dbg_sensors);
+
+static void tsens_debug_init(struct platform_device *pdev)
+{
+	struct tsens_priv *priv = platform_get_drvdata(pdev);
+	struct dentry *root, *file;
+
+	root = debugfs_lookup("tsens", NULL);
+	if (!root)
+		priv->debug_root = debugfs_create_dir("tsens", NULL);
+	else
+		priv->debug_root = root;
+
+	file = debugfs_lookup("version", priv->debug_root);
+	if (!file)
+		debugfs_create_file("version", 0444, priv->debug_root,
+				    pdev, &dbg_version_fops);
+
+	/* A directory for each instance of the TSENS IP */
+	priv->debug = debugfs_create_dir(dev_name(&pdev->dev), priv->debug_root);
+	debugfs_create_file("sensors", 0444, priv->debug, pdev, &dbg_sensors_fops);
+
+	return;
+}
+#else
+static inline void tsens_debug_init(struct platform_device *pdev) {}
+#endif
+
 static const struct regmap_config tsens_config = {
 	.name		= "tm",
 	.reg_bits	= 32,
@@ -199,6 +273,15 @@ int __init init_common(struct tsens_priv *priv)
 		goto err_put_device;
 	}
 
+	if (tsens_ver(priv) > VER_0_1) {
+		for (i = VER_MAJOR; i <= VER_STEP; i++) {
+			priv->rf[i] = devm_regmap_field_alloc(dev, priv->srot_map,
+							      priv->fields[i]);
+			if (IS_ERR(priv->rf[i]))
+				return PTR_ERR(priv->rf[i]);
+		}
+	}
+
 	priv->rf[TSENS_EN] = devm_regmap_field_alloc(dev, priv->srot_map,
 						     priv->fields[TSENS_EN]);
 	if (IS_ERR(priv->rf[TSENS_EN])) {
@@ -238,6 +321,8 @@ int __init init_common(struct tsens_priv *priv)
 		}
 	}
 
+	tsens_debug_init(op);
+
 	return 0;
 
 err_put_device:
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 06c6bbd69a1a..772aa76b50e1 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
  */
 
+#include <linux/debugfs.h>
 #include <linux/err.h>
 #include <linux/module.h>
 #include <linux/of.h>
@@ -176,6 +177,7 @@ static int tsens_remove(struct platform_device *pdev)
 {
 	struct tsens_priv *priv = platform_get_drvdata(pdev);
 
+	debugfs_remove_recursive(priv->debug_root);
 	if (priv->ops->disable)
 		priv->ops->disable(priv);
 
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index d022e726d074..e1d6af71b2b9 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -292,6 +292,8 @@ struct tsens_context {
  * @feat: features of the IP
  * @fields: bitfield locations
  * @ops: pointer to list of callbacks supported by this device
+ * @debug_root: pointer to debugfs dentry for all tsens
+ * @debug: pointer to debugfs dentry for tsens controller
  * @sensor: list of sensors attached to this device
  */
 struct tsens_priv {
@@ -305,6 +307,10 @@ struct tsens_priv {
 	const struct tsens_features	*feat;
 	const struct reg_field		*fields;
 	const struct tsens_ops		*ops;
+
+	struct dentry			*debug_root;
+	struct dentry			*debug;
+
 	struct tsens_sensor		sensor[0];
 };
 
-- 
2.17.1


  parent reply	other threads:[~2019-07-25 22:20 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-25 22:18 [PATCH 00/15] thermal: qcom: tsens: Add interrupt support Amit Kucheria
2019-07-25 22:18 ` [PATCH 01/15] drivers: thermal: tsens: Get rid of id field in tsens_sensor Amit Kucheria
2019-08-17  4:01   ` Stephen Boyd
2019-08-19 11:55   ` Daniel Lezcano
2019-07-25 22:18 ` [PATCH 02/15] drivers: thermal: tsens: Simplify code flow in tsens_probe Amit Kucheria
2019-08-17  4:02   ` Stephen Boyd
2019-08-19 11:57   ` Daniel Lezcano
2019-07-25 22:18 ` [PATCH 03/15] drivers: thermal: tsens: Add __func__ identifier to debug statements Amit Kucheria
2019-08-17  4:03   ` Stephen Boyd
2019-08-19 13:19   ` Daniel Lezcano
2019-07-25 22:18 ` Amit Kucheria [this message]
2019-08-17  4:07   ` [PATCH 04/15] drivers: thermal: tsens: Add debugfs support Stephen Boyd
2019-08-19  7:58     ` Amit Kucheria
2019-08-19 14:27       ` Stephen Boyd
2019-08-21 12:55         ` Amit Kucheria
2019-08-26 20:55           ` Stephen Boyd
2019-07-25 22:18 ` [PATCH 05/15] arm: dts: msm8974: thermal: Add thermal zones for each sensor Amit Kucheria
2019-08-08 20:49   ` Brian Masney
2019-07-25 22:18 ` [PATCH 06/15] arm64: dts: msm8916: thermal: Fixup HW ids for cpu sensors Amit Kucheria
2019-08-13 13:25   ` Daniel Lezcano
2019-07-25 22:18 ` [PATCH 07/15] dt: thermal: tsens: Document interrupt support in tsens driver Amit Kucheria
2019-08-16 21:36   ` Rob Herring
2019-08-16 22:02     ` Amit Kucheria
2019-08-17  4:10       ` Stephen Boyd
2019-08-17 19:25       ` Rob Herring
2019-08-19  7:10         ` Amit Kucheria
2019-08-19 13:07           ` Rob Herring
2019-07-25 22:18 ` [PATCH 08/15] arm64: dts: sdm845: thermal: Add interrupt support Amit Kucheria
2019-07-25 22:18 ` [PATCH 09/15] arm64: dts: msm8996: " Amit Kucheria
2019-07-25 22:18 ` [PATCH 10/15] arm64: dts: msm8998: " Amit Kucheria
2019-07-25 22:18 ` [PATCH 11/15] arm64: dts: qcs404: " Amit Kucheria
2019-07-25 22:18 ` [PATCH 12/15] arm64: dts: msm8974: " Amit Kucheria
2019-07-29  9:03   ` Luca Weiss
2019-07-29  9:29     ` Amit Kucheria
2019-08-08 20:49   ` Brian Masney
2019-07-25 22:18 ` [PATCH 13/15] arm64: dts: msm8916: " Amit Kucheria
2019-07-25 22:18 ` [PATCH 14/15] drivers: thermal: tsens: Create function to return sign-extended temperature Amit Kucheria
2019-08-17  4:16   ` Stephen Boyd
2019-08-19 20:51     ` Amit Kucheria
2019-07-25 22:18 ` [PATCH 15/15] drivers: thermal: tsens: Add interrupt support Amit Kucheria
2019-08-17  6:09   ` Stephen Boyd
2019-08-22 13:40     ` Amit Kucheria
2019-07-26 10:36 ` [PATCH 00/15] thermal: qcom: " Brian Masney
2019-07-26 10:44   ` Amit Kucheria
2019-07-26 11:10   ` Amit Kucheria
2019-07-26 11:10     ` Amit Kucheria
2019-07-26 11:29     ` Brian Masney
2019-07-26 11:29       ` Brian Masney
2019-07-27  7:28       ` Amit Kucheria
2019-07-27  7:28         ` Amit Kucheria
2019-07-29  9:07         ` Brian Masney
2019-07-29  9:07           ` Brian Masney
2019-07-29  9:32           ` Luca Weiss
2019-07-29  9:32             ` Luca Weiss
2019-07-29  9:50             ` Amit Kucheria
2019-07-29  9:50               ` Amit Kucheria
2019-08-12 15:28               ` Niklas Cassel
2019-08-12 15:28                 ` Niklas Cassel
2019-08-08 13:04 ` Amit Kucheria
2019-08-08 13:04   ` Amit Kucheria
2019-10-16  7:33 Amit Kucheria
2019-10-16  7:34 ` [PATCH 04/15] drivers: thermal: tsens: Add debugfs support Amit Kucheria

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=534b5017c2210ba8d541c206dace204d6617b4c9.1564091601.git.amit.kucheria@linaro.org \
    --to=amit.kucheria@linaro.org \
    --cc=agross@kernel.org \
    --cc=andy.gross@linaro.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=edubezval@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=rui.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.