PEL: Add fan missing PEL registry entry

This error is created by phosphor-fan-presence-tach after a fan has been
unplugged for a certain amount of time.

It calls out the backplane as low.  In the future, this may be dependent
on system/chassis type but that property is not available on D-bus yet.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I28738cb81d41f2f804f942d4a44f1aa125231b5e
diff --git a/extensions/openpower-pels/pel_values.cpp b/extensions/openpower-pels/pel_values.cpp
index 8dfca03..1b2984f 100644
--- a/extensions/openpower-pels/pel_values.cpp
+++ b/extensions/openpower-pels/pel_values.cpp
@@ -223,7 +223,9 @@
  *        actual names.
  */
 const std::map<std::string, std::string> symbolicFRUs = {
-    {"service_docs", "SVCDOCS"}, {"pwrsply", "PWRSPLY"}};
+    {"service_docs", "SVCDOCS"},
+    {"pwrsply", "PWRSPLY"},
+    {"air_mover", "AIRMOVR"}};
 
 PELValues::const_iterator findByValue(uint32_t value, const PELValues& fields)
 {
diff --git a/extensions/openpower-pels/registry/message_registry.json b/extensions/openpower-pels/registry/message_registry.json
index d2a0294..68b260f 100644
--- a/extensions/openpower-pels/registry/message_registry.json
+++ b/extensions/openpower-pels/registry/message_registry.json
@@ -815,6 +815,41 @@
                 "Description": "A firmware inter-process communication (D-Bus) error occurred",
                 "Message": "A firmware inter-process communication (D-Bus) error occurred"
             }
+        },
+
+        {
+            "Name": "xyz.openbmc_project.Fan.Error.Missing",
+            "Subsystem": "power_fans",
+            "ComponentID": "0x2800",
+            "Severity": "unrecoverable_redundancy_loss",
+            "ActionFlags": ["service_action", "report", "call_home"],
+
+            "SRC": {
+                "Type": "11",
+                "ReasonCode": "0x76F1",
+                "Words6To9": {}
+            },
+
+            "Callouts": [
+                {
+                    "CalloutList": [
+                        { "Priority": "high", "SymbolicFRU": "air_mover"},
+                        { "Priority": "low", "LocCode": "P0" }
+                    ]
+                }
+            ],
+
+            "Documentation": {
+                "Description": "A fan is missing",
+                "Message": "A fan is missing",
+                "Notes": [
+                    "This error occurs when a fan has been missing for a ",
+                    "certain amount of time.  The callouts are made by ",
+                    "passing in CALLOUT_INVENTORY_PATH which will be ",
+                    "combined with the symbolic FRU (not possible yet) ",
+                    "along with the FRU(s) where the controllers are."
+                ]
+            }
         }
     ]
 }
diff --git a/extensions/openpower-pels/registry/schema/schema.json b/extensions/openpower-pels/registry/schema/schema.json
index 8f83c95..50c2d2d 100644
--- a/extensions/openpower-pels/registry/schema/schema.json
+++ b/extensions/openpower-pels/registry/schema/schema.json
@@ -438,7 +438,7 @@
         {
             "description": "The symbolic FRU callout.",
             "type": "string",
-            "enum": ["service_docs", "pwrsply"]
+            "enum": ["service_docs", "pwrsply", "air_mover"]
         },
 
         "symbolicFRUTrusted":