configuration: harma: add fan table

1. Add fan table in the config files so that the fan table
could be created dynamically according to the FRU devices.
harma_mb.json, harma_mb_vr_infineon.json

2. Change fan naming from 0-based to 1-based.
harma_fanboard.json

Change-Id: Id3852b2d546cbf02d6f0515a343aab4f4f228a74
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>
diff --git a/configurations/meta/harma_fanboard.json b/configurations/meta/harma_fanboard.json
index 249dcbb..522ff93 100644
--- a/configurations/meta/harma_fanboard.json
+++ b/configurations/meta/harma_fanboard.json
@@ -5,15 +5,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN0_TACH_IL",
+                    "Name": "FAN_BP1_FAN1_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         0
                     ]
                 },
                 "Index": 0,
-                "Name": "FAN_BP0_FAN0_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN1_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -21,15 +21,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN0_TACH_OL",
+                    "Name": "FAN_BP1_FAN1_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         1
                     ]
                 },
                 "Index": 1,
-                "Name": "FAN_BP0_FAN0_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN1_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -37,15 +37,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN1_TACH_IL",
+                    "Name": "FAN_BP1_FAN2_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         2
                     ]
                 },
                 "Index": 2,
-                "Name": "FAN_BP0_FAN1_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN2_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -53,15 +53,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN1_TACH_OL",
+                    "Name": "FAN_BP1_FAN2_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         3
                     ]
                 },
                 "Index": 3,
-                "Name": "FAN_BP0_FAN1_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN2_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -69,15 +69,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN2_TACH_IL",
+                    "Name": "FAN_BP1_FAN3_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         4
                     ]
                 },
                 "Index": 4,
-                "Name": "FAN_BP0_FAN2_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN3_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -85,15 +85,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN2_TACH_OL",
+                    "Name": "FAN_BP1_FAN3_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         5
                     ]
                 },
                 "Index": 5,
-                "Name": "FAN_BP0_FAN2_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN3_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -101,15 +101,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN3_TACH_IL",
+                    "Name": "FAN_BP1_FAN4_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         6
                     ]
                 },
                 "Index": 6,
-                "Name": "FAN_BP0_FAN3_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN4_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -117,15 +117,15 @@
                 "Address": "0x5e",
                 "Bus": 2,
                 "Connector": {
-                    "Name": "FAN_BP0_FAN3_TACH_OL",
+                    "Name": "FAN_BP1_FAN4_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP0_FAN_PWM",
+                    "PwmName": "FAN_BP1_FAN_PWM",
                     "Tachs": [
                         7
                     ]
                 },
                 "Index": 7,
-                "Name": "FAN_BP0_FAN3_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP1_FAN4_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -136,10 +136,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP0_FAN0",
+                "Name": "FAN_BP1_FAN1",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP0_FAN0_CURR_A",
-                "in1_Name": "FAN_BP0_FAN0_VOLT_V"
+                "curr1_Name": "FAN_BP1_FAN1_CURR_A",
+                "in1_Name": "FAN_BP1_FAN1_VOLT_V"
             },
             {
                 "Address": "0x41",
@@ -148,10 +148,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP0_FAN1",
+                "Name": "FAN_BP1_FAN2",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP0_FAN1_CURR_A",
-                "in1_Name": "FAN_BP0_FAN1_VOLT_V"
+                "curr1_Name": "FAN_BP1_FAN2_CURR_A",
+                "in1_Name": "FAN_BP1_FAN2_VOLT_V"
             },
             {
                 "Address": "0x44",
@@ -160,10 +160,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP0_FAN2",
+                "Name": "FAN_BP1_FAN3",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP0_FAN2_CURR_A",
-                "in1_Name": "FAN_BP0_FAN2_VOLT_V"
+                "curr1_Name": "FAN_BP1_FAN3_CURR_A",
+                "in1_Name": "FAN_BP1_FAN3_VOLT_V"
             },
             {
                 "Address": "0x45",
@@ -172,10 +172,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP0_FAN3",
+                "Name": "FAN_BP1_FAN4",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP0_FAN3_CURR_A",
-                "in1_Name": "FAN_BP0_FAN3_VOLT_V"
+                "curr1_Name": "FAN_BP1_FAN4_CURR_A",
+                "in1_Name": "FAN_BP1_FAN4_VOLT_V"
             },
             {
                 "Address": "0x4B",
@@ -194,15 +194,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN0_TACH_IL",
+                    "Name": "FAN_BP2_FAN1_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         0
                     ]
                 },
                 "Index": 0,
