summaryrefslogtreecommitdiff
path: root/meta-ibm/meta-witherspoon/recipes-phosphor
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
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')
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb11
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml339
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml905
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend4
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend1
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/ibm-ac-server/thermal-policy.yaml (renamed from meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/thermal-policy.yaml)0
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml187
-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
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@58.conf4
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@5b.conf4
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@70.conf11
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@72.conf5
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@70.conf11
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@72.conf5
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/emc1403@4c.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@48.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@49.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/pca9545@70/i2c@3/tmp275@48.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf25
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf290
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf280
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-12v.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-3v.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-5v.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-battery.conf9
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs0.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs1.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd0.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd1.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddra.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrb.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrc.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrd.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn0.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn1.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio0.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio1.conf2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend31
48 files changed, 2998 insertions, 6 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb
index 12194640d..e53d9c055 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb
@@ -9,15 +9,20 @@ inherit phosphor-dbus-monitor
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += "file://air-cooled.yaml"
-SRC_URI += "file://water-cooled.yaml"
+SRC_URI_append_ibm-ac-server = " file://water-cooled.yaml"
SRC_URI += "file://fan-errors.yaml"
-do_install() {
+do_install_append_ibm-ac-server() {
install -D ${WORKDIR}/air-cooled.yaml ${D}${config_dir}/air-cooled.yaml
install -D ${WORKDIR}/water-cooled.yaml ${D}${config_dir}/water-cooled.yaml
install -D ${WORKDIR}/fan-errors.yaml ${D}${config_dir}/fan-errors.yaml
}
+do_install_append_mihawk() {
+ install -D ${WORKDIR}/air-cooled.yaml ${D}${config_dir}/air-cooled.yaml
+ install -D ${WORKDIR}/fan-errors.yaml ${D}${config_dir}/fan-errors.yaml
+}
+
FILES_${PN} += "${config_dir}/air-cooled.yaml"
-FILES_${PN} += "${config_dir}/water-cooled.yaml"
+FILES_${PN}_append_ibm-ac-server = " ${config_dir}/water-cooled.yaml"
FILES_${PN} += "${config_dir}/fan-errors.yaml"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml
new file mode 100644
index 000000000..52232e3f0
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml
@@ -0,0 +1,339 @@
+# Air cooled mihawk fan policy for PDM.
+#
+# An air cooled mihawk requires a minimum of three functional fans
+# enclosures or six functional fan rotors across all enclosures.
+# If the number of functional fan enclosures is below three, soft poweroff
+# the system, whereas if the number of fan rotors drop below six, an
+# immediate hard poweroff of the system occurs.
+
+- name: fan enclosures
+ description: >
+ 'An air cooled mihawk has 6 fan enclosures to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
+
+- name: fan rotors
+ description: >
+ 'An air cooled Witherspoon has eight fan rotors to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_1
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1/fan1_0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1/fan1_1
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2/fan2_0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2/fan2_1
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3/fan3_0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3/fan3_1
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4/fan4_0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4/fan4_1
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5/fan5_0
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5/fan5_1
+
+- name: chassis state
+ description: >
+ 'Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSISSTATE
+ path: /xyz/openbmc_project/state/chassis0
+
+- name: chassis
+ description: >
+ 'Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSIS
+ path: /xyz/openbmc_project/inventory/system/chassis
+
+- name: fan present
+ description: >
+ 'Monitor the presence state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Item
+ meta: PRESENT
+ property: Present
+
+- name: fan functional
+ description: >
+ 'Monitor the functional state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+ meta: FUNCTIONAL
+ property: Functional
+
+- name: chassis powered
+ description: >
+ 'Monitor the chassis power state.'
+ class: group
+ group: property
+ type: string
+ members:
+ - interface: xyz.openbmc_project.State.Chassis
+ meta: CHASSIS_STATE
+ property: CurrentPowerState
+
+- name: chassis air cooled
+ description: >
+ 'Monitor the chassis cooling type.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
+ meta: COOLING_TYPE
+ property: WaterCooled
+
+- name: watch fan present
+ description: >
+ 'Trigger logic on fan enclosure presence state changes.'
+ class: watch
+ watch: property
+ paths: fan enclosures
+ properties: fan present
+ callback: check cooling type
+
+- name: watch fan functional
+ description: >
+ 'Trigger logic on fan enclosure functional state changes.'
+ class: watch
+ watch: property
+ paths: fan enclosures
+ properties: fan functional
+ callback: check cooling type
+
+- name: watch fan rotor functional
+ description: >
+ 'Trigger logic on fan rotor functional state changes.'
+ class: watch
+ watch: property
+ paths: fan rotors
+ properties: fan functional
+ callback: check cooling type
+
+- name: watch chassis state
+ description: >
+ 'Trigger logic on chassis power state changes.'
+ class: watch
+ watch: property
+ paths: chassis state
+ properties: chassis powered
+ callback: check cooling type
+
+- name: watch cooling type
+ description: >
+ 'Maintain a cache of the chassis cooling type.'
+ class: watch
+ watch: property
+ paths: chassis
+ properties: chassis air cooled
+
+- name: check cooling type
+ description: >
+ 'If this condition passes the chassis is air cooled.'
+ class: condition
+ condition: count
+ paths: chassis
+ properties: chassis air cooled
+ callback: check power
+ countop: '=='
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: check power
+ description: >
+ 'If the chassis has power, check fans.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fans
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check fans
+ description: >
+ 'Verify there are at least three functional fan enclosures and at least
+ six functional fan rotors, power off if not.'
+ class: callback
+ callback: group
+ members:
+ - check group presence
+ - check group functional enclosures
+ - check group functional rotors
+
+- name: check group presence
+ description: >
+ 'If this condition passes more than one fan has been unplugged
+ for more than 25 seconds. Shut the system down. Count present
+ fans rather than non-present fans since the latter would pass
+ if the fan has not been created for some reason.
+
+ For a more detailed definition of unplugged, consult the documentation
+ of xyz.openbmc_project.Inventory.Item and/or the documentation
+ of the fan inventory object implementation.'
+ class: condition
+ condition: count
+ paths: fan enclosures
+ properties: fan present
+ defer: 25000000us
+ callback: log and shutdown
+ countop: '<'
+ countbound: 6
+ op: '=='
+ bound: true
+
+- name: check group functional enclosures
+ description: >
+ 'If this condition passes more than one fan enclosure in the group has been
+ marked as nonfunctional for 25 seconds. Shut the system down.
+
+ For a more detailed definition of nonfunctional, consult the documentation
+ of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the
+ documentation of the fan inventory object implementation.'
+ class: condition
+ condition: count
+ paths: fan enclosures
+ properties: fan functional
+ defer: 25000000us
+ callback: log and shutdown
+ countop: '>'
+ countbound: 1
+ op: '=='
+ bound: false
+
+- name: check group functional rotors
+ description: >
+ 'If this condition passes more than two fan rotors in the group have been
+ marked as nonfunctional for 25 seconds. Immediately power off.
+ For a more detailed definition of nonfunctional, consult the documentation
+ of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the
+ documentation of the fan inventory object implementation.'
+ class: condition
+ condition: count
+ paths: fan rotors
+ properties: fan functional
+ defer: 25000000us
+ callback: log and poweroff
+ countop: '>'
+ countbound: 1
+ op: '=='
+ bound: false
+
+- name: log and poweroff
+ description: >
+ 'Immediately poweroff, log an event in the journal, and create an
+ error log.'
+ class: callback
+ callback: group
+ members:
+ - hard poweroff
+ - log hard poweroff
+ - create shutdown error
+
+- name: log and shutdown
+ description: >
+ 'Shut the system down, log an event in the journal, and create an
+ error log.'
+ class: callback
+ callback: group
+ members:
+ - shutdown
+ - log shutdown
+ - create shutdown error
+
+- name: hard poweroff
+ description: >
+ 'Immediately power off the system.'
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-chassis-hard-poweroff@0.target
+ type: string
+ - value: replace
+ type: string
+
+- name: shutdown
+ description: >
+ 'Shut down the system.'
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-host-shutdown@0.target
+ type: string
+ - value: replace
+ type: string
+
+- name: log hard poweroff
+ description: >
+ 'Log a hard poweroff event to the systemd journal.'
+ class: callback
+ callback: journal
+ paths: chassis state
+ properties: chassis powered
+ severity: ERR
+ message: Immediate poweroff of system. There are not enough functional fans.
+
+- name: log shutdown
+ description: >
+ 'Log a shutdown event to the systemd journal.'
+ class: callback
+ callback: journal
+ paths: chassis state
+ properties: chassis powered
+ severity: ERR
+ message: Request shutdown of system. There are not enough functional fans.
+
+- name: create shutdown error
+ description: >
+ 'Create a Fan Shutdown Error log.'
+ class: callback
+ callback: elog
+ paths: chassis state
+ properties: chassis powered
+ error: xyz::openbmc_project::State::Shutdown::Inventory::Error::Fan
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml
new file mode 100644
index 000000000..65cfbeb25
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml
@@ -0,0 +1,905 @@
+# Witherspoon fan error policy for PDM.
+#
+# * Create a NotPresent error if fan 0, 1, 2, 3, 4, or 5 is not present for more
+# than 20 seconds.
+# * Create a Nonfunctional error if fan 0, 1, 2, 3, 4, or 5 is not
+# functional for any amount of time.
+#
+# The system must be powered on in both of these cases.
+# Note: An error is created each time the chassis powers on.
+#
+# * Watch for fans to become both present and functional, and then resolve
+# their errors
+
+- name: fan0
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+
+- name: fan1
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+
+- name: fan2
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+
+- name: fan3
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+
+- name: fan4
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
+
+- name: fan5
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
+
+
+- name: chassis state
+ description: >
+ 'Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSISSTATE
+ path: /xyz/openbmc_project/state/chassis0
+
+- name: chassis
+ description: >
+ 'Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSIS
+ path: /xyz/openbmc_project/inventory/system/chassis
+
+
+- name: fan present
+ description: >
+ 'Monitor the presence state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Item
+ meta: PRESENT
+ property: Present
+
+- name: fan functional
+ description: >
+ 'Monitor the functional state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+ meta: FUNCTIONAL
+ property: Functional
+
+- name: fan present and functional
+ description: >
+ 'Monitor the present and functional state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Item
+ meta: PRESENT
+ property: Present
+ - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+ meta: FUNCTIONAL
+ property: Functional
+
+- name: chassis powered
+ description: >
+ 'Monitor the chassis power state.'
+ class: group
+ group: property
+ type: string
+ members:
+ - interface: xyz.openbmc_project.State.Chassis
+ meta: CHASSIS_STATE
+ property: CurrentPowerState
+
+- name: chassis air cooled
+ description: >
+ 'The chassis cooling type.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
+ meta: COOLING_TYPE
+ property: WaterCooled
+
+- name: watch chassis state
+ description: >
+ 'Trigger logic on chassis power state changes.'
+ class: watch
+ watch: property
+ paths: chassis state
+ properties: chassis powered
+ callback: check power
+
+- name: watch fan0 presence
+ description: >
+ 'Trigger logic on fan0 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan present
+ callback: check power fan0 presence
+
+- name: watch fan0 functional
+ description: >
+ 'Trigger logic on fan0 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan functional
+ callback: check power fan0 functional
+
+- name: watch fan1 presence
+ description: >
+ 'Trigger logic on fan1 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan present
+ callback: check power fan1 presence
+
+- name: watch fan1 functional
+ description: >
+ 'Trigger logic on fan1 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan functional
+ callback: check power fan1 functional
+
+- name: watch fan2 presence
+ description: >
+ 'Trigger logic on fan2 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan present
+ callback: check power fan2 presence
+
+- name: watch fan2 functional
+ description: >
+ 'Trigger logic on fan2 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan functional
+ callback: check power fan2 functional
+
+- name: watch fan3 presence
+ description: >
+ 'Trigger logic on fan3 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan present
+ callback: check power fan3 presence
+
+- name: watch fan3 functional
+ description: >
+ 'Trigger logic on fan3 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan functional
+ callback: check power fan3 functional
+
+- name: watch fan4 presence
+ description: >
+ 'Trigger logic on fan4 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan4
+ properties: fan present
+ callback: check power fan4 presence
+
+- name: watch fan4 functional
+ description: >
+ 'Trigger logic on fan4 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan4
+ properties: fan functional
+ callback: check power fan4 functional
+
+- name: watch fan5 presence
+ description: >
+ 'Trigger logic on fan5 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan5
+ properties: fan present
+ callback: check power fan5 presence
+
+- name: watch fan5 functional
+ description: >
+ 'Trigger logic on fan5 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan5
+ properties: fan functional
+ callback: check power fan5 functional
+
+- name: watch fan0 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan present and functional
+ callback: resolve fan0 errors if present and functional
+
+- name: watch fan1 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan present and functional
+ callback: resolve fan1 errors if present and functional
+
+- name: watch fan2 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan present and functional
+ callback: resolve fan2 errors if present and functional
+
+- name: watch fan3 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan present and functional
+ callback: resolve fan3 errors if present and functional
+
+- name: watch fan4 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan4
+ properties: fan present and functional
+ callback: resolve fan4 errors if present and functional
+
+- name: watch fan5 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan5
+ properties: fan present and functional
+ callback: resolve fan5 errors if present and functional
+
+- name: check power
+ description: >
+ 'If the chassis has power, check all fans.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fans
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan0 presence
+ description: >
+ 'If the chassis has power, check presence of fan0.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan0 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan0 functional
+ description: >
+ 'If the chassis has power, check functional of fan0.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan0 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan1 presence
+ description: >
+ 'If the chassis has power, check presence of fan1.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan1 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan1 functional
+ description: >
+ 'If the chassis has power, check functional of fan1.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan1 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan2 presence
+ description: >
+ 'If the chassis has power, check presence of fan2.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan2 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan2 functional
+ description: >
+ 'If the chassis has power, check functional of fan2.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan2 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan3 presence
+ description: >
+ 'If the chassis has power, check presence of fan3.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan3 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan3 functional
+ description: >
+ 'If the chassis has power, check functional of fan3.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan3 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan4 presence
+ description: >
+ 'If the chassis has power, check presence of fan4.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan4 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan4 functional
+ description: >
+ 'If the chassis has power, check functional of fan4.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan4 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan5 presence
+ description: >
+ 'If the chassis has power, check presence of fan5.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan5 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan5 functional
+ description: >
+ 'If the chassis has power, check functional of fan5.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan5 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check fans
+ description: >
+ 'Verify each of the 12 fans are present.'
+ class: callback
+ callback: group
+ members:
+ - check fan0 presence
+ - check fan1 presence
+ - check fan2 presence
+ - check fan3 presence
+ - check fan4 presence
+ - check fan5 presence
+ - check fan0 functional
+ - check fan1 functional
+ - check fan2 functional
+ - check fan3 functional
+ - check fan4 functional
+ - check fan5 functional
+
+- name: check fan0 presence
+ description: >
+ 'If this condition passes fan0 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan0 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan0 functional
+ description: >
+ 'If this condition passes fan0 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan functional
+ callback: nonfunctional fan0 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan1 presence
+ description: >
+ 'If this condition passes fan1 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan1 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan1 functional
+ description: >
+ 'If this condition passes fan1 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan functional
+ callback: nonfunctional fan1 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan2 presence
+ description: >
+ 'If this condition passes fan2 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan2 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan2 functional
+ description: >
+ 'If this condition passes fan2 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan functional
+ callback: nonfunctional fan2 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan3 presence
+ description: >
+ 'If this condition passes fan3 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan3 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan3 functional
+ description: >
+ 'If this condition passes fan3 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan functional
+ callback: nonfunctional fan3 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan4 presence
+ description: >
+ 'If this condition passes fan4 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan4
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan4 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan4 functional
+ description: >
+ 'If this condition passes fan4 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan4
+ properties: fan functional
+ callback: nonfunctional fan4 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan5 presence
+ description: >
+ 'If this condition passes fan5 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan5
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan5 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan5 functional
+ description: >
+ 'If this condition passes fan5 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan5
+ properties: fan functional
+ callback: nonfunctional fan5 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: notpresent fan0 error
+ class: callback
+ callback: elog
+ paths: fan0
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+ type: string
+
+- name: nonfunctional fan0 error
+ class: callback
+ callback: elog
+ paths: fan0
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+ type: string
+
+- name: notpresent fan1 error
+ class: callback
+ callback: elog
+ paths: fan1
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+ type: string
+
+- name: nonfunctional fan1 error
+ class: callback
+ callback: elog
+ paths: fan1
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+ type: string
+
+- name: notpresent fan2 error
+ class: callback
+ callback: elog
+ paths: fan2
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+ type: string
+
+- name: nonfunctional fan2 error
+ class: callback
+ callback: elog
+ paths: fan2
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+ type: string
+
+- name: notpresent fan3 error
+ class: callback
+ callback: elog
+ paths: fan3
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+ type: string
+
+- name: nonfunctional fan3 error
+ class: callback
+ callback: elog
+ paths: fan3
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+ type: string
+
+- name: notpresent fan4 error
+ class: callback
+ callback: elog
+ paths: fan4
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
+ type: string
+
+- name: nonfunctional fan4 error
+ class: callback
+ callback: elog
+ paths: fan4
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
+ type: string
+
+- name: notpresent fan5 error
+ class: callback
+ callback: elog
+ paths: fan5
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
+ type: string
+
+- name: nonfunctional fan5 error
+ class: callback
+ callback: elog
+ paths: fan5
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
+ type: string
+
+- name: resolve fan0 errors if present and functional
+ description: >
+ 'If fan0 is present and functional, call the resolve fan0 errors callback.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan present and functional
+ callback: resolve fan0 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan1 errors if present and functional
+ description: >
+ 'If fan1 is present and functional, call the resolve fan1 errors callback.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan present and functional
+ callback: resolve fan1 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan2 errors if present and functional
+ description: >
+ 'If fan2 is present and functional, call the resolve fan2 errors callback.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan present and functional
+ callback: resolve fan2 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan3 errors if present and functional
+ description: >
+ 'If fan3 is present and functional, call the resolve fan3 errors callback.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan present and functional
+ callback: resolve fan3 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan4 errors if present and functional
+ description: >
+ 'If fan4 is present and functional, call the resolve fan4 errors callback.'
+ class: condition
+ condition: count
+ paths: fan4
+ properties: fan present and functional
+ callback: resolve fan4 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan5 errors if present and functional
+ description: >
+ 'If fan5 is present and functional, call the resolve fan5 errors callback.'
+ class: condition
+ condition: count
+ paths: fan5
+ properties: fan present and functional
+ callback: resolve fan5 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan0 errors
+ class: callback
+ callback: resolve callout
+ paths: fan0
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+
+- name: resolve fan1 errors
+ class: callback
+ callback: resolve callout
+ paths: fan1
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+
+- name: resolve fan2 errors
+ class: callback
+ callback: resolve callout
+ paths: fan2
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+
+- name: resolve fan3 errors
+ class: callback
+ callback: resolve callout
+ paths: fan3
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+
+- name: resolve fan4 errors
+ class: callback
+ callback: resolve callout
+ paths: fan4
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4
+
+- name: resolve fan5 errors
+ class: callback
+ callback: resolve callout
+ paths: fan5
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
index 185db1033..3a18960ea 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
@@ -2,3 +2,7 @@ PHOSPHOR_DBUS_MONITOR_CONFIGS_append_ibm-ac-server = " fan-policy"
PHOSPHOR_DBUS_MONITOR_CONFIGS_append_ibm-ac-server = " thermal-policy"
PHOSPHOR_DBUS_MONITOR_CONFIGS_append_ibm-ac-server = " power-supply-policy"
PHOSPHOR_DBUS_MONITOR_CONFIGS_append_ibm-ac-server = " events-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " fan-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " thermal-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " power-supply-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " events-policy"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend
index 8e1bf41fa..5c9d0b15c 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend
@@ -1 +1,2 @@
SYSTEMD_LINK_phosphor-msl-verify_append_ibm-ac-server = " ../phosphor-msl-verify.service:obmc-chassis-poweron@0.target.requires/phosphor-msl-verify.service"
+SYSTEMD_LINK_phosphor-msl-verify_append_mihawk = " ../phosphor-msl-verify.service:obmc-chassis-poweron@0.target.requires/phosphor-msl-verify.service"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb
index 9fb7d252b..5631ec493 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb
@@ -8,7 +8,7 @@ inherit phosphor-dbus-monitor
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
-SRC_URI += "file://thermal-policy.yaml"
+SRC_URI = "file://thermal-policy.yaml"
do_install() {
install -D ${WORKDIR}/thermal-policy.yaml ${D}${config_dir}/thermal-policy.yaml
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/thermal-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/ibm-ac-server/thermal-policy.yaml
index 7c48509c5..7c48509c5 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/thermal-policy.yaml
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/ibm-ac-server/thermal-policy.yaml
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml
new file mode 100644
index 000000000..f8e89b2ed
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml
@@ -0,0 +1,187 @@
+# Mihawk thermal policy for PDM.
+#
+# Shut down the system if more than three cores
+# have a temperature greater than 100 degrees Celcius.
+
+
+- name: core sensors
+ description: >
+ 'The machine has two processor chips with 24 cores each.'
+ class: group
+ group: path
+ members:
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core0_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core1_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core2_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core3_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core4_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core5_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core6_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core7_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core8_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core9_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core10_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core11_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core12_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core13_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core14_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core15_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core16_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core17_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core18_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core19_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core20_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core21_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core22_temp
+ - meta: SENSOR
+ path: /xyz/openbmc_project/sensors/temperature/p1_core23_temp
+
+- name: core temp
+ description: >
+ 'Monitor the temperature of each core.'
+ class: group
+ group: property
+ type: int64
+ members:
+ - interface: xyz.openbmc_project.Sensor.Value
+ meta: TEMP
+ property: Value
+
+- name: watch core temps
+ description: >
+ 'Trigger logic on core temp changes.'
+ class: watch
+ watch: property
+ paths: core sensors
+ properties: core temp
+ callback: check temps
+
+- name: check temps
+ description: >
+ 'If this condition passes at least three cores are running
+ too hot. Shut the system down.'
+ class: condition
+ condition: count
+ paths: core sensors
+ properties: core temp
+ callback: log and shutdown
+ countop: '>='
+ countbound: 3
+ op: '>='
+ bound: 115000
+ oneshot: true
+
+- name: log and shutdown
+ description: >
+ 'Shut the system down and log an event.'
+ class: callback
+ callback: group
+ members:
+ - shutdown
+ - create criticalhigh error
+ - create shutdown error
+
+- name: shutdown
+ description: >
+ 'Shut down the system.'
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-chassis-hard-poweroff@0.target
+ type: string
+ - value: replace
+ type: string
+
+- name: create criticalhigh error
+ description: >
+ 'Create a CriticalHigh Error log.'
+ class: callback
+ callback: elog_with_metadata
+ paths: core sensors
+ properties: core temp
+ error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh
+ metadata: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_DATA
+
+- name: create shutdown error
+ description: >
+ 'Create a SystemShutdown Error log.'
+ class: callback
+ callback: elog
+ paths: core sensors
+ properties: core temp
+ error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::Processor
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"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
index b2e466d76..f32ba3eb5 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
@@ -1,5 +1,5 @@
RDEPENDS_${PN}-inventory_append_ibm-ac-server = " openpower-fru-vpd openpower-occ-control phosphor-cooling-type virtual/obmc-gpio-presence"
-RDEPENDS_${PN}-inventory_append_mihawk = " openpower-fru-vpd openpower-occ-control virtual/obmc-gpio-presence id-button"
+RDEPENDS_${PN}-inventory_append_mihawk = " openpower-fru-vpd openpower-occ-control virtual/obmc-gpio-presence id-button phosphor-cooling-type"
RDEPENDS_${PN}-fan-control_append_ibm-ac-server = " witherspoon-fan-watchdog"
RDEPENDS_${PN}-extras_append_ibm-ac-server = " witherspoon-pfault-analysis witherspoon-power-supply-sync phosphor-webui"
RDEPENDS_${PN}-extras_append_mihawk = " phosphor-webui phosphor-image-signing"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@58.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@58.conf
new file mode 100644
index 000000000..61b4253bf
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@58.conf
@@ -0,0 +1,4 @@
+LABEL_in1="ps1_input_voltage"
+LABEL_in2="ps1_output_voltage"
+LABEL_curr1="ps1_output_current"
+LABEL_power1="ps1_input_power"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@5b.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@5b.conf
new file mode 100644
index 000000000..92838e1d0
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@100/power-supply@5b.conf
@@ -0,0 +1,4 @@
+LABEL_in1="ps0_input_voltage"
+LABEL_in2="ps0_output_voltage"
+LABEL_curr1="ps0_output_current"
+LABEL_power1="ps0_input_power"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@70.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@70.conf
new file mode 100644
index 000000000..3c25a4a01
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@70.conf
@@ -0,0 +1,11 @@
+LABEL_temp1 = "p0_vdd_temp"
+WARNHI_temp1 = "100000"
+WARNLO_temp1 = "0"
+CRITHI_temp1 = "105000"
+CRITLO_temp1 = "0"
+
+LABEL_temp2 = "p0_vcs_temp"
+WARNHI_temp2 = "100000"
+WARNLO_temp2 = "0"
+CRITHI_temp2 = "105000"
+CRITLO_temp2 = "0"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@72.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@72.conf
new file mode 100644
index 000000000..7f1f4d871
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@140/ir35221@72.conf
@@ -0,0 +1,5 @@
+LABEL_temp1 = "p0_vdn_temp"
+WARNHI_temp1 = "100000"
+WARNLO_temp1 = "0"
+CRITHI_temp1 = "105000"
+CRITLO_temp1 = "0"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@70.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@70.conf
new file mode 100644
index 000000000..5f0985d7c
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@70.conf
@@ -0,0 +1,11 @@
+LABEL_temp1 = "p1_vdd_temp"
+WARNHI_temp1 = "100000"
+WARNLO_temp1 = "0"
+CRITHI_temp1 = "105000"
+CRITLO_temp1 = "0"
+
+LABEL_temp2 = "p1_vcs_temp"
+WARNHI_temp2 = "100000"
+WARNLO_temp2 = "0"
+CRITHI_temp2 = "105000"
+CRITLO_temp2 = "0" \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@72.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@72.conf
new file mode 100644
index 000000000..438372837
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@180/ir35221@72.conf
@@ -0,0 +1,5 @@
+LABEL_temp1 = "p1_vdn_temp"
+WARNHI_temp1 = "100000"
+WARNLO_temp1 = "0"
+CRITHI_temp1 = "105000"
+CRITLO_temp1 = "0" \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/emc1403@4c.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/emc1403@4c.conf
new file mode 100644
index 000000000..7c7b24811
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/emc1403@4c.conf
@@ -0,0 +1,2 @@
+LABEL_temp2 = "ambient_temp"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@48.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@48.conf
new file mode 100644
index 000000000..4f89e7f34
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@48.conf
@@ -0,0 +1,2 @@
+LABEL_temp1 = "p1_pcie_temp"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@49.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@49.conf
new file mode 100644
index 000000000..959c66f9d
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@400/tmp275@49.conf
@@ -0,0 +1,2 @@
+LABEL_temp1 = "p0_pcie_temp"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/pca9545@70/i2c@3/tmp275@48.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/pca9545@70/i2c@3/tmp275@48.conf
new file mode 100644
index 000000000..82f065818
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/pca9545@70/i2c@3/tmp275@48.conf
@@ -0,0 +1,2 @@
+LABEL_temp1 = "M2_riser_temp"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf
new file mode 100644
index 000000000..5d14ebc94
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf
@@ -0,0 +1,25 @@
+LABEL_fan1 = "fan0_0"
+LABEL_fan2 = "fan0_1"
+LABEL_fan3 = "fan1_0"
+LABEL_fan4 = "fan1_1"
+LABEL_fan5 = "fan2_0"
+LABEL_fan6 = "fan2_1"
+LABEL_fan7 = "fan3_0"
+LABEL_fan8 = "fan3_1"
+LABEL_fan9 = "fan4_0"
+LABEL_fan10 = "fan4_1"
+LABEL_fan11 = "fan5_0"
+LABEL_fan12 = "fan5_1"
+
+PWM_TARGET_fan1 = "1"
+PWM_TARGET_fan2 = "1"
+PWM_TARGET_fan3 = "2"
+PWM_TARGET_fan4 = "2"
+PWM_TARGET_fan5 = "3"
+PWM_TARGET_fan6 = "3"
+PWM_TARGET_fan7 = "4"
+PWM_TARGET_fan8 = "4"
+PWM_TARGET_fan9 = "5"
+PWM_TARGET_fan10 = "5"
+PWM_TARGET_fan11 = "6"
+PWM_TARGET_fan12 = "6" \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf
new file mode 100644
index 000000000..f47b49a82
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf
@@ -0,0 +1,290 @@
+MODE_temp1 = "label"
+MODE_temp2 = "label"
+MODE_temp3 = "label"
+MODE_temp4 = "label"
+MODE_temp5 = "label"
+MODE_temp6 = "label"
+MODE_temp7 = "label"
+MODE_temp8 = "label"
+MODE_temp9 = "label"
+MODE_temp10 = "label"
+MODE_temp11 = "label"
+MODE_temp12 = "label"
+MODE_temp13 = "label"
+MODE_temp14 = "label"
+MODE_temp15 = "label"
+MODE_temp16 = "label"
+MODE_temp17 = "label"
+MODE_temp18 = "label"
+MODE_temp19 = "label"
+MODE_temp20 = "label"
+MODE_temp21 = "label"
+MODE_temp22 = "label"
+MODE_temp23 = "label"
+MODE_temp24 = "label"
+MODE_temp25 = "label"
+MODE_temp26 = "label"
+MODE_temp27 = "label"
+MODE_temp28 = "label"
+MODE_temp29 = "label"
+MODE_temp30 = "label"
+MODE_temp31 = "label"
+MODE_temp32 = "label"
+MODE_temp33 = "label"
+MODE_temp34 = "label"
+MODE_temp35 = "label"
+MODE_temp36 = "label"
+MODE_temp37 = "label"
+MODE_temp38 = "label"
+MODE_temp39 = "label"
+MODE_temp40 = "label"
+LABEL_temp17 = "p0_core0_temp"
+WARNHI_temp17 = "85000"
+WARNLO_temp17 = "0"
+CRITHI_temp17 = "90000"
+CRITLO_temp17 = "0"
+
+LABEL_temp20 = "p0_core1_temp"
+WARNHI_temp20 = "85000"
+WARNLO_temp20 = "0"
+CRITHI_temp20 = "90000"
+CRITLO_temp20 = "0"
+
+LABEL_temp23 = "p0_core2_temp"
+WARNHI_temp23 = "85000"
+WARNLO_temp23 = "0"
+CRITHI_temp23 = "90000"
+CRITLO_temp23 = "0"
+
+LABEL_temp26 = "p0_core3_temp"
+WARNHI_temp26 = "85000"
+WARNLO_temp26 = "0"
+CRITHI_temp26 = "90000"
+CRITLO_temp26 = "0"
+
+LABEL_temp29 = "p0_core4_temp"
+WARNHI_temp29 = "85000"
+WARNLO_temp29 = "0"
+CRITHI_temp29 = "90000"
+CRITLO_temp29 = "0"
+
+LABEL_temp32 = "p0_core5_temp"
+WARNHI_temp32 = "85000"
+WARNLO_temp32 = "0"
+CRITHI_temp32 = "90000"
+CRITLO_temp32 = "0"
+
+LABEL_temp35 = "p0_core6_temp"
+WARNHI_temp35 = "85000"
+WARNLO_temp35 = "0"
+CRITHI_temp35 = "90000"
+CRITLO_temp35 = "0"
+
+LABEL_temp38 = "p0_core7_temp"
+WARNHI_temp38 = "85000"
+WARNLO_temp38 = "0"
+CRITHI_temp38 = "90000"
+CRITLO_temp38 = "0"
+
+LABEL_temp41 = "p0_core8_temp"
+WARNHI_temp41 = "85000"
+WARNLO_temp41 = "0"
+CRITHI_temp41 = "90000"
+CRITLO_temp41 = "0"
+
+LABEL_temp44 = "p0_core9_temp"
+WARNHI_temp44 = "85000"
+WARNLO_temp44 = "0"
+CRITHI_temp44 = "90000"
+CRITLO_temp44 = "0"
+
+LABEL_temp47 = "p0_core10_temp"
+WARNHI_temp47 = "85000"
+WARNLO_temp47 = "0"
+CRITHI_temp47 = "90000"
+CRITLO_temp47 = "0"
+
+LABEL_temp50 = "p0_core11_temp"
+WARNHI_temp50 = "85000"
+WARNLO_temp50 = "0"
+CRITHI_temp50 = "90000"
+CRITLO_temp50 = "0"
+
+LABEL_temp53 = "p0_core12_temp"
+WARNHI_temp53 = "85000"
+WARNLO_temp53 = "0"
+CRITHI_temp53 = "90000"
+CRITLO_temp53 = "0"
+
+LABEL_temp56 = "p0_core13_temp"
+WARNHI_temp56 = "85000"
+WARNLO_temp56 = "0"
+CRITHI_temp56 = "90000"
+CRITLO_temp56 = "0"
+
+LABEL_temp59 = "p0_core14_temp"
+WARNHI_temp59 = "85000"
+WARNLO_temp59 = "0"
+CRITHI_temp59 = "90000"
+CRITLO_temp59 = "0"
+
+LABEL_temp62 = "p0_core15_temp"
+WARNHI_temp62 = "85000"
+WARNLO_temp62 = "0"
+CRITHI_temp62 = "90000"
+CRITLO_temp62 = "0"
+
+LABEL_temp65 = "p0_core16_temp"
+WARNHI_temp65 = "85000"
+WARNLO_temp65 = "0"
+CRITHI_temp65 = "90000"
+CRITLO_temp65 = "0"
+
+LABEL_temp68 = "p0_core17_temp"
+WARNHI_temp68 = "85000"
+WARNLO_temp68 = "0"
+CRITHI_temp68 = "90000"
+CRITLO_temp68 = "0"
+
+LABEL_temp71 = "p0_core18_temp"
+WARNHI_temp71 = "85000"
+WARNLO_temp71 = "0"
+CRITHI_temp71 = "90000"
+CRITLO_temp71 = "0"
+
+LABEL_temp74 = "p0_core19_temp"
+WARNHI_temp74 = "85000"
+WARNLO_temp74 = "0"
+CRITHI_temp74 = "90000"
+CRITLO_temp74 = "0"
+
+LABEL_temp77 = "p0_core20_temp"
+WARNHI_temp77 = "85000"
+WARNLO_temp77 = "0"
+CRITHI_temp77 = "90000"
+CRITLO_temp77 = "0"
+
+LABEL_temp80 = "p0_core21_temp"
+WARNHI_temp80 = "85000"
+WARNLO_temp80 = "0"
+CRITHI_temp80 = "90000"
+CRITLO_temp80 = "0"
+
+LABEL_temp83 = "p0_core22_temp"
+WARNHI_temp83 = "85000"
+WARNLO_temp83 = "0"
+CRITHI_temp83 = "90000"
+CRITLO_temp83 = "0"
+
+LABEL_temp86 = "p0_core23_temp"
+WARNHI_temp86 = "85000"
+WARNLO_temp86 = "0"
+CRITHI_temp86 = "90000"
+CRITLO_temp86 = "0"
+
+LABEL_temp165 = "dimm0_temp"
+WARNHI_temp165 = "85000"
+WARNLO_temp165 = "0"
+CRITHI_temp165 = "95000"
+CRITLO_temp165 = "0"
+
+LABEL_temp167 = "dimm1_temp"
+WARNHI_temp167 = "85000"
+WARNLO_temp167 = "0"
+CRITHI_temp167 = "95000"
+CRITLO_temp167 = "0"
+
+LABEL_temp169 = "dimm2_temp"
+WARNHI_temp169 = "85000"
+WARNLO_temp169 = "0"
+CRITHI_temp169 = "95000"
+CRITLO_temp169 = "0"
+
+LABEL_temp171 = "dimm3_temp"
+WARNHI_temp171 = "85000"
+WARNLO_temp171 = "0"
+CRITHI_temp171 = "95000"
+CRITLO_temp171 = "0"
+
+LABEL_temp173 = "dimm4_temp"
+WARNHI_temp173 = "85000"
+WARNLO_temp173 = "0"
+CRITHI_temp173 = "95000"
+CRITLO_temp173 = "0"
+
+LABEL_temp175 = "dimm5_temp"
+WARNHI_temp175 = "85000"
+WARNLO_temp175 = "0"
+CRITHI_temp175 = "95000"
+CRITLO_temp175 = "0"
+
+LABEL_temp177 = "dimm6_temp"
+WARNHI_temp177 = "85000"
+WARNLO_temp177 = "0"
+CRITHI_temp177 = "95000"
+CRITLO_temp177 = "0"
+
+LABEL_temp179 = "dimm7_temp"
+WARNHI_temp179 = "85000"
+WARNLO_temp179 = "0"
+CRITHI_temp179 = "95000"
+CRITLO_temp179 = "0"
+
+LABEL_temp197 = "dimm16_temp"
+WARNHI_temp197 = "85000"
+WARNLO_temp197 = "0"
+CRITHI_temp197 = "95000"
+CRITLO_temp197 = "0"
+
+LABEL_temp199 = "dimm17_temp"
+WARNHI_temp199 = "85000"
+WARNLO_temp199 = "0"
+CRITHI_temp199 = "95000"
+CRITLO_temp199 = "0"
+
+LABEL_temp201 = "dimm18_temp"
+WARNHI_temp201 = "85000"
+WARNLO_temp201 = "0"
+CRITHI_temp201 = "95000"
+CRITLO_temp201 = "0"
+
+LABEL_temp203 = "dimm19_temp"
+WARNHI_temp203 = "85000"
+WARNLO_temp203 = "0"
+CRITHI_temp203 = "95000"
+CRITLO_temp203 = "0"
+
+LABEL_temp205 = "dimm20_temp"
+WARNHI_temp205 = "85000"
+WARNLO_temp205 = "0"
+CRITHI_temp205 = "95000"
+CRITLO_temp205 = "0"
+
+LABEL_temp207 = "dimm21_temp"
+WARNHI_temp207 = "85000"
+WARNLO_temp207 = "0"
+CRITHI_temp207 = "95000"
+CRITLO_temp207 = "0"
+
+LABEL_temp209 = "dimm22_temp"
+WARNHI_temp209 = "85000"
+WARNLO_temp209 = "0"
+CRITHI_temp209 = "95000"
+CRITLO_temp209 = "0"
+
+LABEL_temp211 = "dimm23_temp"
+WARNHI_temp211 = "85000"
+WARNLO_temp211 = "0"
+CRITHI_temp211 = "95000"
+CRITLO_temp211 = "0"
+
+LABEL_power2 = "io_b_power"
+LABEL_power3 = "io_a_power"
+LABEL_power4 = "p1_mem_power"
+LABEL_power5 = "p1_vdd_power"
+LABEL_power6 = "p0_mem_power"
+LABEL_power7 = "p0_vdd_power"
+LABEL_power8 = "fans_power"
+LABEL_power9 = "storage_b_power"
+LABEL_power10 = "storage_a_power"
+LABEL_power11 = "gpu0_power"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf
new file mode 100644
index 000000000..ba53cd95d
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf
@@ -0,0 +1,280 @@
+MODE_temp1 = "label"
+MODE_temp2 = "label"
+MODE_temp3 = "label"
+MODE_temp4 = "label"
+MODE_temp5 = "label"
+MODE_temp6 = "label"
+MODE_temp7 = "label"
+MODE_temp8 = "label"
+MODE_temp9 = "label"
+MODE_temp10 = "label"
+MODE_temp11 = "label"
+MODE_temp12 = "label"
+MODE_temp13 = "label"
+MODE_temp14 = "label"
+MODE_temp15 = "label"
+MODE_temp16 = "label"
+MODE_temp17 = "label"
+MODE_temp18 = "label"
+MODE_temp19 = "label"
+MODE_temp20 = "label"
+MODE_temp21 = "label"
+MODE_temp22 = "label"
+MODE_temp23 = "label"
+MODE_temp24 = "label"
+MODE_temp25 = "label"
+MODE_temp26 = "label"
+MODE_temp27 = "label"
+MODE_temp28 = "label"
+MODE_temp29 = "label"
+MODE_temp30 = "label"
+MODE_temp31 = "label"
+MODE_temp32 = "label"
+MODE_temp33 = "label"
+MODE_temp34 = "label"
+MODE_temp35 = "label"
+MODE_temp36 = "label"
+MODE_temp37 = "label"
+MODE_temp38 = "label"
+MODE_temp39 = "label"
+MODE_temp40 = "label"
+LABEL_temp91 = "p1_core0_temp"
+WARNHI_temp91 = "85000"
+WARNLO_temp91 = "0"
+CRITHI_temp91 = "90000"
+CRITLO_temp91 = "0"
+
+LABEL_temp94 = "p1_core1_temp"
+WARNHI_temp94 = "85000"
+WARNLO_temp94 = "0"
+CRITHI_temp94 = "90000"
+CRITLO_temp94 = "0"
+
+LABEL_temp97 = "p1_core2_temp"
+WARNHI_temp97 = "85000"
+WARNLO_temp97 = "0"
+CRITHI_temp97 = "90000"
+CRITLO_temp97 = "0"
+
+LABEL_temp100 = "p1_core3_temp"
+WARNHI_temp100 = "85000"
+WARNLO_temp100 = "0"
+CRITHI_temp100 = "90000"
+CRITLO_temp100 = "0"
+
+LABEL_temp103 = "p1_core4_temp"
+WARNHI_temp103 = "85000"
+WARNLO_temp103 = "0"
+CRITHI_temp103 = "90000"
+CRITLO_temp103 = "0"
+
+LABEL_temp106 = "p1_core5_temp"
+WARNHI_temp106 = "85000"
+WARNLO_temp106 = "0"
+CRITHI_temp106 = "90000"
+CRITLO_temp106 = "0"
+
+LABEL_temp109 = "p1_core6_temp"
+WARNHI_temp109 = "85000"
+WARNLO_temp109 = "0"
+CRITHI_temp109 = "90000"
+CRITLO_temp109 = "0"
+
+LABEL_temp112 = "p1_core7_temp"
+WARNHI_temp112 = "85000"
+WARNLO_temp112 = "0"
+CRITHI_temp112 = "90000"
+CRITLO_temp112 = "0"
+
+LABEL_temp115 = "p1_core8_temp"
+WARNHI_temp115 = "85000"
+WARNLO_temp115 = "0"
+CRITHI_temp115 = "90000"
+CRITLO_temp115 = "0"
+
+LABEL_temp118 = "p1_core9_temp"
+WARNHI_temp118 = "85000"
+WARNLO_temp118 = "0"
+CRITHI_temp118 = "90000"
+CRITLO_temp118 = "0"
+
+LABEL_temp121 = "p1_core10_temp"
+WARNHI_temp121 = "85000"
+WARNLO_temp121 = "0"
+CRITHI_temp121 = "90000"
+CRITLO_temp121 = "0"
+
+LABEL_temp124 = "p1_core11_temp"
+WARNHI_temp124 = "85000"
+WARNLO_temp124 = "0"
+CRITHI_temp124 = "90000"
+CRITLO_temp124 = "0"
+
+LABEL_temp127 = "p1_core12_temp"
+WARNHI_temp127 = "85000"
+WARNLO_temp127 = "0"
+CRITHI_temp127 = "90000"
+CRITLO_temp127 = "0"
+
+LABEL_temp130 = "p1_core13_temp"
+WARNHI_temp130 = "85000"
+WARNLO_temp130 = "0"
+CRITHI_temp130 = "90000"
+CRITLO_temp130 = "0"
+
+LABEL_temp133 = "p1_core14_temp"
+WARNHI_temp133 = "85000"
+WARNLO_temp133 = "0"
+CRITHI_temp133 = "90000"
+CRITLO_temp133 = "0"
+
+LABEL_temp136 = "p1_core15_temp"
+WARNHI_temp136 = "85000"
+WARNLO_temp136 = "0"
+CRITHI_temp136 = "90000"
+CRITLO_temp136 = "0"
+
+LABEL_temp139 = "p1_core16_temp"
+WARNHI_temp139 = "85000"
+WARNLO_temp139 = "0"
+CRITHI_temp139 = "90000"
+CRITLO_temp139 = "0"
+
+LABEL_temp142 = "p1_core17_temp"
+WARNHI_temp142 = "85000"
+WARNLO_temp142 = "0"
+CRITHI_temp142 = "90000"
+CRITLO_temp142 = "0"
+
+LABEL_temp145 = "p1_core18_temp"
+WARNHI_temp145 = "85000"
+WARNLO_temp145 = "0"
+CRITHI_temp145 = "90000"
+CRITLO_temp145 = "0"
+
+LABEL_temp148 = "p1_core19_temp"
+WARNHI_temp148 = "85000"
+WARNLO_temp148 = "0"
+CRITHI_temp148 = "90000"
+CRITLO_temp148 = "0"
+
+LABEL_temp151 = "p1_core20_temp"
+WARNHI_temp151 = "85000"
+WARNLO_temp151 = "0"
+CRITHI_temp151 = "90000"
+CRITLO_temp151 = "0"
+
+LABEL_temp154 = "p1_core21_temp"
+WARNHI_temp154 = "85000"
+WARNLO_temp154 = "0"
+CRITHI_temp154 = "90000"
+CRITLO_temp154 = "0"
+
+LABEL_temp157 = "p1_core22_temp"
+WARNHI_temp157 = "85000"
+WARNLO_temp157 = "0"
+CRITHI_temp157 = "90000"
+CRITLO_temp157 = "0"
+
+LABEL_temp160 = "p1_core23_temp"
+WARNHI_temp160 = "85000"
+WARNLO_temp160 = "0"
+CRITHI_temp160 = "90000"
+CRITLO_temp160 = "0"
+
+LABEL_temp181 = "dimm8_temp"
+WARNHI_temp181 = "85000"
+WARNLO_temp181 = "0"
+CRITHI_temp181 = "95000"
+CRITLO_temp181 = "0"
+
+LABEL_temp183 = "dimm9_temp"
+WARNHI_temp183 = "85000"
+WARNLO_temp183 = "0"
+CRITHI_temp183 = "95000"
+CRITLO_temp183 = "0"
+
+LABEL_temp185 = "dimm10_temp"
+WARNHI_temp185 = "85000"
+WARNLO_temp185 = "0"
+CRITHI_temp185 = "95000"
+CRITLO_temp185 = "0"
+
+LABEL_temp187 = "dimm11_temp"
+WARNHI_temp187 = "85000"
+WARNLO_temp187 = "0"
+CRITHI_temp187 = "95000"
+CRITLO_temp187 = "0"
+
+LABEL_temp189 = "dimm12_temp"
+WARNHI_temp189 = "85000"
+WARNLO_temp189 = "0"
+CRITHI_temp189 = "95000"
+CRITLO_temp189 = "0"
+
+LABEL_temp191 = "dimm13_temp"
+WARNHI_temp191 = "85000"
+WARNLO_temp191 = "0"
+CRITHI_temp191 = "95000"
+CRITLO_temp191 = "0"
+
+LABEL_temp193 = "dimm14_temp"
+WARNHI_temp193 = "85000"
+WARNLO_temp193 = "0"
+CRITHI_temp193 = "95000"
+CRITLO_temp193 = "0"
+
+LABEL_temp195 = "dimm15_temp"
+WARNHI_temp195 = "85000"
+WARNLO_temp195 = "0"
+CRITHI_temp195 = "95000"
+CRITLO_temp195 = "0"
+
+LABEL_temp213 = "dimm24_temp"
+WARNHI_temp213 = "85000"
+WARNLO_temp213 = "0"
+CRITHI_temp213 = "95000"
+CRITLO_temp213 = "0"
+
+LABEL_temp215 = "dimm25_temp"
+WARNHI_temp215 = "85000"
+WARNLO_temp215 = "0"
+CRITHI_temp215 = "95000"
+CRITLO_temp215 = "0"
+
+LABEL_temp217 = "dimm26_temp"
+WARNHI_temp217 = "85000"
+WARNLO_temp217 = "0"
+CRITHI_temp217 = "95000"
+CRITLO_temp217 = "0"
+
+LABEL_temp219 = "dimm27_temp"
+WARNHI_temp219 = "85000"
+WARNLO_temp219 = "0"
+CRITHI_temp219 = "95000"
+CRITLO_temp219 = "0"
+
+LABEL_temp221 = "dimm28_temp"
+WARNHI_temp221 = "85000"
+WARNLO_temp221 = "0"
+CRITHI_temp221 = "95000"
+CRITLO_temp221 = "0"
+
+LABEL_temp223 = "dimm29_temp"
+WARNHI_temp223 = "85000"
+WARNLO_temp223 = "0"
+CRITHI_temp223 = "95000"
+CRITLO_temp223 = "0"
+
+LABEL_temp225 = "dimm30_temp"
+WARNHI_temp225 = "85000"
+WARNLO_temp225 = "0"
+CRITHI_temp225 = "95000"
+CRITLO_temp225 = "0"
+
+LABEL_temp227 = "dimm31_temp"
+WARNHI_temp227 = "85000"
+WARNLO_temp227 = "0"
+CRITHI_temp227 = "95000"
+CRITLO_temp227 = "0"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-12v.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-12v.conf
new file mode 100644
index 000000000..81d3aa519
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-12v.conf
@@ -0,0 +1,2 @@
+LABEL_in1=12V
+GAIN_in1=7.5 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-3v.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-3v.conf
new file mode 100644
index 000000000..d7e4a92e8
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-3v.conf
@@ -0,0 +1,2 @@
+LABEL_in1=3V
+GAIN_in1=3 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-5v.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-5v.conf
new file mode 100644
index 000000000..b9ea49ef0
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-5v.conf
@@ -0,0 +1,2 @@
+LABEL_in1=5V
+GAIN_in1=3 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-battery.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-battery.conf
new file mode 100644
index 000000000..6f7341cd5
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-battery.conf
@@ -0,0 +1,9 @@
+LABEL_in1=vbat
+GAIN_in1=2.368
+
+# GPIOR3 needs to be pulled high for battery voltage reading
+GPIOCHIP_in1=0
+GPIO_in1=139
+
+# Read it every day so it does not impact battery life
+INTERVAL=86400000000 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs0.conf
new file mode 100644
index 000000000..4b8261f40
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs0.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vcs0
+GAIN_in1=1
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs1.conf
new file mode 100644
index 000000000..02732c677
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vcs1.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vcs1
+GAIN_in1=1 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd0.conf
new file mode 100644
index 000000000..f91914057
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd0.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vdd0
+GAIN_in1=1
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd1.conf
new file mode 100644
index 000000000..fe188856b
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdd1.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vdd1
+GAIN_in1=1 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddra.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddra.conf
new file mode 100644
index 000000000..3a11fd246
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddra.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vddra
+GAIN_in1=1
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrb.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrb.conf
new file mode 100644
index 000000000..e9811cb1e
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrb.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vddrb
+GAIN_in1=1 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrc.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrc.conf
new file mode 100644
index 000000000..1753d93a5
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrc.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vddrc
+GAIN_in1=1
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrd.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrd.conf
new file mode 100644
index 000000000..8fbfcd330
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vddrd.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vddrd
+GAIN_in1=1 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn0.conf
new file mode 100644
index 000000000..afe6fcead
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn0.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vdn0
+GAIN_in1=1
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn1.conf
new file mode 100644
index 000000000..5141b2969
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vdn1.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vdn1
+GAIN_in1=1 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio0.conf
new file mode 100644
index 000000000..bf8e352e5
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio0.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vio0
+GAIN_in1=1
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio1.conf
new file mode 100644
index 000000000..d81958530
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon/mihawk/obmc/hwmon/iio-hwmon-vio1.conf
@@ -0,0 +1,2 @@
+LABEL_in1=vio1
+GAIN_in1=1 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
index d9d606bd2..420c0e049 100644
--- a/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
@@ -34,9 +34,38 @@ CHIPS_append_swift = " \
bus@1e78a000/i2c-bus@3c0/ir35221@71 \
bus@1e78a000/i2c-bus@3c0/ir35221@72 \
"
+CHIPS_mihawk = " \
+ bus@1e78a000/i2c-bus@100/power-supply@58 \
+ bus@1e78a000/i2c-bus@100/power-supply@5b \
+ bus@1e78a000/i2c-bus@140/ir35221@70 \
+ bus@1e78a000/i2c-bus@140/ir35221@72 \
+ bus@1e78a000/i2c-bus@180/ir35221@70 \
+ bus@1e78a000/i2c-bus@180/ir35221@72 \
+ bus@1e78a000/i2c-bus@400/tmp275@48 \
+ bus@1e78a000/i2c-bus@400/tmp275@49 \
+ pwm-tacho-controller@1e786000 \
+ bus@1e78a000/i2c-bus@400/emc1403@4c \
+ bus@1e78a000/i2c-bus@440/pca9545@70/i2c@3/tmp275@48 \
+ "
ITEMSFMT = "ahb/apb/{0}.conf"
ITEMS = "${@compose_list(d, 'ITEMSFMT', 'CHIPS')}"
+ITEMS_append_mihawk += " iio-hwmon-vdd0.conf"
+ITEMS_append_mihawk += " iio-hwmon-vdd1.conf"
+ITEMS_append_mihawk += " iio-hwmon-vcs0.conf"
+ITEMS_append_mihawk += " iio-hwmon-vcs1.conf"
+ITEMS_append_mihawk += " iio-hwmon-vdn0.conf"
+ITEMS_append_mihawk += " iio-hwmon-vdn1.conf"
+ITEMS_append_mihawk += " iio-hwmon-vio0.conf"
+ITEMS_append_mihawk += " iio-hwmon-vio1.conf"
+ITEMS_append_mihawk += " iio-hwmon-vddra.conf"
+ITEMS_append_mihawk += " iio-hwmon-vddrb.conf"
+ITEMS_append_mihawk += " iio-hwmon-vddrc.conf"
+ITEMS_append_mihawk += " iio-hwmon-vddrd.conf"
+ITEMS_append_mihawk += " iio-hwmon-12v.conf"
+ITEMS_append_mihawk += " iio-hwmon-5v.conf"
+ITEMS_append_mihawk += " iio-hwmon-3v.conf"
+ITEMS_append_mihawk += " iio-hwmon-battery.conf"
OCCS = " \
00--00--00--06/sbefifo1-dev0/occ-hwmon.1 \
@@ -48,6 +77,8 @@ OCCITEMS = "${@compose_list(d, 'OCCSFMT', 'OCCS')}"
ENVS = "obmc/hwmon/{0}"
SYSTEMD_ENVIRONMENT_FILE_${PN}_append_ibm-ac-server = " ${@compose_list(d, 'ENVS', 'ITEMS')}"
SYSTEMD_ENVIRONMENT_FILE_${PN}_append_ibm-ac-server = " ${@compose_list(d, 'ENVS', 'OCCITEMS')}"
+SYSTEMD_ENVIRONMENT_FILE_${PN}_append_mihawk = " ${@compose_list(d, 'ENVS', 'ITEMS')}"
+SYSTEMD_ENVIRONMENT_FILE_${PN}_append_mihawk = " ${@compose_list(d, 'ENVS', 'OCCITEMS')}"
SYSTEMD_ENVIRONMENT_FILE_max31785-msl_append_ibm-ac-server = " obmc/hwmon-max31785/max31785.conf"
SYSTEMD_LINK_max31785-msl_append_ibm-ac-server = " ../phosphor-max31785-msl@.service:multi-user.target.wants/phosphor-max31785-msl@${MACHINE}.service"