fp5280g2: Add fan control yaml config

The fan will rotate full speed according
to the fan-control yaml,since ipmi yaml is not
configured.

Tested: Manually set a speed for the fan and observe
	that the fan-control sets the fan to full speed.

(From meta-inspur rev: 4f5e77b08a50999885f1e58a50a76f8e684ad873)

Signed-off-by: John Wang <wangzqbj@inspur.com>
Change-Id: If2dd8de7c7798f446216d012fa109a2d4b044be8
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-events-config.bbappend b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-events-config.bbappend
new file mode 100644
index 0000000..a5847a6
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-events-config.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend_fp5280g2 := "${THISDIR}/${BPN}:"
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-events-config/events.yaml b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-events-config/events.yaml
new file mode 100644
index 0000000..f99b943
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-events-config/events.yaml
@@ -0,0 +1,464 @@
+groups:
+    - name: air_cooled_zone0_fans
+      description: Group of fan inventory objects for air cooled zone 0
+      type: /xyz/openbmc_project/inventory
+      members:
+          - /system/chassis/motherboard/fan0
+          - /system/chassis/motherboard/fan1
+          - /system/chassis/motherboard/fan2
+          - /system/chassis/motherboard/fan3
+    - name: zone0_ambient
+      description: Group of ambient temperature sensors for zone 0
+      type: /xyz/openbmc_project/sensors
+      members:
+          - /temperature/inlet
+    - name: occ0_object
+      description: Dbus object containing OCC0 properties
+      type: /org/open_power/control
+      members:
+          - /occ0
+    - name: occ1_object
+      description: Dbus object containing OCC1 properties
+      type: /org/open_power/control
+      members:
+          - /occ1
+    - name: zone0_cores
+      description: Group of core temperature sensors for zone 0
+      type: /xyz/openbmc_project/sensors
+      members:
+          - /temperature/p0_core0_temp
+          - /temperature/p0_core1_temp
+          - /temperature/p0_core2_temp
+          - /temperature/p0_core3_temp
+          - /temperature/p0_core4_temp
+          - /temperature/p0_core5_temp
+          - /temperature/p0_core6_temp
+          - /temperature/p0_core7_temp
+          - /temperature/p0_core8_temp
+          - /temperature/p0_core9_temp
+          - /temperature/p0_core10_temp
+          - /temperature/p0_core11_temp
+          - /temperature/p0_core12_temp
+          - /temperature/p0_core13_temp
+          - /temperature/p0_core14_temp
+          - /temperature/p0_core15_temp
+          - /temperature/p0_core16_temp
+          - /temperature/p0_core17_temp
+          - /temperature/p0_core18_temp
+          - /temperature/p0_core19_temp
+          - /temperature/p0_core20_temp
+          - /temperature/p0_core21_temp
+          - /temperature/p0_core22_temp
+          - /temperature/p0_core23_temp
+          - /temperature/p1_core0_temp
+          - /temperature/p1_core1_temp
+          - /temperature/p1_core2_temp
+          - /temperature/p1_core3_temp
+          - /temperature/p1_core4_temp
+          - /temperature/p1_core5_temp
+          - /temperature/p1_core6_temp
+          - /temperature/p1_core7_temp
+          - /temperature/p1_core8_temp
+          - /temperature/p1_core9_temp
+          - /temperature/p1_core10_temp
+          - /temperature/p1_core11_temp
+          - /temperature/p1_core12_temp
+          - /temperature/p1_core13_temp
+          - /temperature/p1_core14_temp
+          - /temperature/p1_core15_temp
+          - /temperature/p1_core16_temp
+          - /temperature/p1_core17_temp
+          - /temperature/p1_core18_temp
+          - /temperature/p1_core19_temp
+          - /temperature/p1_core20_temp
+          - /temperature/p1_core21_temp
+          - /temperature/p1_core22_temp
+          - /temperature/p1_core23_temp
+    - name: zone0_dimms
+      description: Group of dimm temperature sensors for zone 0
+      type: /xyz/openbmc_project/sensors
+      members:
+          - /temperature/dimm0_temp
+          - /temperature/dimm1_temp
+          - /temperature/dimm2_temp
+          - /temperature/dimm3_temp
+          - /temperature/dimm4_temp
+          - /temperature/dimm5_temp
+          - /temperature/dimm6_temp
+          - /temperature/dimm7_temp
+          - /temperature/dimm8_temp
+          - /temperature/dimm9_temp
+          - /temperature/dimm10_temp
+          - /temperature/dimm11_temp
+          - /temperature/dimm12_temp
+          - /temperature/dimm13_temp
+          - /temperature/dimm14_temp
+          - /temperature/dimm15_temp
+
+matches:
+    - name: propertiesChanged
+      parameters:
+          - object
+          - interface
+    - name: interfacesAdded
+      parameters:
+          - object
+    - name: nameOwnerChanged
+      parameters:
+          - object
+          - interface
+
+signals:
+    - name: propertiesChanged
+      description: >
+          A property changed match
+      parameters:
+          - type
+          - object
+          - interface
+          - property
+      match: propertiesChanged
+    - name: interfacesAdded
+      description: >
+          An interfaces added match
+      parameters:
+          - type
+          - object
+          - interface
+          - property
+      match: interfacesAdded
+    - name: nameOwnerChanged
+      description: >
+          A name owner changed match
+      parameters:
+      match: nameOwnerChanged
+
+methods:
+    - name: getProperties
+      description: >
+          Get the property values of the given group members
+          by performing a `GetProperty` method call on each
+      parameters:
+          - type
+    - name: nameHasOwner
+      description: >
+          A NameHasOwner method call to be performed on all event group members
+      parameters:
+
+handlers:
+    - name: setProperty
+      description: >
+          Sets a value for the given object/interface/property
+      parameters:
+          - type
+    - name: setService
+      description: >
+          Sets the service name and ownership status for the given group
+      parameters:
+          - group
+
+preconditions:
+    - name: property_states_match
+      description: >
+          All defined properties must match the values given to
+          enable a set speed event otherwise fan speeds are set to full
+      parameters:
+          - groups
+    - name: services_missing_owner
+      description: >
+          Any services missing an owner enable the events given otherwise
+          the events are removed/disabled
+      parameters:
+
+actions:
+    - name: call_actions_based_on_timer
+      description: >
+          Sets up a list of actions to be invoked when the defined timer
+          expires (or for each expiration of a repeating timer)
+      parameters:
+          - timer
+          - actions
+    - name: default_floor_on_missing_owner
+      description: >
+          Set the fan floor to the default floor
+    - name: set_speed_on_missing_owner
+      description: >
+          Set fans to the given speed when any service within the group
+          no longer exists
+      parameters:
+          - speed
+    - name: set_request_speed_base_with_max
+      description: >
+          Set the base request speed of a zone to the max value of a group for
+          calculating a new target speed
+    - name: count_state_before_speed
+      description: Set the speed when a number of properties at a state
+      parameters:
+          - count
+          - property
+          - speed
+    - name: set_floor_from_average_sensor_value
+      description: Set floor speed from first entry with average less than key
+      parameters:
+          - map
+    - name: set_ceiling_from_average_sensor_value
+      description: Set ceiling speed based on key transition values with average
+      parameters:
+          - map
+    - name: set_net_increase_speed
+      description: >
+          Set the speed increase delta based on a factor applied to
+          the delta increase size times the given value and property's
+          value difference
+      parameters:
+          - property
+          - factor
+          - delta
+    - name: set_net_decrease_speed
+      description: >
+          Set the speed decrease delta based on a factor applied to
+          the delta decrease size times the given value and property's
+          value difference
+      parameters:
+          - property
+          - factor
+          - delta
+
+events:
+    - name: default_fan_floor_on_service_fail
+      precondition:
+          name: services_missing_owner
+          groups:
+              - name: zone0_ambient
+                interface: xyz.openbmc_project.Sensor.Value
+                property:
+                    name: Value
+                    type: int64_t
+          triggers:
+              - name: init
+                method: nameHasOwner
+                handler: setService
+              - name: signal
+                signal: nameOwnerChanged
+                handler: setService
+          events:
+              - name: default_fan_floor
+                groups:
+                    - name: zone0_ambient
+                      interface: xyz.openbmc_project.Sensor.Value
+                      property:
+                          name: Value
+                          type: int64_t
+                triggers:
+                    - name: timer
+                      interval: 5000000
+                      type: oneshot
+                actions:
+                    - name: default_floor_on_missing_owner
+    - name: high_speed_on_occ_service_fail
+      groups:
+          - name: occ0_object
+            interface: org.open_power.OCC.Status
+            property:
+                name: OccActive
+                type: bool
+          - name: occ1_object
+            interface: org.open_power.OCC.Status
+            property:
+                name: OccActive
+                type: bool
+      triggers:
+          - name: init
+            method: nameHasOwner
+            handler: setService
+          - name: signal
+            signal: nameOwnerChanged
+            handler: setService
+      actions:
+          - name: call_actions_based_on_timer
+            timer:
+                interval: 5000000
+                type: oneshot
+            actions:
+                - name: set_speed_on_missing_owner
+                  speed:
+                      value: 255
+                      type: uint64_t
+    - name: missing_or_fails_before_high_speed_air
+      groups:
+          - name: air_cooled_zone0_fans
+            interface: xyz.openbmc_project.Inventory.Item
+            property:
+                name: Present
+                type: bool
+          - name: air_cooled_zone0_fans
+            interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+            property:
+                name: Functional
+                type: bool
+      triggers:
+          - name: init
+            method: getProperties
+            handler: setProperty
+          - name: signal
+            signal: propertiesChanged
+            handler: setProperty
+      actions:
+          - name: count_state_before_speed
+            count: 1
+            property:
+                value: false
+                type: bool
+            speed:
+                value: 255
+                type: uint64_t
+    - name: set_air_cooled_speed_boundaries_based_on_ambient
+      groups:
+          - name: zone0_ambient
+            interface: xyz.openbmc_project.Sensor.Value
+            property:
+                name: Value
+                type: int64_t
+      triggers:
+          - name: init
+            method: getProperties
+            handler: setProperty
+          - name: signal
+            signal: propertiesChanged
+            handler: setProperty
+      actions:
+          - name: set_floor_from_average_sensor_value
+            map:
+                value:
+                    - 27000: 85
+                    - 32000: 112
+                    - 37000: 126
+                    - 40000: 141
+                type: std::map<int64_t, uint64_t>
+          - name: set_ceiling_from_average_sensor_value
+            map:
+                value:
+                    - 25000: 175
+                    - 27000: 255
+                type: std::map<int64_t, uint64_t>
+    - name: occ_active_speed_changes
+      precondition:
+          name: property_states_match
+          groups:
+              - name: occ0_object
+                interface: org.open_power.OCC.Status
+                property:
+                    name: OccActive
+                    type: bool
+                    value: true
+              - name: occ1_object
+                interface: org.open_power.OCC.Status
+                property:
+                    name: OccActive
+                    type: bool
+                    value: true
+          triggers:
+              - name: init
+                method: getProperties
+                handler: setProperty
+              - name: signal
+                signal: interfacesAdded
+                handler: setProperty
+              - name: signal
+                signal: propertiesChanged
+                handler: setProperty
+          events:
+              - name: speed_control_sensors
+                groups:
+                    - name: zone0_cores
+                      interface: xyz.openbmc_project.Sensor.Value
+                      property:
+                          name: Value
+                          type: int64_t
+                    - name: zone0_dimms
+                      interface: xyz.openbmc_project.Sensor.Value
+                      property:
+                          name: Value
+                          type: int64_t
+                triggers:
+                    - name: init
+                      method: getProperties
+                      handler: setProperty
+                    - name: signal
+                      signal: interfacesAdded
+                      handler: setProperty
+                    - name: signal
+                      signal: propertiesChanged
+                      handler: setProperty
+              - name: 1sec_speed_change_request_sampling
+                triggers:
+                    - name: timer
+                      interval: 1000000
+                      type: repeating
+                actions:
+                    # Speed changes based on core temps
+                    - name: set_net_increase_speed
+                      groups:
+                          - name: zone0_cores
+                            interface: xyz.openbmc_project.Sensor.Value
+                            property:
+                                name: Value
+                                type: int64_t
+                      property:
+                          value: 73000
+                          type: int64_t
+                      factor:
+                          value: 1000
+                          type: int64_t
+                      delta:
+                          value: 11
+                          type: uint64_t
+                    - name: set_net_decrease_speed
+                      groups:
+                          - name: zone0_cores
+                            interface: xyz.openbmc_project.Sensor.Value
+                            property:
+                                name: Value
+                                type: int64_t
+                      property:
+                          value: 70000
+                          type: int64_t
+                      factor:
+                          value: 1000
+                          type: int64_t
+                      delta:
+                          value: 11
+                          type: uint64_t
+                    # Speed changes based on dimm temps
+                    - name: set_net_increase_speed
+                      groups:
+                          - name: zone0_dimms
+                            interface: xyz.openbmc_project.Sensor.Value
+                            property:
+                                name: Value
+                                type: int64_t
+                      property:
+                          value: 64000
+                          type: int64_t
+                      factor:
+                          value: 1000
+                          type: int64_t
+                      delta:
+                          value: 6
+                          type: uint64_t
+                    - name: set_net_decrease_speed
+                      groups:
+                          - name: zone0_dimms
+                            interface: xyz.openbmc_project.Sensor.Value
+                            property:
+                                name: Value
+                                type: int64_t
+                      property:
+                          value: 61000
+                          type: int64_t
+                      factor:
+                          value: 1000
+                          type: int64_t
+                      delta:
+                          value: 6
+                          type: uint64_t
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-fan-config.bbappend b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-fan-config.bbappend
new file mode 100644
index 0000000..a5847a6
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-fan-config.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend_fp5280g2 := "${THISDIR}/${BPN}:"
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-fan-config/fans.yaml b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-fan-config/fans.yaml
new file mode 100644
index 0000000..54e7395
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-fan-config/fans.yaml
@@ -0,0 +1,21 @@
+fans:
+  - inventory: /system/chassis/motherboard/fan0
+    cooling_zone: 0
+    sensors:
+      - fan0_0
+    target_interface: xyz.openbmc_project.Control.FanPwm
+  - inventory: /system/chassis/motherboard/fan1
+    cooling_zone: 0
+    sensors:
+      - fan1_0
+    target_interface: xyz.openbmc_project.Control.FanPwm
+  - inventory: /system/chassis/motherboard/fan2
+    cooling_zone: 0
+    sensors:
+      - fan2_0
+    target_interface: xyz.openbmc_project.Control.FanPwm
+  - inventory: /system/chassis/motherboard/fan3
+    cooling_zone: 0
+    sensors:
+      - fan3_0
+    target_interface: xyz.openbmc_project.Control.FanPwm
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config.bbappend b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config.bbappend
new file mode 100644
index 0000000..a5847a6
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend_fp5280g2 := "${THISDIR}/${BPN}:"
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/zone_conditions.yaml b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/zone_conditions.yaml
new file mode 100644
index 0000000..7dc99b6
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/zone_conditions.yaml
@@ -0,0 +1,9 @@
+conditions:
+  - name: air_cooled_chassis
+    type: getProperty
+    properties:
+      - property: WaterCooled
+        interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
+        path: /xyz/openbmc_project/inventory/system/chassis
+        type: bool
+        value: false
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-config.bbappend b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-config.bbappend
new file mode 100644
index 0000000..956e7bf
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-config.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_prepend_fp5280g2 := "${THISDIR}/${BPN}:"
+
diff --git a/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-config/zones.yaml b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-config/zones.yaml
new file mode 100644
index 0000000..0486acf
--- /dev/null
+++ b/meta-inspur/meta-fp5280g2/recipes-phosphor/fans/phosphor-fan-control-zone-config/zones.yaml
@@ -0,0 +1,15 @@
+manager_configuration:
+  power_on_delay: 20
+
+zone_configuration:
+
+#Air cooled zones
+- zone_conditions:
+  - name: air_cooled_chassis
+
+  zones:
+    - zone: 0
+      full_speed: 255
+      default_floor: 195
+      increase_delay: 5
+      decrease_interval: 30