-                "Name": "FAN_BP1_FAN0_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN1_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -210,15 +210,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN0_TACH_OL",
+                    "Name": "FAN_BP2_FAN1_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         1
                     ]
                 },
                 "Index": 1,
-                "Name": "FAN_BP1_FAN0_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN1_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -226,15 +226,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN1_TACH_IL",
+                    "Name": "FAN_BP2_FAN2_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         2
                     ]
                 },
                 "Index": 2,
-                "Name": "FAN_BP1_FAN1_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN2_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -242,15 +242,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN1_TACH_OL",
+                    "Name": "FAN_BP2_FAN2_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         3
                     ]
                 },
                 "Index": 3,
-                "Name": "FAN_BP1_FAN1_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN2_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -258,15 +258,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN2_TACH_IL",
+                    "Name": "FAN_BP2_FAN3_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         4
                     ]
                 },
                 "Index": 4,
-                "Name": "FAN_BP1_FAN2_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN3_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -274,15 +274,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN2_TACH_OL",
+                    "Name": "FAN_BP2_FAN3_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         5
                     ]
                 },
                 "Index": 5,
-                "Name": "FAN_BP1_FAN2_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN3_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -290,15 +290,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN3_TACH_IL",
+                    "Name": "FAN_BP2_FAN4_TACH_IL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         6
                     ]
                 },
                 "Index": 6,
-                "Name": "FAN_BP1_FAN3_TACH_IL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN4_TACH_IL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -306,15 +306,15 @@
                 "Address": "0x5e",
                 "Bus": 0,
                 "Connector": {
-                    "Name": "FAN_BP1_FAN3_TACH_OL",
+                    "Name": "FAN_BP2_FAN4_TACH_OL",
                     "Pwm": 2,
-                    "PwmName": "FAN_BP1_FAN_PWM",
+                    "PwmName": "FAN_BP2_FAN_PWM",
                     "Tachs": [
                         7
                     ]
                 },
                 "Index": 7,
-                "Name": "FAN_BP1_FAN3_TACH_OL_SPEED_RPM",
+                "Name": "FAN_BP2_FAN4_TACH_OL_SPEED_RPM",
                 "PowerState": "Always",
                 "Type": "I2CFan"
             },
@@ -325,10 +325,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP1_FAN0",
+                "Name": "FAN_BP2_FAN1",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP1_FAN0_CURR_A",
-                "in1_Name": "FAN_BP1_FAN0_VOLT_V"
+                "curr1_Name": "FAN_BP2_FAN1_CURR_A",
+                "in1_Name": "FAN_BP2_FAN1_VOLT_V"
             },
             {
                 "Address": "0x41",
@@ -337,10 +337,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP1_FAN1",
+                "Name": "FAN_BP2_FAN2",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP1_FAN1_CURR_A",
-                "in1_Name": "FAN_BP1_FAN1_VOLT_V"
+                "curr1_Name": "FAN_BP2_FAN2_CURR_A",
+                "in1_Name": "FAN_BP2_FAN2_VOLT_V"
             },
             {
                 "Address": "0x44",
@@ -349,10 +349,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP1_FAN2",
+                "Name": "FAN_BP2_FAN3",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP1_FAN2_CURR_A",
-                "in1_Name": "FAN_BP1_FAN2_VOLT_V"
+                "curr1_Name": "FAN_BP2_FAN3_CURR_A",
+                "in1_Name": "FAN_BP2_FAN3_VOLT_V"
             },
             {
                 "Address": "0x45",
@@ -361,10 +361,10 @@
                     "in1",
                     "curr1"
                 ],
-                "Name": "FAN_BP1_FAN3",
+                "Name": "FAN_BP2_FAN4",
                 "Type": "INA238",
