summaryrefslogtreecommitdiff
path: root/recipes-bsp/u-boot-mainline/files/0012-imx8-cpu-get-temperature-when-print-cpu-desc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/u-boot-mainline/files/0012-imx8-cpu-get-temperature-when-print-cpu-desc.patch')
-rw-r--r--recipes-bsp/u-boot-mainline/files/0012-imx8-cpu-get-temperature-when-print-cpu-desc.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot-mainline/files/0012-imx8-cpu-get-temperature-when-print-cpu-desc.patch b/recipes-bsp/u-boot-mainline/files/0012-imx8-cpu-get-temperature-when-print-cpu-desc.patch
new file mode 100644
index 0000000..f700305
--- /dev/null
+++ b/recipes-bsp/u-boot-mainline/files/0012-imx8-cpu-get-temperature-when-print-cpu-desc.patch
@@ -0,0 +1,75 @@
+From 82467cb2172d0470413876ad398d032a649a7e11 Mon Sep 17 00:00:00 2001
+From: Peng Fan <peng.fan@nxp.com>
+Date: Fri, 12 Apr 2019 07:55:06 +0000
+Subject: [PATCH 12/19] imx8: cpu: get temperature when print cpu desc
+
+Read the temperature when print cpu inforation.
+
+Signed-off-by: Peng Fan <peng.fan@nxp.com>
+---
+ arch/arm/mach-imx/imx8/cpu.c | 35 +++++++++++++++++++++++++++++++++--
+ 1 file changed, 33 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/mach-imx/imx8/cpu.c b/arch/arm/mach-imx/imx8/cpu.c
+index 2c425357b5..12716e7e9e 100644
+--- a/arch/arm/mach-imx/imx8/cpu.c
++++ b/arch/arm/mach-imx/imx8/cpu.c
+@@ -11,6 +11,7 @@
+ #include <dm/lists.h>
+ #include <dm/uclass.h>
+ #include <errno.h>
++#include <thermal.h>
+ #include <asm/arch/sci/sci.h>
+ #include <asm/arch/sys_proto.h>
+ #include <asm/arch-imx/cpu.h>
+@@ -573,15 +574,45 @@ const char *get_core_name(void)
+ return "?";
+ }
+
++#if defined(CONFIG_IMX_SCU_THERMAL)
++static int cpu_imx_get_temp(void)
++{
++ struct udevice *thermal_dev;
++ int cpu_tmp, ret;
++
++ ret = uclass_get_device_by_name(UCLASS_THERMAL, "cpu-thermal0",
++ &thermal_dev);
++
++ if (!ret) {
++ ret = thermal_get_temp(thermal_dev, &cpu_tmp);
++ if (ret)
++ return 0xdeadbeef;
++ } else {
++ return 0xdeadbeef;
++ }
++
++ return cpu_tmp;
++}
++#endif
++
+ int cpu_imx_get_desc(struct udevice *dev, char *buf, int size)
+ {
+ struct cpu_imx_platdata *plat = dev_get_platdata(dev);
++ int ret;
+
+ if (size < 100)
+ return -ENOSPC;
+
+- snprintf(buf, size, "NXP i.MX8%s Rev%s %s at %u MHz\n",
+- plat->type, plat->rev, plat->name, plat->freq_mhz);
++ ret = snprintf(buf, size, "NXP i.MX8%s Rev%s %s at %u MHz",
++ plat->type, plat->rev, plat->name, plat->freq_mhz);
++
++ if (IS_ENABLED(CONFIG_IMX_SCU_THERMAL)) {
++ buf = buf + ret;
++ size = size - ret;
++ ret = snprintf(buf, size, " at %dC", cpu_imx_get_temp());
++ }
++
++ snprintf(buf + ret, size - ret, "\n");
+
+ return 0;
+ }
+--
+2.14.5
+