lkml.org 
[lkml]   [2021]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v5 6/6] qcom/soc/drivers: Add DTPM description for sdm845
Date
The DTPM framework does support now the hierarchy description.

The platform specific code can call the hierarchy creation function
with an array of struct dtpm_node pointing to their parents.

This patch provides a description of the big and Little CPUs and the
GPU and tie them together under a virtual package name. Only sdm845 is
described.

The description could be extended in the future with the memory
controller with devfreq if it has the energy information.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
drivers/soc/qcom/Kconfig | 9 ++++++
drivers/soc/qcom/Makefile | 1 +
drivers/soc/qcom/dtpm.c | 65 +++++++++++++++++++++++++++++++++++++++
3 files changed, 75 insertions(+)
create mode 100644 drivers/soc/qcom/dtpm.c

diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index e718b8735444..f21c1df2f2f9 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -228,4 +228,13 @@ config QCOM_APR
application processor and QDSP6. APR is
used by audio driver to configure QDSP6
ASM, ADM and AFE modules.
+
+config QCOM_DTPM
+ tristate "Qualcomm DTPM hierarchy"
+ depends on DTPM
+ help
+ Describe the hierarchy for the Dynamic Thermal Power
+ Management tree on this platform. That will create all the
+ power capping capable devices.
+
endmenu
diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile
index 70d5de69fd7b..cf38496c3f61 100644
--- a/drivers/soc/qcom/Makefile
+++ b/drivers/soc/qcom/Makefile
@@ -28,3 +28,4 @@ obj-$(CONFIG_QCOM_LLCC) += llcc-qcom.o
obj-$(CONFIG_QCOM_RPMHPD) += rpmhpd.o
obj-$(CONFIG_QCOM_RPMPD) += rpmpd.o
obj-$(CONFIG_QCOM_KRYO_L2_ACCESSORS) += kryo-l2-accessors.o
+obj-$(CONFIG_QCOM_DTPM) += dtpm.o
diff --git a/drivers/soc/qcom/dtpm.c b/drivers/soc/qcom/dtpm.c
new file mode 100644
index 000000000000..c15283f59494
--- /dev/null
+++ b/drivers/soc/qcom/dtpm.c
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2021 Linaro Limited
+ *
+ * Author: Daniel Lezcano <daniel.lezcano@linaro.org>
+ *
+ * DTPM hierarchy description
+ */
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/dtpm.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+
+static struct dtpm_node __initdata sdm845_hierarchy[] = {
+ [0]{ .name = "sdm845" },
+ [1]{ .name = "package",
+ .parent = &sdm845_hierarchy[0] },
+ [2]{ .name = "/cpus/cpu@0",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [3]{ .name = "/cpus/cpu@100",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [4]{ .name = "/cpus/cpu@200",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [5]{ .name = "/cpus/cpu@300",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [6]{ .name = "/cpus/cpu@400",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [7]{ .name = "/cpus/cpu@500",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [8]{ .name = "/cpus/cpu@600",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [9]{ .name = "/cpus/cpu@700",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [10]{ .name = "/soc@0/gpu@5000000",
+ .type = DTPM_NODE_DT,
+ .parent = &sdm845_hierarchy[1] },
+ [11]{ },
+};
+
+static struct of_device_id __initdata sdm845_dtpm_match_table[] = {
+ { .compatible = "qcom,sdm845", .data = sdm845_hierarchy },
+ {},
+};
+
+static int __init sdm845_dtpm_init(void)
+{
+ return dtpm_create_hierarchy(sdm845_dtpm_match_table);
+}
+late_initcall(sdm845_dtpm_init);
+
+MODULE_DESCRIPTION("Qualcomm DTPM driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:dtpm");
+MODULE_AUTHOR("Daniel Lezcano <daniel.lezcano@kernel.org");
+
--
2.25.1
\
 
 \ /
  Last update: 2021-12-18 14:01    [W:0.231 / U:0.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site