Merge pull request #2531 from artemsen/coretemp

vesnin: Add temperature sensor support for CPU cores
diff --git a/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch b/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch
new file mode 100644
index 0000000..7556b97
--- /dev/null
+++ b/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch
@@ -0,0 +1,43 @@
+From 0ec6ab11dcec304876802d1ed7bb01bd059ae311 Mon Sep 17 00:00:00 2001
+From: Artem Senichev <a.senichev@yadro.com>
+Date: Tue, 18 Dec 2018 14:16:56 +0300
+Subject: [PATCH] Add temperature sensor support for CPU cores
+
+IPMI protocol imposes limits on numbers of sensors identifiers (1 byte).
+This limitation doesn't allow us to use unique temperature sensor ID for
+each CPU core (4 CPU * 12 cores = 48 sensors).
+
+OCC uses temperature sensor ID as channel label, these labels are handled
+by phosphor-hwmon service to identify the core:
+
+     I2C               sysfs                   config.yaml
+OCC -----> BMC Kernel -------> Phosphor-hwmon -------------> DBus
+     ID                label                   label->core
+
+This patch makes OCC use own ID as channel label instead of using IPMI
+temperature sensor ID. The new identifier consists of constant prefix
+(0x0f) and core index:
+ID = 0x0f00 + INDEX(core)
+
+Signed-off-by: Artem Senichev <a.senichev@yadro.com>
+---
+ src/occ/cmdh/cmdh_fsp_cmds.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/occ/cmdh/cmdh_fsp_cmds.c b/src/occ/cmdh/cmdh_fsp_cmds.c
+index 6276992..69c646e 100755
+--- a/src/occ/cmdh/cmdh_fsp_cmds.c
++++ b/src/occ/cmdh/cmdh_fsp_cmds.c
+@@ -393,7 +393,8 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
+     {
+         if(CORE_PRESENT(k))
+         {
+-            l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP2MSP0C0 + k]->ipmi_sid;
++            // Set the core label as a constant prefix with index
++            l_tempSensorList[l_sensorHeader.count].id = 0x0f00 + k;
+             l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0C0 + k]->sample;
+             l_sensorHeader.count++;
+         }
+-- 
+2.19.2
+