-                "curr1_Name": "FAN_BP1_FAN3_CURR_A",
-                "in1_Name": "FAN_BP1_FAN3_VOLT_V"
+                "curr1_Name": "FAN_BP2_FAN4_CURR_A",
+                "in1_Name": "FAN_BP2_FAN4_VOLT_V"
             },
             {
                 "Address": "0x4B",
diff --git a/configurations/meta/harma_mb.json b/configurations/meta/harma_mb.json
index 736fc0f..931d9f8 100644
--- a/configurations/meta/harma_mb.json
+++ b/configurations/meta/harma_mb.json
@@ -1228,7 +1228,343 @@
         }
     },
     {
-        "Exposes": [],
+        "Exposes": [
+            {
+                "Class": "fan",
+                "FFGainCoefficient": 1.0,
+                "FFOffCoefficient": 0.0,
+                "ICoefficient": 0.0,
+                "ILimitMax": 0.0,
+                "ILimitMin": 0.0,
+                "Inputs": [
+                    "FAN_BP1_FAN1_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN1_TACH_OL_SPEED_RPM",
+                    "FAN_BP1_FAN2_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN2_TACH_OL_SPEED_RPM",
+                    "FAN_BP1_FAN3_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN3_TACH_OL_SPEED_RPM",
+                    "FAN_BP1_FAN4_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN4_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN1_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN1_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN2_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN2_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN3_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN3_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN4_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN4_TACH_OL_SPEED_RPM"
+                ],
+                "Name": "All Fan",
+                "OutLimitMax": 100.0,
+                "OutLimitMin": 0.0,
+                "Outputs": [
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM"
+                ],
+                "PCoefficient": 0.0,
+                "SlewNeg": 0.0,
+                "SlewPos": 0.0,
+                "Type": "Pid",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "CheckHysteresisWithSetpoint": true,
+                "Class": "temp",
+                "DCoefficient": 0.0,
+                "FFGainCoefficient": 0.0,
+                "FFOffCoefficient": 0.0,
+                "ICoefficient": -0.0035,
+                "ILimitMax": 100,
+                "ILimitMin": -50,
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_CPU_TEMP_C"
+                ],
+                "Name": "PID_MB_CPU",
+                "NegativeHysteresis": 2.0,
+                "OutLimitMax": 100,
+                "OutLimitMin": 0,
+                "PCoefficient": -1.0,
+                "PositiveHysteresis": 0.0,
+                "SetPoint": 79.0,
+                "SlewNeg": 0.0,
+                "SlewPos": 0.0,
+                "Type": "Pid",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "CheckHysteresisWithSetpoint": true,
+                "Class": "temp",
+                "DCoefficient": 0.0,
+                "FFGainCoefficient": 0.0,
+                "FFOffCoefficient": 0.0,
+                "ICoefficient": -0.0035,
+                "ILimitMax": 100,
+                "ILimitMin": -50,
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_DIMM_A0_TEMP_C",
+                    "MB_DIMM_A1_TEMP_C",
+                    "MB_DIMM_A2_TEMP_C",
+                    "MB_DIMM_A4_TEMP_C",
+                    "MB_DIMM_A6_TEMP_C",
+                    "MB_DIMM_A7_TEMP_C",
+                    "MB_DIMM_A8_TEMP_C",
+                    "MB_DIMM_A10_TEMP_C"
+                ],
+                "Name": "PID_MB_DIMM",
+                "NegativeHysteresis": 2.0,
+                "OutLimitMax": 100,
+                "OutLimitMin": 0,
+                "PCoefficient": -3.0,
+                "PositiveHysteresis": 0.0,
+                "SetPoint": 79.0,
+                "SlewNeg": 0.0,
+                "SlewPos": 0.0,
+                "Type": "Pid",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "AccumulateSetPoint": true,
+                "CycleIntervalTimeMS": 1000,
+                "FailSafePercent": 85.0,
+                "MinThermalOutput": 0.0,
+                "Name": "Zone 0",
+                "Type": "Pid.Zone",
+                "UpdateThermalsTimeMS": 1000
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "SCM_INLET_TEMP_C"
+                ],
+                "Name": "Stepwise_SCM_INLET",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    22.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    25.0,
+                    30.0,
+                    35.0,
+                    40.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_CPU_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_CPU",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    23.0,
+                    25.0,
+                    27.0,
+                    30.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    55.0,
+                    60.0,
+                    65.0,
+                    70.0,
+                    75.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_DIMM_A0_TEMP_C",
+                    "MB_DIMM_A1_TEMP_C",
+                    "MB_DIMM_A2_TEMP_C",
+                    "MB_DIMM_A4_TEMP_C",
+                    "MB_DIMM_A6_TEMP_C",
+                    "MB_DIMM_A7_TEMP_C",
+                    "MB_DIMM_A8_TEMP_C",
+                    "MB_DIMM_A10_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_DIMM",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    30.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    60.0,
+                    70.0,
+                    75.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_VR_CPU_VCORE0_TEMP_C",
+                    "MB_VR_CPU_VCORE1_TEMP_C",
+                    "MB_VR_CPU_PVDD11_TEMP_C",
+                    "MB_VR_CPU_PDDIO_TEMP_C",
+                    "MB_VR_CPU_SOC_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_VR",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_RETIMER0_TEMP_C",
+                    "MB_RETIMER1_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_RETIMER",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "NIC_Temp_1"
+                ],
+                "Name": "Stepwise_NIC",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_E1S0_TEMP_C",
+                    "MB_E1S1_TEMP_C"
+                ],
+                "Name": "Stepwise_E1S",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    60.0,
+                    65.0,
+                    70.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "PDB_BRICK_TEMP_C"
+                ],
+                "Name": "Stepwise_Brick",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            }
+        ],
         "Name": "Harma Chassis",
         "Probe": [
             "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'Harma MB EVT', 'BOARD_PART_NUMBER': '3BF0MMA0040'})",
diff --git a/configurations/meta/harma_mb_vr_infineon.json b/configurations/meta/harma_mb_vr_infineon.json
index c24076e..7ca9e5d 100644
--- a/configurations/meta/harma_mb_vr_infineon.json
+++ b/configurations/meta/harma_mb_vr_infineon.json
@@ -1226,7 +1226,343 @@
         }
     },
     {
-        "Exposes": [],
+        "Exposes": [
+            {
+                "Class": "fan",
+                "FFGainCoefficient": 1.0,
+                "FFOffCoefficient": 0.0,
+                "ICoefficient": 0.0,
+                "ILimitMax": 0.0,
+                "ILimitMin": 0.0,
+                "Inputs": [
+                    "FAN_BP1_FAN1_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN1_TACH_OL_SPEED_RPM",
+                    "FAN_BP1_FAN2_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN2_TACH_OL_SPEED_RPM",
+                    "FAN_BP1_FAN3_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN3_TACH_OL_SPEED_RPM",
+                    "FAN_BP1_FAN4_TACH_IL_SPEED_RPM",
+                    "FAN_BP1_FAN4_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN1_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN1_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN2_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN2_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN3_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN3_TACH_OL_SPEED_RPM",
+                    "FAN_BP2_FAN4_TACH_IL_SPEED_RPM",
+                    "FAN_BP2_FAN4_TACH_OL_SPEED_RPM"
+                ],
+                "Name": "All Fan",
+                "OutLimitMax": 100.0,
+                "OutLimitMin": 0.0,
+                "Outputs": [
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP1_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM",
+                    "FAN_BP2_FAN_PWM"
+                ],
+                "PCoefficient": 0.0,
+                "SlewNeg": 0.0,
+                "SlewPos": 0.0,
+                "Type": "Pid",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "CheckHysteresisWithSetpoint": true,
+                "Class": "temp",
+                "DCoefficient": 0.0,
+                "FFGainCoefficient": 0.0,
+                "FFOffCoefficient": 0.0,
+                "ICoefficient": -0.0035,
+                "ILimitMax": 100,
+                "ILimitMin": -50,
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_CPU_TEMP_C"
+                ],
+                "Name": "PID_MB_CPU",
+                "NegativeHysteresis": 2.0,
+                "OutLimitMax": 100,
+                "OutLimitMin": 0,
+                "PCoefficient": -1.0,
+                "PositiveHysteresis": 0.0,
+                "SetPoint": 79.0,
+                "SlewNeg": 0.0,
+                "SlewPos": 0.0,
+                "Type": "Pid",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "CheckHysteresisWithSetpoint": true,
+                "Class": "temp",
+                "DCoefficient": 0.0,
+                "FFGainCoefficient": 0.0,
+                "FFOffCoefficient": 0.0,
+                "ICoefficient": -0.0035,
+                "ILimitMax": 100,
+                "ILimitMin": -50,
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_DIMM_A0_TEMP_C",
+                    "MB_DIMM_A1_TEMP_C",
+                    "MB_DIMM_A2_TEMP_C",
+                    "MB_DIMM_A4_TEMP_C",
+                    "MB_DIMM_A6_TEMP_C",
+                    "MB_DIMM_A7_TEMP_C",
+                    "MB_DIMM_A8_TEMP_C",
+                    "MB_DIMM_A10_TEMP_C"
+                ],
+                "Name": "PID_MB_DIMM",
+                "NegativeHysteresis": 2.0,
+                "OutLimitMax": 100,
+                "OutLimitMin": 0,
+                "PCoefficient": -3.0,
+                "PositiveHysteresis": 0.0,
+                "SetPoint": 79.0,
+                "SlewNeg": 0.0,
+                "SlewPos": 0.0,
+                "Type": "Pid",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "AccumulateSetPoint": true,
+                "CycleIntervalTimeMS": 1000,
+                "FailSafePercent": 85.0,
+                "MinThermalOutput": 0.0,
+                "Name": "Zone 0",
+                "Type": "Pid.Zone",
+                "UpdateThermalsTimeMS": 1000
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "SCM_INLET_TEMP_C"
+                ],
+                "Name": "Stepwise_SCM_INLET",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    22.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    25.0,
+                    30.0,
+                    35.0,
+                    40.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_CPU_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_CPU",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    23.0,
+                    25.0,
+                    27.0,
+                    30.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    55.0,
+                    60.0,
+                    65.0,
+                    70.0,
+                    75.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_DIMM_A0_TEMP_C",
+                    "MB_DIMM_A1_TEMP_C",
+                    "MB_DIMM_A2_TEMP_C",
+                    "MB_DIMM_A4_TEMP_C",
+                    "MB_DIMM_A6_TEMP_C",
+                    "MB_DIMM_A7_TEMP_C",
+                    "MB_DIMM_A8_TEMP_C",
+                    "MB_DIMM_A10_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_DIMM",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    30.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    60.0,
+                    70.0,
+                    75.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_VR_CPU_VCORE0_TEMP_C",
+                    "MB_VR_CPU_VCORE1_TEMP_C",
+                    "MB_VR_CPU_PVDD11_TEMP_C",
+                    "MB_VR_CPU_PDDIO_TEMP_C",
+                    "MB_VR_CPU_SOC_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_VR",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_RETIMER0_TEMP_C",
+                    "MB_RETIMER1_TEMP_C"
+                ],
+                "Name": "Stepwise_MB_RETIMER",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "NIC_Temp_1"
+                ],
+                "Name": "Stepwise_NIC",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "MB_E1S0_TEMP_C",
+                    "MB_E1S1_TEMP_C"
+                ],
+                "Name": "Stepwise_E1S",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    60.0,
+                    65.0,
+                    70.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            },
+            {
+                "Class": "temp",
+                "InputUnavailableAsFailed": false,
+                "Inputs": [
+                    "PDB_BRICK_TEMP_C"
+                ],
+                "Name": "Stepwise_Brick",
+                "NegativeHysteresis": 2.0,
+                "Output": [
+                    20.0,
+                    25.0,
+                    90.0
+                ],
+                "PositiveHysteresis": 0.0,
+                "Reading": [
+                    80.0,
+                    90.0,
+                    100.0
+                ],
+                "Type": "Stepwise",
+                "Zones": [
+                    "Zone 0"
+                ]
+            }
+        ],
         "Name": "Harma Chassis",
         "Probe": [
             "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'Harma MB EVT', 'BOARD_PART_NUMBER': '3BF0MMA0050'})",