meta-quanta: gbs: add updating nvme config script

Update Present/Pwrgood GPIOs number to nvme json config and
export them before running phosphor-nvme daemon

(From meta-quanta rev: 30cafdc73528c95d7658feb060f2552b65afb16a)

Signed-off-by: George Hung <george.hung@quantatw.com>
Change-Id: I3662fa44b65883ec46d61e693ed4b8804059f927
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-nvme/nvme_json_rewrite.sh b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-nvme/nvme_json_rewrite.sh
new file mode 100644
index 0000000..27ca98d
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-nvme/nvme_json_rewrite.sh
@@ -0,0 +1,214 @@
+#!/bin/bash
+
+TARGET_FILE_NAME="/etc/nvme/nvme_config.json"
+
+export_gpio() {
+  if [ ! -d "/sys/class/gpio/gpio$1" ]; then
+    echo $1 >/sys/class/gpio/export
+  fi
+}
+
+# Get NVMeDrivePresentPins
+# 1-0024
+
+# Get NVMeDrivePwrGoodPins
+# 1-0021
+
+if [ -d "/sys/bus/i2c/drivers/pca953x/1-0024" ]; then
+    presentPinBase="$(cat /sys/bus/i2c/drivers/pca953x/1-0024/gpio/gpiochip*/base)"
+    for i in {0..15};
+    do
+        let presentPinBase[$i]=presentPinBase+$i
+        export_gpio ${presentPinBase[$i]}
+    done
+else
+    echo "Can't find present gpio expander (addr: 0x24) !!"
+fi
+
+if [ -d "/sys/bus/i2c/drivers/pca953x/1-0021" ]; then
+    PwrGoodPinBase="$(cat /sys/bus/i2c/drivers/pca953x/1-0021/gpio/gpiochip*/base)"
+    for i in {0..15};
+    do
+        let PwrGoodPinBase[$i]=PwrGoodPinBase+$i
+        export_gpio ${PwrGoodPinBase[$i]}
+    done
+else
+    echo "Can't find powergood gpio expander (addr: 0x21) !!"
+fi
+
+cat > $TARGET_FILE_NAME << EOF1
+{
+    "config": [
+        {
+            "NVMeDriveIndex": 0,
+            "NVMeDriveBusID": 47,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_0_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_0_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_0_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_0_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[3]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[3]}
+        },
+        {
+            "NVMeDriveIndex": 1,
+            "NVMeDriveBusID": 46,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_1_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_1_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_1_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_1_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[2]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[2]}
+        },
+        {
+            "NVMeDriveIndex": 2,
+            "NVMeDriveBusID": 45,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_2_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_2_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_2_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_2_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[1]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[1]}
+        },
+        {
+            "NVMeDriveIndex": 3,
+            "NVMeDriveBusID": 44,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_3_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_3_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_3_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_3_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[0]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[0]}
+        },
+        {
+            "NVMeDriveIndex": 4,
+            "NVMeDriveBusID": 39,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_4_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_4_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_4_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_4_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[7]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[7]}
+        },
+        {
+            "NVMeDriveIndex": 5,
+            "NVMeDriveBusID": 38,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_5_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_5_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_5_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_5_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[6]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[6]}
+        },
+        {
+            "NVMeDriveIndex": 6,
+            "NVMeDriveBusID": 37,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_6_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_6_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_6_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_6_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[5]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[5]}
+        },
+        {
+            "NVMeDriveIndex": 7,
+            "NVMeDriveBusID": 36,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_7_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_7_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_7_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_7_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[4]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[4]}
+        },
+        {
+            "NVMeDriveIndex": 8,
+            "NVMeDriveBusID": 31,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_8_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_8_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_8_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_8_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[11]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[11]}
+        },
+        {
+            "NVMeDriveIndex": 9,
+            "NVMeDriveBusID": 30,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_9_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_9_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_9_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_9_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[10]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[10]}
+        },
+        {
+            "NVMeDriveIndex": 10,
+            "NVMeDriveBusID": 29,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_10_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_10_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_10_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_10_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[9]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[9]}
+        },
+        {
+            "NVMeDriveIndex": 11,
+            "NVMeDriveBusID": 28,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_11_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_11_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_11_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_11_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[8]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[8]}
+        },
+        {
+            "NVMeDriveIndex": 12,
+            "NVMeDriveBusID": 27,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_12_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_12_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_12_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_12_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[15]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[15]}
+        },
+        {
+            "NVMeDriveIndex": 13,
+            "NVMeDriveBusID": 26,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_13_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_13_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_13_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_13_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[14]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[14]}
+        },
+        {
+            "NVMeDriveIndex": 14,
+            "NVMeDriveBusID": 25,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_14_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_14_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_14_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_14_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[13]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[13]}
+        },
+        {
+            "NVMeDriveIndex": 15,
+            "NVMeDriveBusID": 24,
+            "NVMeDriveFaultLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_15_fault",
+            "NVMeDriveLocateLEDGroupPath": "/xyz/openbmc_project/led/groups/led_u2_15_locate",
+            "NVMeDriveLocateLEDControllerBusName": "xyz.openbmc_project.LED.Controller.led_u2_15_locate",
+            "NVMeDriveLocateLEDControllerPath": "/xyz/openbmc_project/led/physical/led_u2_15_locate",
+            "NVMeDrivePresentPin": ${presentPinBase[12]},
+            "NVMeDrivePwrGoodPin": ${PwrGoodPinBase[12]}
+        }
+    ],
+    "threshold": [
+        {
+            "criticalHigh": 70,
+            "criticalLow": 0,
+            "warningHigh": 70,
+            "warningLow": 0,
+            "maxValue": 127,
+            "minValue": -128
+        }
+    ]
+}
+EOF1