meta-facebook: yosemite4: Set the fan LED to amber or blue
Set the fan led to amber when the fan tach triggers critical threshold.
Test Plan:
Modify the threshold and check if the led is correct.
Change-Id: I1ad360c15b2e4ff9c47d6e0bbc81e3a30ab1cd23
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
diff --git a/meta-facebook/meta-yosemite4/conf/machine/yosemite4.conf b/meta-facebook/meta-yosemite4/conf/machine/yosemite4.conf
index 635c278..802a164 100644
--- a/meta-facebook/meta-yosemite4/conf/machine/yosemite4.conf
+++ b/meta-facebook/meta-yosemite4/conf/machine/yosemite4.conf
@@ -26,3 +26,5 @@
VIRTUAL-RUNTIME_obmc-host-state-manager = "phosphor-state-manager-host"
VIRTUAL-RUNTIME_obmc-chassis-state-manager = "phosphor-state-manager-chassis"
+
+PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "yosemite4-led-manager-config-native"
\ No newline at end of file
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led.bb b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led.bb
new file mode 100644
index 0000000..0758813
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Fan fault led configurations for meta-yosemite4 machines"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit allarch
+inherit phosphor-dbus-monitor
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI:append = " \
+ file://board-0-fan-0.yaml \
+ file://board-0-fan-1.yaml \
+ file://board-0-fan-4.yaml \
+ file://board-0-fan-5.yaml \
+ file://board-0-fan-8.yaml \
+ file://board-0-fan-9.yaml \
+ file://board-1-fan-10.yaml \
+ file://board-1-fan-11.yaml \
+ file://board-1-fan-2.yaml \
+ file://board-1-fan-3.yaml \
+ file://board-1-fan-6.yaml \
+ file://board-1-fan-7.yaml \
+"
+
+do_install() {
+ install -D ${WORKDIR}/board-0-fan-0.yaml ${D}${config_dir}/board-0-fan-0.yaml
+ install -D ${WORKDIR}/board-0-fan-1.yaml ${D}${config_dir}/board-0-fan-1.yaml
+ install -D ${WORKDIR}/board-0-fan-4.yaml ${D}${config_dir}/board-0-fan-4.yaml
+ install -D ${WORKDIR}/board-0-fan-5.yaml ${D}${config_dir}/board-0-fan-5.yaml
+ install -D ${WORKDIR}/board-0-fan-8.yaml ${D}${config_dir}/board-0-fan-8.yaml
+ install -D ${WORKDIR}/board-0-fan-9.yaml ${D}${config_dir}/board-0-fan-9.yaml
+ install -D ${WORKDIR}/board-1-fan-10.yaml ${D}${config_dir}/board-1-fan-10.yaml
+ install -D ${WORKDIR}/board-1-fan-11.yaml ${D}${config_dir}/board-1-fan-11.yaml
+ install -D ${WORKDIR}/board-1-fan-2.yaml ${D}${config_dir}/board-1-fan-2.yaml
+ install -D ${WORKDIR}/board-1-fan-3.yaml ${D}${config_dir}/board-1-fan-3.yaml
+ install -D ${WORKDIR}/board-1-fan-6.yaml ${D}${config_dir}/board-1-fan-6.yaml
+ install -D ${WORKDIR}/board-1-fan-7.yaml ${D}${config_dir}/board-1-fan-7.yaml
+}
+
+FILES:${PN}:append = " \
+ ${config_dir}/board-0-fan-0.yaml \
+ ${config_dir}/board-0-fan-1.yaml \
+ ${config_dir}/board-0-fan-4.yaml \
+ ${config_dir}/board-0-fan-5.yaml \
+ ${config_dir}/board-0-fan-8.yaml \
+ ${config_dir}/board-0-fan-9.yaml \
+ ${config_dir}/board-1-fan-10.yaml \
+ ${config_dir}/board-1-fan-11.yaml \
+ ${config_dir}/board-1-fan-2.yaml \
+ ${config_dir}/board-1-fan-3.yaml \
+ ${config_dir}/board-1-fan-6.yaml \
+ ${config_dir}/board-1-fan-7.yaml \
+"
+
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-0.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-0.yaml
new file mode 100644
index 0000000..f961fbe
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-0.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 0 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN0_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN0_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 0 fan 0 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 0 fan 0 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 0 fan 0 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 0 fan 0 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 0 fan 0 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 0 fan 0 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan0_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan0_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan0_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan0_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-1.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-1.yaml
new file mode 100644
index 0000000..7e2fbf6
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-1.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 1 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN1_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN1_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 0 fan 1 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 0 fan 1 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 0 fan 1 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 0 fan 1 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 0 fan 1 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 0 fan 1 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan1_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan1_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan1_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan1_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-4.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-4.yaml
new file mode 100644
index 0000000..f6f2264
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-4.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 4 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN4_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN4_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 0 fan 4 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 0 fan 4 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 0 fan 4 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 0 fan 4 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 0 fan 4 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 0 fan 4 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan4_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan4_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan4_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan4_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-5.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-5.yaml
new file mode 100644
index 0000000..db21ec8
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-5.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 5 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN5_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN5_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 0 fan 5 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 0 fan 5 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 0 fan 5 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 0 fan 5 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 0 fan 5 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 0 fan 5 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan5_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan5_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan5_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan5_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-8.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-8.yaml
new file mode 100644
index 0000000..92df2de
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-8.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 8 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN8_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN8_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 0 fan 8 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 0 fan 8 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 0 fan 8 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 0 fan 8 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 0 fan 8 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 0 fan 8 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan8_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan8_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan8_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan8_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml
new file mode 100644
index 0000000..cdf6e69
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 9 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN9_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN9_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 0 fan 9 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 0 fan 9 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 0 fan 9 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 0 fan 9 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 0 fan 9 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 0 fan 9 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan9_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan9_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan9_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan9_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-10.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-10.yaml
new file mode 100644
index 0000000..4658559
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-10.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 10 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN10_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN10_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 1 fan 10 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 1 fan 10 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 1 fan 10 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 1 fan 10 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 1 fan 10 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 1 fan 10 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan10_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan10_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan10_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan10_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-11.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-11.yaml
new file mode 100644
index 0000000..1503292
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-11.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 11 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN11_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN11_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 1 fan 11 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 1 fan 11 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 1 fan 11 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 1 fan 11 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 1 fan 11 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 1 fan 11 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan11_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan11_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan11_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan11_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-2.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-2.yaml
new file mode 100644
index 0000000..639583c
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-2.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 2 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN2_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN2_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 1 fan 2 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 1 fan 2 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 1 fan 2 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 1 fan 2 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 1 fan 2 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 1 fan 2 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan2_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan2_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan2_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan2_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-3.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-3.yaml
new file mode 100644
index 0000000..15263b8
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-3.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 3 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN3_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN3_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 1 fan 3 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 1 fan 3 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 1 fan 3 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 1 fan 3 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 1 fan 3 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 1 fan 3 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan3_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan3_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan3_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan3_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-6.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-6.yaml
new file mode 100644
index 0000000..7e849a8
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-6.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 6 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN6_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN6_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 1 fan 6 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 1 fan 6 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 1 fan 6 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 1 fan 6 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 1 fan 6 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 1 fan 6 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan6_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan6_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan6_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan6_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-7.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-7.yaml
new file mode 100644
index 0000000..01ea532
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-7.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 7 current critical alarm path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN7_TACH_IL
+ - meta: PATH
+ path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN7_TACH_OL
+
+- name: current fan critical alarm property
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmHigh
+ - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+ meta: PROPERTY
+ property: CriticalAlarmLow
+
+- name: board 1 fan 7 critical alarm assert
+ class: watch
+ watch: property
+ paths: board 1 fan 7 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold assert
+
+- name: board 1 fan 7 critical alarm deassert
+ class: watch
+ watch: property
+ paths: board 1 fan 7 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+ class: condition
+ condition: count
+ paths: board 1 fan 7 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan fail
+ countop: ">="
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: check if fan critical threshold deassert
+ class: condition
+ condition: count
+ paths: board 1 fan 7 current critical alarm path group
+ properties: current fan critical alarm property
+ callback: set fan ok
+ countop: "<"
+ countbound: 1
+ op: "=="
+ bound: true
+
+- name: set fan ok group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan7_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan7_ok.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group assert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-start@fan7_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan fail group deassert
+ class: callback
+ callback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: obmc-led-group-stop@fan7_fail.service
+ type: string
+ - value: replace
+ type: string
+
+- name: set fan ok
+ class: callback
+ callback: group
+ members:
+ - set fan ok group assert
+ - set fan fail group deassert
+
+- name: set fan fail
+ class: callback
+ callback: group
+ members:
+ - set fan fail group assert
+ - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
index 34c8160..4b93a9f 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
@@ -1 +1,2 @@
-PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " "
+PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " power-saving-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " fan-fault-led"
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/images/fb-yosemite4-phosphor-image.inc b/meta-facebook/meta-yosemite4/recipes-phosphor/images/fb-yosemite4-phosphor-image.inc
index 81f687e..2b5727e 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/images/fb-yosemite4-phosphor-image.inc
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/images/fb-yosemite4-phosphor-image.inc
@@ -3,9 +3,6 @@
# If multi-user.target doesn't complete,
# the obmc-host-startmin@.target couldn't start.
# In that case, BMC couldn't set current host state to "Running".
-IMAGE_FEATURES:remove = " \
- obmc-leds \
-"
# Temporarily add libusb1 to allow side-loading of a BIOS/BIC update
# application which need libusb1. Should be removed when BIOS and BIC update
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/leds/phosphor-led-manager_%.bbappend b/meta-facebook/meta-yosemite4/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
new file mode 100644
index 0000000..c12b056
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
@@ -0,0 +1,18 @@
+SYSTEMD_SERVICE:${PN}-faultmonitor:remove:yosemite4 = "obmc-fru-fault-monitor.service"
+SYSTEMD_LINK:${PN}:remove:yosemite4 = "../obmc-led-group-start@.service:multi-user.target.wants/obmc-led-group-start@bmc_booted.service"
+SYSTEMD_LINK:${PN}:remove:yosemite4 = "${@compose_list_zip(d, 'FMT', 'CHASSIS_TARGETS', 'STATES')}"
+SYSTEMD_LINK:${PN}:remove:yosemite4 = "${@compose_list(d, 'CHASSIS_LED_BLACKOUT_FMT', 'OBMC_CHASSIS_INSTANCES' )}"
+SYSTEMD_OVERRIDE:${PN}:remove:yosemite4 = "bmc_booted.conf:obmc-led-group-start@bmc_booted.service.d/bmc_booted.conf"
+
+FAN_INSTANCES="0 1 2 3 4 5 6 7 8 9 10 11"
+FAN_OK_START_INSTFMT="obmc-led-group-start@.service:obmc-led-group-start@fan{0}_ok.service"
+SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'FAN_OK_START_INSTFMT', 'FAN_INSTANCES')}"
+
+FAN_FAIL_START_INSTFMT="obmc-led-group-start@.service:obmc-led-group-start@fan{0}_fail.service"
+SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'FAN_FAIL_START_INSTFMT', 'FAN_INSTANCES')}"
+
+FAN_OK_STOP_INSTFMT="obmc-led-group-stop@.service:obmc-led-group-stop@fan{0}_ok.service"
+SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'FAN_OK_STOP_INSTFMT', 'FAN_INSTANCES')}"
+
+FAN_FAIL_STOP_INSTFMT="obmc-led-group-stop@.service:obmc-led-group-stop@fan{0}_fail.service"
+SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'FAN_FAIL_STOP_INSTFMT', 'FAN_INSTANCES')}"
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/leds/yosemite4-led-manager-config-native.bb b/meta-facebook/meta-yosemite4/recipes-phosphor/leds/yosemite4-led-manager-config-native.bb
new file mode 100644
index 0000000..895d7ee
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/leds/yosemite4-led-manager-config-native.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Phosphor LED Group Management for Yosemite4"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit native
+
+PROVIDES += "virtual/phosphor-led-manager-config-native"
+
+SRC_URI += "file://led.yaml"
+S = "${WORKDIR}"
+
+do_install() {
+ SRC=${S}
+ DEST=${D}${datadir}/phosphor-led-manager
+ install -D ${SRC}/led.yaml ${DEST}/led.yaml
+}
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/leds/yosemite4-led-manager-config/led.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/leds/yosemite4-led-manager-config/led.yaml
new file mode 100644
index 0000000..7f89492
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/leds/yosemite4-led-manager-config/led.yaml
@@ -0,0 +1,143 @@
+fan0_ok:
+ fan0_blue:
+ Action: "On"
+ fan0_amber:
+ Action: "Off"
+
+fan0_fail:
+ fan0_blue:
+ Action: "Off"
+ fan0_amber:
+ Action: "On"
+
+fan1_ok:
+ fan1_blue:
+ Action: "On"
+ fan1_amber:
+ Action: "Off"
+
+fan1_fail:
+ fan1_blue:
+ Action: "Off"
+ fan1_amber:
+ Action: "On"
+
+fan2_ok:
+ fan2_blue:
+ Action: "On"
+ fan2_amber:
+ Action: "Off"
+
+fan2_fail:
+ fan2_blue:
+ Action: "Off"
+ fan2_amber:
+ Action: "On"
+
+fan3_ok:
+ fan3_blue:
+ Action: "On"
+ fan3_amber:
+ Action: "Off"
+
+fan3_fail:
+ fan3_blue:
+ Action: "Off"
+ fan3_amber:
+ Action: "On"
+
+fan4_ok:
+ fan4_blue:
+ Action: "On"
+ fan4_amber:
+ Action: "Off"
+
+fan4_fail:
+ fan4_blue:
+ Action: "Off"
+ fan4_amber:
+ Action: "On"
+
+fan5_ok:
+ fan5_blue:
+ Action: "On"
+ fan5_amber:
+ Action: "Off"
+
+fan5_fail:
+ fan5_blue:
+ Action: "Off"
+ fan5_amber:
+ Action: "On"
+
+fan6_ok:
+ fan6_blue:
+ Action: "On"
+ fan6_amber:
+ Action: "Off"
+
+fan6_fail:
+ fan6_blue:
+ Action: "Off"
+ fan6_amber:
+ Action: "On"
+
+fan7_ok:
+ fan7_blue:
+ Action: "On"
+ fan7_amber:
+ Action: "Off"
+
+fan7_fail:
+ fan7_blue:
+ Action: "Off"
+ fan7_amber:
+ Action: "On"
+
+fan8_ok:
+ fan8_blue:
+ Action: "On"
+ fan8_amber:
+ Action: "Off"
+
+fan8_fail:
+ fan8_blue:
+ Action: "Off"
+ fan8_amber:
+ Action: "On"
+
+fan9_ok:
+ fan9_blue:
+ Action: "On"
+ fan9_amber:
+ Action: "Off"
+
+fan9_fail:
+ fan9_blue:
+ Action: "Off"
+ fan9_amber:
+ Action: "On"
+
+fan10_ok:
+ fan10_blue:
+ Action: "On"
+ fan10_amber:
+ Action: "Off"
+
+fan10_fail:
+ fan10_blue:
+ Action: "Off"
+ fan10_amber:
+ Action: "On"
+
+fan11_ok:
+ fan11_blue:
+ Action: "On"
+ fan11_amber:
+ Action: "Off"
+
+fan11_fail:
+ fan11_blue:
+ Action: "Off"
+ fan11_amber:
+ Action: "On"