meta-ampere: mtjade: support NVME Temperature

Enable phosphor-nvme with configuration for nvme_max sensor for FAN
control support later.

Tested:
1. Check NVME Temp:
$ busctl get-property xyz.openbmc_project.nvme.manager \
    /xyz/openbmc_project/sensors/temperature/nvme20 \
    xyz.openbmc_project.Sensor.Value Value
d 22
2. Check nvme_max has valid value
$ busctl introspect xyz.openbmc_project.VirtualSensor \
      /xyz/openbmc_project/sensors/temperature/nvme_max

Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com>
Change-Id: Ied609ba5b5d39877c09ed04faff5063c7882a689
diff --git a/meta-ampere/meta-jade/conf/machine/mtjade.conf b/meta-ampere/meta-jade/conf/machine/mtjade.conf
index ede176a..642e746 100644
--- a/meta-ampere/meta-jade/conf/machine/mtjade.conf
+++ b/meta-ampere/meta-jade/conf/machine/mtjade.conf
@@ -34,6 +34,7 @@
                                    mtjade-gpio-config \
                                    ampere-platform-init \
                                    ampere-ipmi-oem \
+                                   phosphor-nvme \
                                   "
 
 PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-ampere-apps"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-nvme/nvme_config.json b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-nvme/nvme_config.json
new file mode 100644
index 0000000..9c2aade
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-nvme/nvme_config.json
@@ -0,0 +1,118 @@
+{
+    "config": [
+        {
+            "NVMeDriveIndex": 0,
+            "NVMeDriveBusID": 50
+        },
+        {
+            "NVMeDriveIndex": 1,
+            "NVMeDriveBusID": 51
+        },
+        {
+            "NVMeDriveIndex": 2,
+            "NVMeDriveBusID": 52
+        },
+        {
+            "NVMeDriveIndex": 3,
+            "NVMeDriveBusID": 53
+        },
+        {
+            "NVMeDriveIndex": 4,
+            "NVMeDriveBusID": 54
+        },
+        {
+            "NVMeDriveIndex": 5,
+            "NVMeDriveBusID": 55
+        },
+        {
+            "NVMeDriveIndex": 6,
+            "NVMeDriveBusID": 56
+        },
+        {
+            "NVMeDriveIndex": 7,
+            "NVMeDriveBusID": 57
+        },
+        {
+            "NVMeDriveIndex": 8,
+            "NVMeDriveBusID": 60
+        },
+        {
+            "NVMeDriveIndex": 9,
+            "NVMeDriveBusID": 61
+        },
+        {
+            "NVMeDriveIndex": 10,
+            "NVMeDriveBusID": 62
+        },
+        {
+            "NVMeDriveIndex": 11,
+            "NVMeDriveBusID": 63
+        },
+        {
+            "NVMeDriveIndex": 12,
+            "NVMeDriveBusID": 64
+        },
+        {
+            "NVMeDriveIndex": 13,
+            "NVMeDriveBusID": 65
+        },
+        {
+            "NVMeDriveIndex": 14,
+            "NVMeDriveBusID": 66
+        },
+        {
+            "NVMeDriveIndex": 15,
+            "NVMeDriveBusID": 67
+        },
+        {
+            "NVMeDriveIndex": 16,
+            "NVMeDriveBusID": 70
+        },
+        {
+            "NVMeDriveIndex": 17,
+            "NVMeDriveBusID": 71
+        },
+        {
+            "NVMeDriveIndex": 18,
+            "NVMeDriveBusID": 72
+        },
+        {
+            "NVMeDriveIndex": 19,
+            "NVMeDriveBusID": 73
+        },
+        {
+            "NVMeDriveIndex": 20,
+            "NVMeDriveBusID": 74
+        },
+        {
+            "NVMeDriveIndex": 21,
+            "NVMeDriveBusID": 75
+        },
+        {
+            "NVMeDriveIndex": 22,
+            "NVMeDriveBusID": 76
+        },
+        {
+            "NVMeDriveIndex": 23,
+            "NVMeDriveBusID": 77
+        },
+	{
+            "NVMeDriveIndex": 24,
+            "NVMeDriveBusID": 80
+        },
+        {
+            "NVMeDriveIndex": 25,
+            "NVMeDriveBusID": 81
+        }
+    ],
+    "threshold": [
+        {
+            "criticalHigh": 80,
+            "criticalLow": 0,
+            "warningHigh": 70,
+            "warningLow": 5,
+            "maxValue": 127,
+            "minValue": -128
+        }
+    ]
+}
diff --git a/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-nvme_%.bbappend b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-nvme_%.bbappend
new file mode 100644
index 0000000..5eadc25
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-nvme_%.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += " file://nvme_config.json"
+
+do_install:append() {
+    install -m 0644 -D ${WORKDIR}/nvme_config.json \
+                   ${D}/etc/nvme
+}
diff --git a/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
index d0dc767..abacb4f 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
+++ b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
@@ -8,12 +8,25 @@
         "Threshold" :
         {
         },
