meta-quanta: gbs: add GBS read-margin-temp config

Since read-margin-temp_git.bb will move to meta-quanta/meta-common,
add read-margin-temp bbappend file and move read-margin-temp folder
from meta-gbs/recipes-phosphor/fans to meta-gbs/recipes-quanta/fans

read-margin-temp_git.bb move to meta-quanta/meta-common:
https://gerrit.openbmc-project.xyz/c/openbmc/meta-quanta/+/35277

Signed-off-by: George Hung <george.hung@quantatw.com>
Change-Id: I08a4fd7e258a7950462f0f77b584743ec4517bc5
diff --git a/meta-gbs/recipes-quanta/fans/read-margin-temp/config-margin.json b/meta-gbs/recipes-quanta/fans/read-margin-temp/config-margin.json
new file mode 100644
index 0000000..6b73e34
--- /dev/null
+++ b/meta-gbs/recipes-quanta/fans/read-margin-temp/config-margin.json
@@ -0,0 +1,308 @@
+{
+    "sensors" : [
+        {
+            "name": "cputemp",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/cputemp",
+            "parameters": {
+                "type": "file",
+                "maxTemp": -1,
+                "path": "/sys/devices/platform/ahb/ahb:apb/f0082000.i2c/i2c-2/2-004c/hwmon/cpu_hwmon/temp1_max",
+                "sysLabel": "",
+                "targetTemp": -1,
+                "targetTempOffset": -10000,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme0",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme0",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme1",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme1",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme2",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme2",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme3",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme3",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme4",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme4",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme5",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme5",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme6",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme6",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme7",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme7",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme8",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme8",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme9",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme9",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme10",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme10",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme11",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme11",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme12",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme12",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme13",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme13",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme14",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme14",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "nvme15",
+            "unit": "millidegree",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/sensors/temperature/nvme15",
+            "parameters": {
+                "type": "",
+                "maxTemp": 70000,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 60000,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "fleeting0",
+            "unit": "millimargin",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/extsensors/margin/fleeting0",
+            "parameters": {
+                "type": "",
+                "maxTemp": 0,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 0,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        },
+        {
+            "name": "fleeting1",
+            "unit": "millimargin",
+            "type": "dbus",
+            "path": "/xyz/openbmc_project/extsensors/margin/fleeting1",
+            "parameters": {
+                "type": "",
+                "maxTemp": 0,
+                "path": "",
+                "sysLabel": "",
+                "targetTemp": 0,
+                "targetTempOffset": 0,
+                "scalar": 1.0
+            }
+        }
+    ],
+    "skus" : [
+        {
+            "num": 1,
+            "zones": [
+                {
+                    "id": 0,
+                    "zoneSetpoint": 10000,
+                    "target": "/xyz/openbmc_project/extsensors/margin/real_fleeting0",
+                    "components": ["cputemp", "fleeting0"]
+                },
+                {
+                    "id": 1,
+                    "zoneSetpoint": 10000,
+                    "target": "/xyz/openbmc_project/extsensors/margin/real_fleeting1",
+                    "components": ["nvme0", "nvme1", "nvme2", "nvme3", "nvme4", "nvme5", "nvme6", "nvme7", "nvme8", "nvme9", "nvme10", "nvme11", "nvme12", "nvme13", "nvme14", "nvme15"]
+                }
+            ]
+        }
+    ]
+}
diff --git a/meta-gbs/recipes-quanta/fans/read-margin-temp/read-margin-temp-wait.sh b/meta-gbs/recipes-quanta/fans/read-margin-temp/read-margin-temp-wait.sh
new file mode 100644
index 0000000..2e44479
--- /dev/null
+++ b/meta-gbs/recipes-quanta/fans/read-margin-temp/read-margin-temp-wait.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+MARGIN_TABLE_FILE="/usr/share/read-margin-temp/config-margin.json"
+
+target_num="$(cat $MARGIN_TABLE_FILE | grep '"target"' | wc -l)"
+
+cpu_hwmon="$(ls -la /sys/class/hwmon | grep f0082000 |  head -n 1 | tail -n +1 | cut -d '/' -f 11)"
+
+# replace by the real cpu temperature hwmon path in runtime
+if [[ "$cpu_hwmon" != "" ]]
+then
+     sed -i "s/cpu_hwmon/$cpu_hwmon/g" $MARGIN_TABLE_FILE
+fi
+
+# wait target dbus
+for ((i=0; i<$target_num; i++))
+do
+    line_num=$((i+1))
+    path="$(cat $MARGIN_TABLE_FILE | grep '"target"' | head -n ${line_num} | tail -n +${line_num} | cut -d '"' -f 4)"
+    mapper wait $path
+done
+
+# start read margin temp
+/usr/bin/read-margin-temp &
+
+exit 0
diff --git a/meta-gbs/recipes-quanta/fans/read-margin-temp_%.bbappend b/meta-gbs/recipes-quanta/fans/read-margin-temp_%.bbappend
new file mode 100644
index 0000000..b3fc4d2
--- /dev/null
+++ b/meta-gbs/recipes-quanta/fans/read-margin-temp_%.bbappend
@@ -0,0 +1,16 @@
+FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
+SRC_URI_append_gbs = " file://config-margin.json \
+                       file://read-margin-temp-wait.sh \
+                     "
+
+FILES_${PN}_append_gbs = " ${bindir}/read-margin-temp-wait.sh"
+FILES_${PN}_append_gbs = " ${datadir}/read-margin-temp/config-margin.json"
+
+do_install_append_gbs() {
+    install -d ${D}${bindir}
+    install -m 0755 ${WORKDIR}/read-margin-temp-wait.sh ${D}${bindir}
+
+    install -d ${D}${datadir}/read-margin-temp
+    install -m 0644 -D ${WORKDIR}/config-margin.json \
+        ${D}${datadir}/read-margin-temp/config-margin.json
+}