control:p10bmc:ibm,rainier-2u: Fan floor tables

Add the initial floor table using the mapped_floor action based on the
ambient temperature, altitude, and PCIe floor index.

This also includes the pcie_cards.json file that contains the PCIe cards
with their floor indexes.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I3d90717e504060e34b4afdce8130b080eb7275c3
diff --git a/control/config_files/p10bmc/ibm,rainier-2u/events.json b/control/config_files/p10bmc/ibm,rainier-2u/events.json
index 3b419a7..72198d6 100644
--- a/control/config_files/p10bmc/ibm,rainier-2u/events.json
+++ b/control/config_files/p10bmc/ibm,rainier-2u/events.json
@@ -1246,5 +1246,197 @@
          "signal": "interfaces_removed"
        }
      ]
+   },
+   {
+     "name": "set pcie floor index",
+     "groups": [
+       {
+         "name": "pcie slots",
+         "interface": "xyz.openbmc_project.State.Decorator.PowerState",
+         "property": {
+           "name": "PowerState"
+         }
+       },
+       {
+         "name": "pcie cards",
+         "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+         "property": {
+           "name": "Function0DeviceId"
+         }
+       },
+       {
+         "name": "pcie cards",
+         "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+         "property": {
+           "name": "Function0VendorId"
+         }
+       },
+       {
+         "name": "pcie cards",
+         "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+         "property": {
+           "name": "Function0SubsystemId"
+         }
+       },
+       {
+         "name": "pcie cards",
+         "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+         "property": {
+           "name": "Function0SubsystemVendorId"
+         }
+       }
+     ],
+     "triggers": [
+       {
+         "class": "init",
+         "method": "get_properties"
+       },
+       {
+         "class": "signal",
+         "signal": "properties_changed"
+       },
+       {
+         "class": "signal",
+         "signal": "interfaces_added"
+       }
+     ],
+     "actions": [
+       {
+         "name": "pcie_card_floors",
+         "use_config_specific_files": true,
+         "settle_time": 2
+       }
+     ]
+   },
+   {
+     "name": "Fan floors",
+     "groups": [
+      {
+        "name": "altitude",
+        "interface": "xyz.openbmc_project.Sensor.Value",
+        "property": { "name": "Value" }
+      },
+      {
+        "name": "ambient temp",
+        "interface": "xyz.openbmc_project.Sensor.Value",
+        "property": { "name": "Value" }
+      }
+     ],
+     "triggers": [
+       {
+         "class": "init",
+         "method": "get_properties"
+       },
+       {
+         "class": "signal",
+         "signal": "properties_changed"
+       },
+       {
+         "class": "signal",
+         "signal": "interfaces_added"
+       }
+     ],
+     "actions": [
+       {
+         "name": "mapped_floor",
+         "key_group": "ambient temp",
+         "fan_floors": [
+          {
+            // Entry valid for temps < 20
+            "key": 20,
+            "floors": [
+              {
+                "parameter": "pcie_floor_index",
+                "floors": [
+                  { "value": 1, "floor": 6000 },
+                  { "value": 2, "floor": 9300 },
+                  { "value": 3, "floor": 9300 },
+                  { "value": 4, "floor": 9800 },
+                  { "value": 5, "floor": 11300 }
+                ]
+              },
+              {
+                "group": "altitude",
+                "floors": [
+                  { "value": 915, "floor": 6400 },
+                  { "value": 1829, "floor": 11050 },
+                  { "value": 3048, "floor": 17250 }
+                ]
+              }
+            ]
+          },
+          {
+            // Entry valid for temps < 25
+            "key": 25,
+            "floors": [
+              {
+                "parameter": "pcie_floor_index",
+                "floors": [
+                  { "value": 1, "floor": 8400 },
+                  { "value": 2, "floor": 10600 },
+                  { "value": 3, "floor": 12100 },
+                  { "value": 4, "floor": 13500 },
+                  { "value": 5, "floor": 14900 }
+                ]
+              },
+              {
+                "group": "altitude",
+                "floors": [
+                  { "value": 915, "floor": 7500 },
+                  { "value": 1829, "floor": 11679 },
+                  { "value": 3048, "floor": 17250 }
+                ]
+              }
+            ]
+          },
+          {
+            // Entry valid for temps < 30
+            "key": 30,
+            "floors": [
+              {
+                "parameter": "pcie_floor_index",
+                "floors": [
+                  { "value": 1, "floor": 10800 },
+                  { "value": 2, "floor": 12000 },
+                  { "value": 3, "floor": 15600 },
+                  { "value": 4, "floor": 17250 },
+                  { "value": 5, "floor": 17250 }
+                ]
+              },
+              {
+                "group": "altitude",
+                "floors": [
+                  { "value": 915, "floor": 13011 },
+                  { "value": 1829, "floor": 14828 },
+                  { "value": 3048, "floor": 17250 }
+                ]
+              }
+            ]
+          },
+          {
+            // Entry valid for temps < 35
+            "key": 35,
+            "floors": [
+              {
+                "parameter": "pcie_floor_index",
+                "floors": [
+                  { "value": 1, "floor": 13200 },
+                  { "value": 2, "floor": 13300 },
+                  { "value": 3, "floor": 17250 },
+                  { "value": 4, "floor": 17250 },
+                  { "value": 5, "floor": 17250 }
+                ]
+              },
+              {
+                "group": "altitude",
+                "floors": [
+                  { "value": 3048, "floor": 17250 }
+                ]
+              }
+            ]
+          }
+        ]
+       }
+     ]
    }
 ]