Recipes for installing fan definition yaml
This provides the phosphor-fan-control-fan-config virtual to
define the fans required by phosphor-fan-control.
On systems with the MRW, phosphor-fan-control-fan-config-mrw-native.bb
will be used and will run a perl script to generate the yaml
from data in the MRW XML.
On systems without the MRW, if nothing else is done a default
fans.yaml file will be installed into the correct location
by phosphor-fan-control-fan-config-native.bb. To install a
system specific version, put it into that system's layer along
with a .bbappend of this recipe.
Change-Id: I36889a33e16a456a04b94aba7326dd674bfd2904
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/common/recipes-phosphor/fans/phosphor-fan-control-fan-config-mrw-native.bb b/common/recipes-phosphor/fans/phosphor-fan-control-fan-config-mrw-native.bb
new file mode 100644
index 0000000..1eadadf
--- /dev/null
+++ b/common/recipes-phosphor/fans/phosphor-fan-control-fan-config-mrw-native.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Generate fan control YAML from the MRW"
+PR = "r1"
+
+inherit native
+inherit obmc-phosphor-license
+inherit phosphor-fan
+
+DEPENDS += " \
+ mrw-native \
+ mrw-perl-tools-native \
+ "
+
+PROVIDES += "virtual/phosphor-fan-control-fan-config"
+
+S = "${WORKDIR}"
+
+do_compile() {
+ ${bindir}/perl-native/perl \
+ ${bindir}/gen_fan_zone_yaml.pl \
+ -i ${datadir}/obmc-mrw/${MACHINE}.xml \
+ -o ${S}/fans.yaml
+}
+
+do_install() {
+ DEST=${D}${control_datadir}
+ install -D ${S}/fans.yaml ${DEST}/fans.yaml
+}
diff --git a/common/recipes-phosphor/fans/phosphor-fan-control-fan-config-native.bb b/common/recipes-phosphor/fans/phosphor-fan-control-fan-config-native.bb
new file mode 100644
index 0000000..76b0985
--- /dev/null
+++ b/common/recipes-phosphor/fans/phosphor-fan-control-fan-config-native.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Phosphor fan definition example data"
+PR = "r1"
+
+inherit native
+inherit obmc-phosphor-license
+inherit phosphor-fan
+
+PROVIDES += "virtual/phosphor-fan-control-fan-config"
+
+SRC_URI += "file://fans.yaml"
+
+S = "${WORKDIR}"
+
+do_install() {
+ DEST=${D}${control_datadir}
+ install -D fans.yaml ${DEST}/fans.yaml
+}
diff --git a/common/recipes-phosphor/fans/phosphor-fan-control-fan-config/fans.yaml b/common/recipes-phosphor/fans/phosphor-fan-control-fan-config/fans.yaml
new file mode 100644
index 0000000..8a6c271
--- /dev/null
+++ b/common/recipes-phosphor/fans/phosphor-fan-control-fan-config/fans.yaml
@@ -0,0 +1,2 @@
+#Default fan definition YAML - empty.
+#For format, see documentation in fan control code repository example yaml.
diff --git a/conf/distro/include/phosphor-defaults.inc b/conf/distro/include/phosphor-defaults.inc
index 0ea531b..53298da 100644
--- a/conf/distro/include/phosphor-defaults.inc
+++ b/conf/distro/include/phosphor-defaults.inc
@@ -44,6 +44,11 @@
# Provides implementations of fan presence detection
VIRTUAL-RUNTIME_obmc-fan-presence ?= "phosphor-fan-presence-tach"
+# obmc-fan-control
+#
+# Provides implementations of fan control
+VIRTUAL-RUNTIME_obmc-fan-control ?= "phosphor-fan-control"
+
# obmc-inventory-manager
#
# Provides an implementation of the xyz.openbmc_project.Inventory.Manager
@@ -147,5 +152,13 @@
PREFERRED_PROVIDER_virtual/phosphor-fan-presence-config ?= \
"${@cf_enabled(d, 'obmc-mrw', 'phosphor-fan-presence-mrw-native', 'phosphor-fan-presence-example-native')}"
+# The phosphor-fan-control application is data driven and requires a YAML
+# file to define the fans in the system.
+# This virtual is a native recipe that provides that definition by installing
+# the YAML file in the format and native sysroot location expected by
+# the phosphor-fan-control build process in the native sysroot.
+PREFERRED_PROVIDER_virtual/phosphor-fan-control-fan-config ?= \
+ "${@cf_enabled(d, 'obmc-mrw', 'phosphor-fan-control-fan-config-mrw-native', 'phosphor-fan-control-fan-config-native')}"
+
OBMC_DBUS_PATH_ROOT ?= "/xyz/openbmc_project"
OBMC_DBUS_IFACE_ROOT ?= "xyz.openbmc_project"