+        "Associations":
+        [
+            [
+                "chassis",
+                "all_sensors",
+                "/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
+            ],
+            [
+                "inventory",
+                "sensors",
+                "/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
+            ]
+        ],
         "Params":
         {
             "DbusParam":
             [
                 {
-                    "ParamName": "PSU0_POUTPUT",
+                    "ParamName": "P0",
                     "Desc":
                     {
                         "Name": "PSU0_POUTPUT",
@@ -21,7 +34,7 @@
                     }
                 },
                 {
-                    "ParamName": "PSU1_POUTPUT",
+                    "ParamName": "P1",
                     "Desc":
                     {
                         "Name": "PSU1_POUTPUT",
@@ -30,7 +43,206 @@
                 }
             ]
         },
-        "Expression": "PSU0_POUTPUT + PSU1_POUTPUT"
+        "Expression": "(P0 + P1) >= 0 ? (P0 + P1) : NULL"
+    },
+    {
+        "Desc":{
+            "Name":"nvme_max",
+            "SensorType":"temperature"
+        },
+        "Threshold":{
+            "CriticalHigh": 80,
+            "CriticalLow": 0,
+            "WarningHigh": 70,
+            "WarningLow": 5
+        },
+        "Params":{
+            "DbusParam": [
+                {
+                    "ParamName": "n0",
+                    "Desc": {
+                        "Name": "nvme0",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n1",
+                    "Desc": {
+                        "Name": "nvme1",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n2",
+                    "Desc": {
+                        "Name": "nvme2",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n3",
+                    "Desc": {
+                        "Name": "nvme3",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n4",
+                    "Desc": {
+                        "Name": "nvme4",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n5",
+                    "Desc": {
+                        "Name": "nvme5",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n6",
+                    "Desc": {
+                        "Name": "nvme6",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n7",
+                    "Desc": {
+                        "Name": "nvme7",
+                        "SensorType": "temperature"
+                    }
+                },
+                                {
+                    "ParamName": "n8",
+                    "Desc": {
+                        "Name": "nvme8",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n9",
+                    "Desc": {
+                        "Name": "nvme9",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n10",
+                    "Desc": {
+                        "Name": "nvme10",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n11",
+                    "Desc": {
+                        "Name": "nvme11",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n12",
+                    "Desc": {
+                        "Name": "nvme12",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n13",
+                    "Desc": {
+                        "Name": "nvme13",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n14",
+                    "Desc": {
+                        "Name": "nvme14",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n15",
+                    "Desc": {
+                        "Name": "nvme15",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n16",
+                    "Desc": {
+                        "Name": "nvme16",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n17",
+                    "Desc": {
+                        "Name": "nvme17",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n18",
+                    "Desc": {
+                        "Name": "nvme18",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n19",
+                    "Desc": {
+                        "Name": "nvme19",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n20",
+                    "Desc": {
+                        "Name": "nvme20",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n21",
+                    "Desc": {
+                        "Name": "nvme21",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n22",
+                    "Desc": {
+                        "Name": "nvme22",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n23",
+                    "Desc": {
+                        "Name": "nvme23",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n24",
+                    "Desc": {
+                        "Name": "nvme24",
+                        "SensorType": "temperature"
+                    }
+                },
+                {
+                    "ParamName": "n25",
+                    "Desc": {
+                        "Name": "nvme25",
+                        "SensorType": "temperature"
+                    }
+                }
+            ]
+        },
+        "Expression": "max(0,(n0 == n0) ? n0 : NULL,(n1 == n1) ? n1 : NULL,(n2 == n2) ? n2 : NULL,(n3 == n3) ? n3 : NULL,(n4 == n4) ? n4 : NULL,(n5 == n5) ? n5 : NULL,(n6 == n6) ? n6 : NULL,(n7 == n7) ? n7 : NULL,(n8 == n8) ? n8 : NULL,(n9 == n9) ? n9 : NULL,(n10 == n10) ? n10 : NULL,(n11 == n11) ? n11 : NULL,(n12 == n12) ? n12 : NULL,(n13 == n13) ? n13 : NULL,(n14 == n14) ? n14 : NULL,(n15 == n15) ? n15 : NULL,(n16 == n16) ? n16 : NULL,(n17 == n17) ? n17 : NULL,(n18 == n18) ? n18 : NULL,(n19 == n19) ? n19 : NULL,(n20 == n20) ? n20 : NULL,(n21 == n21) ? n21 : NULL,(n22 == n22) ? n22 : NULL,(n23 == n23) ? n23 : NULL,(n24 == n24) ? n24 : NULL,(n25 == n25) ? n25 : NULL)"
     }
 ]
 
diff --git a/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
index 3a1af4f..0d1b5e6 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
+++ b/meta-ampere/meta-jade/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
@@ -1,10 +1,10 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
 
-SRC_URI:append:mtjade += " \
-            file://virtual_sensor_config.json \
-           "
+SRC_URI:append += " \
+                   file://virtual_sensor_config.json \
+                  "
 
-do_install:append:mtjade() {
+do_install:append() {
     install -m 0644 ${WORKDIR}/virtual_sensor_config.json ${D}${datadir}/phosphor-virtual-sensor/
 }