summaryrefslogtreecommitdiff
path: root/meta-ibm/meta-witherspoon/recipes-phosphor/fans
diff options
context:
space:
mode:
authorBen_Pai <ben_pai@wistron.com>2019-08-05 13:34:34 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2019-08-22 19:13:56 +0300
commitfba5121cf3e2e40d2d44ac365ba1afc242f27b99 (patch)
tree830f364d6289ccba04437bcc1f6d02613205115d /meta-ibm/meta-witherspoon/recipes-phosphor/fans
parent661122dbec1d82991925c5a0f45f7970816ce390 (diff)
downloadopenbmc-fba5121cf3e2e40d2d44ac365ba1afc242f27b99.tar.xz
Add mihawk sensor, fan control and d-bus monitor
Most of mihawk's sensors are different from witherspoon, so I temporarily added the mihawk part and did not change the witherspoon. Add mihawk version of fan control and d-bus monitor. Mihawk does not have a water cooled mode, so another independent folder is added. Tested: 1.Shut down the system if more than three cores have a temperature greater than 100 degrees Celcius. 2.Fan control support cpu core, dimm, Onboard. 3.Confirm that sensor is able to return normally via REST. (From meta-ibm rev: 949f91431bba2f0139cc823d674a741f9590c885) Signed-off-by: Ben Pai <Ben_Pai@wistron.com> Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com> Change-Id: Icc401f32c67b622f0f1448e1166112e02c135a8f Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-ibm/meta-witherspoon/recipes-phosphor/fans')
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml586
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml31
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/zone_conditions.yaml9
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml42
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml96
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml47
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf3
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service15
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan_%.bbappend11
9 files changed, 839 insertions, 1 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml
new file mode 100644
index 000000000..b7fd1f761
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml
@@ -0,0 +1,586 @@
+groups:
+ - name: zone0_control_mode
+ description: Thermal control mode for zone 0
+ service: xyz.openbmc_project.Control.Thermal
+ type: /xyz/openbmc_project/control/thermal
+ members:
+ - /0
+ - 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
+ - /system/chassis/motherboard/fan4
+ - /system/chassis/motherboard/fan5
+ - name: zone0_ambient
+ description: Group of ambient temperature sensors for zone 0
+ type: /xyz/openbmc_project/sensors
+ members:
+ - /temperature/ambient_temp
+ - 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
+ - /temperature/dimm16_temp
+ - /temperature/dimm17_temp
+ - /temperature/dimm18_temp
+ - /temperature/dimm19_temp
+ - /temperature/dimm20_temp
+ - /temperature/dimm21_temp
+ - /temperature/dimm22_temp
+ - /temperature/dimm23_temp
+ - /temperature/dimm24_temp
+ - /temperature/dimm25_temp
+ - /temperature/dimm26_temp
+ - /temperature/dimm27_temp
+ - /temperature/dimm28_temp
+ - /temperature/dimm29_temp
+ - /temperature/dimm30_temp
+ - /temperature/dimm31_temp
+ - name: zone0_onboard
+ description: Group of onboard temperature sensors for zone 0
+ type: /xyz/openbmc_project/sensors
+ members:
+ - /temperature/p0_pcie_temp
+ - /temperature/p1_pcie_temp
+ - name: zone0_vrd
+ description: Group of vrd temperature sensors for zone 0
+ type: /xyz/openbmc_project/sensors
+ members:
+ - /temperature/p0_vcs_temp
+ - /temperature/p0_vdn_temp
+ - /temperature/p1_vcs_temp
+ - /temperature/p1_vdn_temp
+ - /temperature/p0_vdd_temp
+ - /temperature/p1_vdd_temp
+matches:
+ - name: propertiesChanged
+ description: >
+ A property changed match
+ parameters:
+ - object
+ - interface
+ signal: propertySignal
+ - name: interfacesAdded
+ description: >
+ An interfaces added match
+ parameters:
+ - object
+ signal: objectSignal
+ - name: interfacesRemoved
+ description: >
+ An interfaces removed match
+ parameters:
+ - object
+ signal:
+ name: objectSignal
+ parameters:
+ - object
+ - interface
+ handler: removeInterface
+ - name: nameOwnerChanged
+ description: >
+ A name owner changed match
+ parameters:
+ - object
+ - interface
+ signal: ownerSignal
+
+signals:
+ - name: propertySignal
+ description: >
+ Handle property signals
+ parameters:
+ - type
+ - object
+ - interface
+ - property
+ handler: setProperty
+ - name: objectSignal
+ description: >
+ Handle object signals
+ parameters:
+ - type
+ - object
+ - interface
+ - property
+ handler: setProperty
+ - name: ownerSignal
+ description: >
+ Handle owner signals
+ parameters:
+ - object
+ - interface
+ handler: setService
+
+handlers:
+ - name: setProperty
+ description: >
+ Sets a value for the given object/interface/property
+ parameters:
+ - type
+ - object
+ - interface
+ - property
+ - name: setService
+ description: >
+ Sets the service name and ownership status for the given group
+ parameters:
+ - group
+ - name: removeInterface
+ description: >
+ Removes an interface(and all associated properties) on the
+ given object from use within all event actions
+ parameters:
+ - object
+ - interface
+
+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
+
+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
+ - name: use_alternate_events_on_state
+ description: >
+ Replaces a set of default events with an alternate set of events
+ when all the group properties are at a given state
+ parameters:
+ - property
+ - defevents
+ - altevents
+
+events:
+ - name: missing_before_high_speed_air
+ groups:
+ - name: air_cooled_zone0_fans
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Inventory.Item
+ property:
+ name: Present
+ type: bool
+ matches:
+ - name: interfacesAdded
+ - name: propertiesChanged
+ actions:
+ - name: count_state_before_speed
+ count: 1
+ property:
+ value: false
+ type: bool
+ speed:
+ value: 255
+ type: uint64_t
+ - name: fails_before_high_speed_air
+ groups:
+ - name: air_cooled_zone0_fans
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+ property:
+ name: Functional
+ type: bool
+ matches:
+ - name: propertiesChanged
+ 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_control_mode
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Control.ThermalMode
+ property:
+ name: Current
+ type: std::string
+ matches:
+ - name: propertiesChanged
+ actions:
+ - name: use_alternate_events_on_state
+ property:
+ value: CUSTOM
+ type: std::string
+ defevents:
+ - name: default_floor_boundary
+ groups:
+ - name: zone0_ambient
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Sensor.Value
+ property:
+ name: Value
+ type: int64_t
+ matches:
+ - name: propertiesChanged
+ actions:
+ - name: set_floor_from_average_sensor_value
+ map:
+ value:
+ - 25000: 85
+ - 26000: 85
+ - 28000: 97
+ - 31000: 116
+ - 33000: 128
+ - 36000: 148
+ - 38000: 160
+ - 41000: 255
+ type: std::map<int64_t, uint64_t>
+ - name: set_ceiling_from_average_sensor_value
+ map:
+ value:
+ - 25000: 255
+ - 27000: 255
+ type: std::map<int64_t, uint64_t>
+ altevents:
+ - name: alternate_floor_boundary
+ groups:
+ - name: zone0_ambient
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Sensor.Value
+ property:
+ name: Value
+ type: int64_t
+ matches:
+ - name: propertiesChanged
+ actions:
+ - name: set_floor_from_average_sensor_value
+ map:
+ value:
+ - 25000: 255
+ - 26000: 255
+ - 28000: 255
+ - 31000: 255
+ - 33000: 255
+ - 36000: 255
+ - 38000: 255
+ - 41000: 255
+ type: std::map<int64_t, uint64_t>
+ - name: set_ceiling_from_average_sensor_value
+ map:
+ value:
+ - 25000: 255
+ - 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
+ matches:
+ - name: interfacesAdded
+ - name: propertiesChanged
+ events:
+ - name: speed_changes_based_on_core_temps
+ groups:
+ - name: zone0_cores
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Sensor.Value
+ property:
+ name: Value
+ type: int64_t
+ matches:
+ - name: interfacesAdded
+ - name: propertiesChanged
+ - name: interfacesRemoved
+ actions:
+ - name: set_net_increase_speed
+ property:
+ value: 75000
+ type: int64_t
+ factor:
+ value: 1000
+ type: int64_t
+ delta:
+ value: 13
+ type: uint64_t
+ - name: set_net_decrease_speed
+ property:
+ value: 70000
+ type: int64_t
+ factor:
+ value: 7000
+ type: int64_t
+ delta:
+ value: 5
+ type: uint64_t
+ timer:
+ interval: 1
+ - name: speed_changes_based_on_dimm_temps
+ groups:
+ - name: zone0_dimms
+ interface: xyz.openbmc_project.Sensor.Value
+ property:
+ name: Value
+ type: int64_t
+ matches:
+ - name: interfacesAdded
+ - name: propertiesChanged
+ - name: interfacesRemoved
+ actions:
+ - name: set_net_increase_speed
+ property:
+ value: 80000
+ type: int64_t
+ factor:
+ value: 1000
+ type: int64_t
+ delta:
+ value: 8
+ type: uint64_t
+ - name: set_net_decrease_speed
+ property:
+ value: 75000
+ type: int64_t
+ factor:
+ value: 3000
+ type: int64_t
+ delta:
+ value: 3
+ type: uint64_t
+ timer:
+ interval: 5
+ - name: speed_changes_based_on_onboard_temps
+ groups:
+ - name: zone0_onboard
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Sensor.Value
+ property:
+ name: Value
+ type: int64_t
+ matches:
+ - name: interfacesAdded
+ - name: propertiesChanged
+ - name: interfacesRemoved
+ actions:
+ - name: set_net_increase_speed
+ property:
+ value: 50000
+ type: int64_t
+ factor:
+ value: 1000
+ type: int64_t
+ delta:
+ value: 8
+ type: uint64_t
+ - name: set_net_decrease_speed
+ property:
+ value: 47000
+ type: int64_t
+ factor:
+ value: 3000
+ type: int64_t
+ delta:
+ value: 3
+ type: uint64_t
+ timer:
+ interval: 10
+ - name: speed_changes_based_on_vrd_temps
+ groups:
+ - name: zone0_vrd
+ zone_conditions:
+ - name: air_cooled_chassis
+ zones:
+ - 0
+ interface: xyz.openbmc_project.Sensor.Value
+ property:
+ name: Value
+ type: int64_t
+ matches:
+ - name: interfacesAdded
+ - name: propertiesChanged
+ - name: interfacesRemoved
+ actions:
+ - name: set_net_increase_speed
+ property:
+ value: 90000
+ type: int64_t
+ factor:
+ value: 1000
+ type: int64_t
+ delta:
+ value: 5
+ type: uint64_t
+ - name: set_net_decrease_speed
+ property:
+ value: 85000
+ type: int64_t
+ factor:
+ value: 3000
+ type: int64_t
+ delta:
+ value: 3
+ type: uint64_t
+ timer:
+ interval: 10
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml
new file mode 100644
index 000000000..9133fa1fa
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml
@@ -0,0 +1,31 @@
+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
+ - inventory: /system/chassis/motherboard/fan4
+ cooling_zone: 0
+ sensors:
+ - fan4_0
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ - inventory: /system/chassis/motherboard/fan5
+ cooling_zone: 0
+ sensors:
+ - fan5_0
+ target_interface: xyz.openbmc_project.Control.FanPwm
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/zone_conditions.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/zone_conditions.yaml
new file mode 100644
index 000000000..7dc99b6a2
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/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-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml
new file mode 100644
index 000000000..4deb2523e
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml
@@ -0,0 +1,42 @@
+manager_configuration:
+ power_on_delay: 20
+
+zone_configuration:
+
+#Air cooled zones
+- zone_conditions:
+ - name: air_cooled_chassis
+
+ zones:
+ - zone: 0
+ cooling_profiles:
+ - air
+ - all
+ full_speed: 255
+ default_floor: 195
+ increase_delay: 5
+ decrease_interval: 30
+ interfaces:
+ - name: xyz.openbmc_project.Control.ThermalMode
+ properties:
+ - name: Supported
+ type: array[string]
+ values:
+ - value: DEFAULT
+ description: >
+ Default thermal control mode
+ - value: CUSTOM
+ description: >
+ Custom thermal control mode for handling the use of
+ optical cables located behind the GPU exhaust that
+ could produce overtemp warnings without this mode
+ enabled.
+ - name: Current
+ type: string
+ persist: true
+ values:
+ - value: DEFAULT
+ description: >
+ Set current thermal control mode to the
+ default which will be replaced on startup if
+ another selected mode was persisted. \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml
new file mode 100644
index 000000000..076349de5
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml
@@ -0,0 +1,96 @@
+fans:
+ - inventory: /system/chassis/motherboard/fan0
+ allowed_out_of_range_time: 10
+ deviation: 15
+ num_sensors_nonfunc_for_fan_nonfunc: 1
+ sensors:
+ - name: fan0_0
+ has_target: true
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+ - name: fan0_1
+ has_target: false
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+
+ - inventory: /system/chassis/motherboard/fan1
+ allowed_out_of_range_time: 10
+ deviation: 15
+ num_sensors_nonfunc_for_fan_nonfunc: 1
+ sensors:
+ - name: fan1_0
+ has_target: true
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+ - name: fan1_1
+ has_target: false
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+
+ - inventory: /system/chassis/motherboard/fan2
+ allowed_out_of_range_time: 10
+ deviation: 15
+ num_sensors_nonfunc_for_fan_nonfunc: 1
+ sensors:
+ - name: fan2_0
+ has_target: true
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+ - name: fan2_1
+ has_target: false
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+
+ - inventory: /system/chassis/motherboard/fan3
+ allowed_out_of_range_time: 10
+ deviation: 15
+ num_sensors_nonfunc_for_fan_nonfunc: 1
+ sensors:
+ - name: fan3_0
+ has_target: true
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+ - name: fan3_1
+ has_target: false
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+
+ - inventory: /system/chassis/motherboard/fan4
+ allowed_out_of_range_time: 10
+ deviation: 15
+ num_sensors_nonfunc_for_fan_nonfunc: 1
+ sensors:
+ - name: fan4_0
+ has_target: true
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+ - name: fan4_1
+ has_target: false
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+
+ - inventory: /system/chassis/motherboard/fan5
+ allowed_out_of_range_time: 10
+ deviation: 15
+ num_sensors_nonfunc_for_fan_nonfunc: 1
+ sensors:
+ - name: fan5_0
+ has_target: true
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
+ - name: fan5_1
+ has_target: false
+ target_interface: xyz.openbmc_project.Control.FanPwm
+ factor: 70
+ offset: 1200
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml
new file mode 100644
index 000000000..9cb5ecddb
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml
@@ -0,0 +1,47 @@
+- name: fan0
+ path: /system/chassis/motherboard/fan0
+ methods:
+ - type: gpio
+ key: 9
+ physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
+ devpath: /dev/input/by-path/platform-gpio-keys-polled-event
+
+- name: fan1
+ path: /system/chassis/motherboard/fan1
+ methods:
+ - type: gpio
+ key: 10
+ physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
+ devpath: /dev/input/by-path/platform-gpio-keys-polled-event
+
+- name: fan2
+ path: /system/chassis/motherboard/fan2
+ methods:
+ - type: gpio
+ key: 11
+ physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
+ devpath: /dev/input/by-path/platform-gpio-keys-polled-event
+
+- name: fan3
+ path: /system/chassis/motherboard/fan3
+ methods:
+ - type: gpio
+ key: 12
+ physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
+ devpath: /dev/input/by-path/platform-gpio-keys-polled-event
+
+- name: fan4
+ path: /system/chassis/motherboard/fan4
+ methods:
+ - type: gpio
+ key: 13
+ physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
+ devpath: /dev/input/by-path/platform-gpio-keys-polled-event
+
+- name: fan5
+ path: /system/chassis/motherboard/fan5
+ methods:
+ - type: gpio
+ key: 14
+ physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
+ devpath: /dev/input/by-path/platform-gpio-keys-polled-event
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf
new file mode 100644
index 000000000..21fcfcb49
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf
@@ -0,0 +1,3 @@
+OBJPATH="--path=/system/chassis"
+AIR="--air"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service
new file mode 100644
index 000000000..9232b13fc
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Phosphor Cooling Type
+Wants=mapper-wait@-xyz-openbmc_project-inventory.service
+After=mapper-wait@-xyz-openbmc_project-inventory.service
+ConditionPathExists={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf
+ExecStart=/usr/bin/env phosphor-cooling-type ${{OBJPATH}} ${{AIR}}
+SyslogIdentifier=phosphor-cooling-type
+
+[Install]
+RequiredBy=multi-user.target
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan_%.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan_%.bbappend
index 88c32ffa6..085857c31 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan_%.bbappend
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/phosphor-fan_%.bbappend
@@ -3,9 +3,14 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
# Package configuration
FAN_PACKAGES_append_ibm-ac-server = " \
phosphor-cooling-type \
-"
+ "
+
+FAN_PACKAGES_append_mihawk = " \
+ phosphor-cooling-type \
+ "
PACKAGECONFIG_append_ibm-ac-server = " cooling-type"
+PACKAGECONFIG_append_mihawk = " cooling-type"
TMPL_COOLING = "phosphor-cooling-type@.service"
INSTFMT_COOLING = "phosphor-cooling-type@{0}.service"
@@ -15,10 +20,14 @@ FMT_COOLING = "../${TMPL_COOLING}:${COOLING_TGT}.requires/${INSTFMT_COOLING}"
FILES_phosphor-cooling-type_append_ibm-ac-server = " ${bindir}/phosphor-cooling-type"
SYSTEMD_SERVICE_phosphor-cooling-type_append_ibm-ac-server = " ${TMPL_COOLING}"
SYSTEMD_LINK_phosphor-cooling-type_append_ibm-ac-server = " ${@compose_list(d, 'FMT_COOLING', 'OBMC_CHASSIS_INSTANCES')}"
+FILES_phosphor-cooling-type_append_mihawk = " ${bindir}/phosphor-cooling-type"
+SYSTEMD_SERVICE_phosphor-cooling-type_append_mihawk = " ${TMPL_COOLING}"
+SYSTEMD_LINK_phosphor-cooling-type_append_mihawk = " ${@compose_list(d, 'FMT_COOLING', 'OBMC_CHASSIS_INSTANCES')}"
COOLING_ENV_FMT = "obmc/phosphor-fan/phosphor-cooling-type-{0}.conf"
SYSTEMD_ENVIRONMENT_FILE_phosphor-cooling-type_append_ibm-ac-server = " ${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_ENVIRONMENT_FILE_phosphor-cooling-type_append_mihawk = " ${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}"
#These services are protected by the watchdog
SYSTEMD_OVERRIDE_phosphor-fan-control_witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-control-init@0.service.d/fan-watchdog-monitor.conf"