meta-ibm: acx22: new YAML config recipe

YAML configuration files exist scattered throughout the OpenBMC tree and
how they are used is controlled with layers dependencies of virtuals and
preferred providers.

Most of the time the above scheme is very difficult to comprehend.  This
patch continues a re-thinking of that approach towards a more
centralized scheme.

Specifically this patch implements a single YAML config recipe for the
ACx22 systems.  The logic contained in the recipe was pulled from
all over the OpenBMC tree - the ability to comprehend how the different
YAML files are generated and consumed should be greatly eased.

A couple notable details:
 - Specialized tasks for doing deep YAML dictionary merges existed in
the upstream recipes (-hardcoded.yaml, -config.yaml), but it was
observed that simply concatenating the YAML files produced the same
results, so the specialized deep merge logic was not copied here and can
be deprecated upstream.
 - Unlike the upstream recipes, acx22-yaml-config is a target recipe and
as such enables MACHINE based overrides.

YAML files were copied from different locations in the tree, and run
through a styling application (pyyaml dump(load(yaml))):
  phosphor-ipmi-fru-read-bmc-inventory-native:bmc-fru-config.yaml ->
    acx22-yaml-config:acx22-ipmi-fru-bmc.yaml
  phosphor-ipmi-fru-read-not-sent-by-host-inventory-native:fru-config-not-sent-by-host.yaml ->
    acx22-yaml-config:acx22-ipmi-fru-not-sent-by-host.yaml
  phosphor-ipmi-host:occ_sensors.hardcoded.yaml ->
    acx22-yaml-config:acx22-ipmi-occ-sensors.yaml
  phosphor-ipmi-host:hwmon_sensors.hardcoded.yaml ->
    acx22-yaml-config:acx22-ipmi-hwmon-sensors.yaml
  phosphor-ipmi-host:witherspoon_hwmon_sensors.hardcoded.yaml ->
    acx22-yaml-config:ac922-ipmi-extra-hwmon-sensors.yaml
  phosphor-ipmi-sensor-inventory-mrw-config-native:config.yaml ->
    acx22-yaml-config:acx22-ipmi-sensors-mrw.yaml

Change-Id: I990146c818f3227c9b0d7e7c126e540c6f03d5b3
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config.bb b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config.bb
new file mode 100644
index 0000000..efe9cd5
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config.bb
@@ -0,0 +1,92 @@
+SUMMARY = "YAML configuration for ACx22 systems"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658"
+
+inherit allarch
+inherit mrw-xml
+
+EXTRA_SRC_URI = ""
+EXTRA_SRC_URI_witherspoon = " \
+    file://ac922-ipmi-extra-hwmon-sensors.yaml \
+    "
+SRC_URI = " \
+    file://acx22-ipmi-fru-bmc.yaml \
+    file://acx22-ipmi-fru-not-sent-by-host.yaml \
+    file://acx22-ipmi-hwmon-sensors.yaml \
+    file://acx22-ipmi-inventory-sensors.yaml \
+    file://acx22-ipmi-occ-sensors.yaml \
+    file://acx22-ipmi-sensors-mrw.yaml \
+    ${EXTRA_SRC_URI} \
+    "
+
+DEPENDS = " \
+    mrw-native \
+    mrw-perl-tools-native \
+    openpower-yaml-config \
+    "
+
+S = "${WORKDIR}"
+
+ACx22_IPMI_EXTRA_FRU_READ_YAMLS = " \
+    acx22-ipmi-fru-bmc.yaml \
+    acx22-ipmi-fru-not-sent-by-host.yaml \
+    "
+ACx22_IPMI_EXTRA_MACHINE_SENSOR_YAMLS = ""
+ACx22_IPMI_EXTRA_MACHINE_SENSOR_YAMLS_witherspoon = " \
+    ac922-ipmi-extra-hwmon-sensors.yaml \
+    "
+ACx22_IPMI_EXTRA_SENSOR_YAMLS = " \
+    acx22-ipmi-hwmon-sensors.yaml \
+    acx22-ipmi-occ-sensors.yaml \
+    ${ACx22_IPMI_EXTRA_MACHINE_SENSOR_YAMLS} \
+    "
+
+do_install() {
+    perlbin="${STAGING_DIR_NATIVE}${bindir}/perl-native/perl"
+    scriptpath=${STAGING_DIR_NATIVE}${bindir}
+    mrw=${STAGING_DIR_NATIVE}${datadir}/obmc-mrw/${MRW_XML}
+    op_configpath=${STAGING_DIR_HOST}${datadir}/openpower-yaml-config
+
+    # generate extra-properties.yaml from the MRW for ipmi-fru-parser
+    $perlbin $scriptpath/gen_fru_properties.pl -m $mrw \
+        -c $op_configpath/ipmi-fru-properties-mrw.yaml \
+        -o extra-properties.yaml
+
+    # generate fru-read.yaml from the MRW, for ipmid and ipmi-fru-parser
+    $perlbin $scriptpath/gen_ipmi_fru.pl -i $mrw \
+        -m $op_configpath/ipmi-hostboot-fru-mrw.yaml \
+        -o fru-read-partial.yaml
+    cat fru-read-partial.yaml ${ACx22_IPMI_EXTRA_FRU_READ_YAMLS} \
+        > fru-read.yaml
+
+    # generate inventory-sensors.yaml from the MRW, for ipmid
+    $perlbin $scriptpath/gen_ipmi_sel.pl -i $mrw \
+        -m acx22-ipmi-inventory-sensors.yaml -o inventory-sensors.yaml
+
+    # generate sensors.yaml from the MRW, for ipmid
+    cat acx22-ipmi-sensors-mrw.yaml \
+        $op_configpath/ipmi-hostboot-volatile-sensor-mrw.yaml \
+        $op_configpath/ipmi-occ-active-sensor-mrw.yaml \
+        > sensors-mrw.yaml
+    $perlbin $scriptpath/gen_ipmi_sensor.pl -i $mrw -m sensors-mrw.yaml \
+        -o sensors-partial.yaml
+    cat sensors-partial.yaml ${ACx22_IPMI_EXTRA_SENSOR_YAMLS} \
+        > sensors.yaml
+
+    install -m 0644 -D extra-properties.yaml \
+        ${D}${datadir}/${BPN}/ipmi-extra-properties.yaml
+    install -m 0644 -D fru-read.yaml ${D}${datadir}/${BPN}/ipmi-fru-read.yaml
+    install -m 0644 -D inventory-sensors.yaml \
+        ${D}${datadir}/${BPN}/ipmi-inventory-sensors.yaml
+    install -m 0644 -D sensors.yaml ${D}${datadir}/${BPN}/ipmi-sensors.yaml
+}
+
+FILES_${PN}-dev = " \
+    ${datadir}/${BPN}/ipmi-extra-properties.yaml \
+    ${datadir}/${BPN}/ipmi-fru-read.yaml \
+    ${datadir}/${BPN}/ipmi-inventory-sensors.yaml \
+    ${datadir}/${BPN}/ipmi-sensors.yaml \
+    "
+
+ALLOW_EMPTY_${PN} = "1"
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-fru-bmc.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-fru-bmc.yaml
new file mode 100644
index 0000000..a5ce2e8
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-fru-bmc.yaml
@@ -0,0 +1,120 @@
+50:
+    /system/chassis/motherboard/fan0:
+        entityID: 29
+        entityInstance: 1
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Product Name
+                    IPMIFruSection: Product
+51:
+    /system/chassis/motherboard/fan1:
+        entityID: 29
+        entityInstance: 2
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Product Name
+                    IPMIFruSection: Product
+52:
+    /system/chassis/motherboard/fan2:
+        entityID: 29
+        entityInstance: 3
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Product Name
+                    IPMIFruSection: Product
+53:
+    /system/chassis/motherboard/fan3:
+        entityID: 29
+        entityInstance: 4
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Product Name
+                    IPMIFruSection: Product
+60:
+    /system/chassis/motherboard/boxelder/bmc:
+        entityID: 6
+        entityInstance: 1
+        interfaces:
+            xyz.openbmc_project.Inventory.Decorator.Asset:
+                BuildDate:
+                    IPMIFruProperty: Mfg Date
+                    IPMIFruSection: Board
+                Manufacturer:
+                    IPMIFruProperty: Manufacturer
+                    IPMIFruSection: Board
+                Model:
+                    IPMIFruProperty: Model Number
+                    IPMIFruSection: Board
+                PartNumber:
+                    IPMIFruProperty: Part Number
+                    IPMIFruSection: Board
+                SerialNumber:
+                    IPMIFruProperty: Serial Number
+                    IPMIFruSection: Board
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+70:
+    /system/chassis/motherboard/boxelder/bmc/ethernet:
+        entityID: 1
+        entityInstance: 1
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Product Name
+                    IPMIFruSection: Product
+75:
+    /system/chassis/motherboard/powersupply0:
+        entityID: 10
+        entityInstance: 1
+        interfaces:
+            xyz.openbmc_project.Inventory.Decorator.Asset:
+                BuildDate:
+                    IPMIFruProperty: Mfg Date
+                    IPMIFruSection: Board
+                Manufacturer:
+                    IPMIFruProperty: Manufacturer
+                    IPMIFruSection: Board
+                Model:
+                    IPMIFruProperty: Model Number
+                    IPMIFruSection: Board
+                PartNumber:
+                    IPMIFruProperty: Part Number
+                    IPMIFruSection: Board
+                SerialNumber:
+                    IPMIFruProperty: Serial Number
+                    IPMIFruSection: Board
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+76:
+    /system/chassis/motherboard/powersupply1:
+        entityID: 10
+        entityInstance: 2
+        interfaces:
+            xyz.openbmc_project.Inventory.Decorator.Asset:
+                BuildDate:
+                    IPMIFruProperty: Mfg Date
+                    IPMIFruSection: Board
+                Manufacturer:
+                    IPMIFruProperty: Manufacturer
+                    IPMIFruSection: Board
+                Model:
+                    IPMIFruProperty: Model Number
+                    IPMIFruSection: Board
+                PartNumber:
+                    IPMIFruProperty: Part Number
+                    IPMIFruSection: Board
+                SerialNumber:
+                    IPMIFruProperty: Serial Number
+                    IPMIFruSection: Board
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-fru-not-sent-by-host.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-fru-not-sent-by-host.yaml
new file mode 100644
index 0000000..a4c34b4
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-fru-not-sent-by-host.yaml
@@ -0,0 +1,54 @@
+20:
+    /system/chassis/motherboard/gv100card0:
+        entityID: 3
+        entityInstance: 1
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+21:
+    /system/chassis/motherboard/gv100card1:
+        entityID: 3
+        entityInstance: 2
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+22:
+    /system/chassis/motherboard/gv100card2:
+        entityID: 3
+        entityInstance: 3
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+23:
+    /system/chassis/motherboard/gv100card3:
+        entityID: 3
+        entityInstance: 4
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+24:
+    /system/chassis/motherboard/gv100card4:
+        entityID: 3
+        entityInstance: 5
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
+25:
+    /system/chassis/motherboard/gv100card5:
+        entityID: 3
+        entityInstance: 6
+        interfaces:
+            xyz.openbmc_project.Inventory.Item:
+                PrettyName:
+                    IPMIFruProperty: Board Name
+                    IPMIFruSection: Board
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-hwmon-sensors.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-hwmon-sensors.yaml
new file mode 100644
index 0000000..6d22a61
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-hwmon-sensors.yaml
@@ -0,0 +1,462 @@
+221:
+    bExp: 0
+    entityID: 29
+    entityInstance: 1
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan0_0
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+223:
+    bExp: 0
+    entityID: 29
+    entityInstance: 3
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan1_0
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+227:
+    bExp: 0
+    entityID: 29
+    entityInstance: 5
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan2_0
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+229:
+    bExp: 0
+    entityID: 29
+    entityInstance: 7
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan3_0
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+231:
+    bExp: 0
+    entityID: 10
+    entityInstance: 1
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/fan_disk_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+238:
+    bExp: 0
+    entityID: 10
+    entityInstance: 9
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/p0_io_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+239:
+    bExp: 0
+    entityID: 10
+    entityInstance: 10
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/p1_io_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+240:
+    bExp: 0
+    entityID: 10
+    entityInstance: 11
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/p0_mem_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+241:
+    bExp: 0
+    entityID: 10
+    entityInstance: 12
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/p1_mem_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+242:
+    bExp: 0
+    entityID: 10
+    entityInstance: 13
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/p0_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+243:
+    bExp: 0
+    entityID: 10
+    entityInstance: 14
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/p1_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+244:
+    bExp: 0
+    entityID: 10
+    entityInstance: 15
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 10
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/ps0_input_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+245:
+    bExp: 0
+    entityID: 10
+    entityInstance: 16
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 10
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/ps1_input_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+246:
+    bExp: 0
+    entityID: 10
+    entityInstance: 17
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 20
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/power/total_power
+    rExp: 0
+    readingType: readingData
+    scale: -6
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 8
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+247:
+    bExp: 0
+    entityID: 10
+    entityInstance: 19
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/voltage/ps0_input_voltage
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 2
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
+248:
+    bExp: 0
+    entityID: 10
+    entityInstance: 20
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 2
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/voltage/ps1_input_voltage
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 2
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
+249:
+    bExp: 0
+    entityID: 10
+    entityInstance: 21
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 10
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/voltage/ps0_output_voltage
+    rExp: -2
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 2
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
+250:
+    bExp: 0
+    entityID: 10
+    entityInstance: 22
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 10
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/voltage/ps1_output_voltage
+    rExp: -2
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 2
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
+251:
+    bExp: 0
+    entityID: 10
+    entityInstance: 23
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/current/ps0_output_current
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 3
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
+252:
+    bExp: 0
+    entityID: 10
+    entityInstance: 24
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/current/ps1_output_current
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 3
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
+253:
+    bExp: 0
+    entityID: 35
+    entityInstance: 1
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 30
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/temperature/pcie
+    rExp: -2
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 1
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+254:
+    bExp: 0
+    entityID: 64
+    entityInstance: 1
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 20
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/temperature/ambient
+    rExp: -2
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 1
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-inventory-sensors.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-inventory-sensors.yaml
new file mode 100644
index 0000000..6dd17b7
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-inventory-sensors.yaml
@@ -0,0 +1,18 @@
+1:
+    Offset: 2
+    SensorType: 18
+3:
+    Offset: 8
+    SensorType: 7
+7:
+    Offset: 0
+    SensorType: 199
+32:
+    Offset: 4
+    SensorType: 12
+208:
+    Offset: 8
+    SensorType: 7
+216:
+    Offset: 8
+    SensorType: 23
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-occ-sensors.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-occ-sensors.yaml
new file mode 100644
index 0000000..aa69a64
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-occ-sensors.yaml
@@ -0,0 +1,44 @@
+8:
+    entityID: 210
+    entityInstance: 1
+    interfaces:
+        org.open_power.OCC.Status:
+            OccActive:
+                Offsets:
+                    0:
+                        assert: false
+                        deassert: true
+                        type: bool
+                    1:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    path: /org/open_power/control/occ0
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 9
+    sensorType: 9
+    serviceInterface: org.freedesktop.DBus.Properties
+9:
+    entityID: 210
+    entityInstance: 2
+    interfaces:
+        org.open_power.OCC.Status:
+            OccActive:
+                Offsets:
+                    0:
+                        assert: false
+                        deassert: true
+                        type: bool
+                    1:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    path: /org/open_power/control/occ1
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 9
+    sensorType: 9
+    serviceInterface: org.freedesktop.DBus.Properties
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-sensors-mrw.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-sensors-mrw.yaml
new file mode 100644
index 0000000..0a04d93
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/acx22-ipmi-sensors-mrw.yaml
@@ -0,0 +1,338 @@
+boot_count_sensor:
+    interfaces:
+        xyz.openbmc_project.Control.Boot.RebootAttempts:
+            AttemptsLeft:
+                Offsets:
+                    255:
+                        type: uint32_t
+    mutability: Mutability::Write|Mutability::Read
+    path: /xyz/openbmc_project/state/host0
+    readingType: readingAssertion
+    sensorNamePattern: nameProperty
+    serviceInterface: org.freedesktop.DBus.Properties
+cpu_func_sensor:
+    interfaces:
+        xyz.openbmc_project.Inventory.Item:
+            Present:
+                Offsets:
+                    7:
+                        assert: true
+                        deassert: false
+                        type: bool
+        xyz.openbmc_project.State.Decorator.OperationalStatus:
+            Functional:
+                Offsets:
+                    8:
+                        assert: false
+                        deassert: true
+                        type: bool
+                Prereqs:
+                    7:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    serviceInterface: xyz.openbmc_project.Inventory.Manager
+cpucore_func_sensor:
+    interfaces:
+        xyz.openbmc_project.Inventory.Item:
+            Present:
+                Offsets:
+                    7:
+                        assert: true
+                        deassert: false
+                        skipOn: deassert
+                        type: bool
+        xyz.openbmc_project.State.Decorator.OperationalStatus:
+            Functional:
+                Offsets:
+                    8:
+                        assert: false
+                        deassert: true
+                        type: bool
+                Prereqs:
+                    7:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    readingType: assertion
+    sensorNamePattern: nameParentLeaf
+    serviceInterface: xyz.openbmc_project.Inventory.Manager
+cpucore_temp_sensor:
+    bExp: 0
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    mutability: Mutability::Write|Mutability::Read
+    offsetB: -127
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+dimm_func_sensor:
+    interfaces:
+        xyz.openbmc_project.Inventory.Item:
+            Present:
+                Offsets:
+                    6:
+                        assert: true
+                        deassert: false
+                        type: bool
+        xyz.openbmc_project.State.Decorator.OperationalStatus:
+            Functional:
+                Offsets:
+                    4:
+                        assert: false
+                        deassert: true
+                        type: bool
+                Prereqs:
+                    6:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    serviceInterface: xyz.openbmc_project.Inventory.Manager
+dimm_temp_sensor:
+    bExp: 0
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    mutability: Mutability::Write|Mutability::Read
+    offsetB: -127
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+fw_boot_sensor:
+    interfaces:
+        xyz.openbmc_project.State.Boot.Progress:
+            BootProgress:
+                Offsets:
+                    0:
+                        set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified
+                        type: string
+                    1:
+                        set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit
+                        type: string
+                    3:
+                        set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit
+                        type: string
+                    7:
+                        set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.PCIInit
+                        type: string
+                    19:
+                        set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart
+                        type: string
+                    20:
+                        set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit
+                        type: string
+    mutability: Mutability::Write|Mutability::Read
+    path: /xyz/openbmc_project/state/host0
+    readingType: eventdata2
+    sensorNamePattern: nameProperty
+    serviceInterface: org.freedesktop.DBus.Properties
+gpu_func_sensor:
+    interfaces:
+        xyz.openbmc_project.Inventory.Decorator.Replaceable:
+            FieldReplaceable:
+                Offsets:
+                    7:
+                        assert: true
+                        deassert: true
+                        type: bool
+        xyz.openbmc_project.Inventory.Item:
+            Present:
+                Offsets:
+                    7:
+                        assert: true
+                        deassert: false
+                        type: bool
+        xyz.openbmc_project.State.Decorator.OperationalStatus:
+            Functional:
+                Offsets:
+                    8:
+                        assert: false
+                        deassert: true
+                        type: bool
+                Prereqs:
+                    7:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    serviceInterface: xyz.openbmc_project.Inventory.Manager
+gpu_temp_sensor:
+    bExp: 0
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    mutability: Mutability::Write|Mutability::Read
+    offsetB: -127
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+host_auto_reboot_control_sensor:
+    interfaces:
+        xyz.openbmc_project.Control.Boot.RebootPolicy:
+            AutoReboot:
+                Offsets:
+                    0:
+                        assert: false
+                        type: bool
+                    1:
+                        assert: true
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    path: /xyz/openbmc_project/control/host0/auto_reboot
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+memory_temp_sensor:
+    bExp: 0
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    mutability: Mutability::Write|Mutability::Read
+    offsetB: -127
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+os_boot_sensor:
+    interfaces:
+        xyz.openbmc_project.State.OperatingSystem.Status:
+            OperatingSystemState:
+                Offsets:
+                    1:
+                        assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CBoot
+                        type: string
+                    2:
+                        assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.PXEBoot
+                        type: string
+                    3:
+                        assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.DiagBoot
+                        type: string
+                    4:
+                        assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CDROMBoot
+                        type: string
+                    5:
+                        assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.ROMBoot
+                        type: string
+                    6:
+                        assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete
+                        type: string
+    mutability: Mutability::Write|Mutability::Read
+    path: /xyz/openbmc_project/state/host0
+    readingType: assertion
+    sensorNamePattern: nameProperty
+    serviceInterface: org.freedesktop.DBus.Properties
+ps_derating_sensor:
+    interfaces:
+        xyz.openbmc_project.Control.PowerSupplyAttributes:
+            DeratingFactor:
+                Offsets:
+                    255:
+                        type: uint32_t
+    mutability: Mutability::Read
+    readingType: assertion
+    sensorNamePattern: nameProperty
+    serviceInterface: org.freedesktop.DBus.Properties
+ps_redundancy_state_sensor:
+    interfaces:
+        xyz.openbmc_project.Control.PowerSupplyRedundancy:
+            PowerSupplyRedundancyEnabled:
+                Offsets:
+                    0:
+                        assert: false
+                        type: bool
+                    1:
+                        assert: true
+                        type: bool
+    mutability: Mutability::Read
+    path: /xyz/openbmc_project/control/power_supply_redundancy
+    readingType: assertion
+    sensorNamePattern: nameProperty
+    serviceInterface: org.freedesktop.DBus.Properties
+tpm_required_sensor:
+    interfaces:
+        xyz.openbmc_project.Control.TPM.Policy:
+            TPMEnable:
+                Offsets:
+                    0:
+                        assert: false
+                        type: bool
+                    1:
+                        assert: true
+                        type: bool
+    mutability: Mutability::Write|Mutability::Read
+    path: /xyz/openbmc_project/control/host0/TPMEnable
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+turbo_allowed_sensor:
+    interfaces:
+        xyz.openbmc_project.Control.Host.TurboAllowed:
+            TurboAllowed:
+                Offsets:
+                    0:
+                        assert: false
+                        deassert: true
+                        type: bool
+                    1:
+                        assert: true
+                        deassert: false
+                        type: bool
+    mutability: Mutability::Read
+    path: /xyz/openbmc_project/control/host0/turbo_allowed
+    readingType: assertion
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+vrm_vdd_temp_sensor:
+    bExp: 0
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 1
+    mutability: Mutability::Write|Mutability::Read
+    offsetB: -127
+    rExp: 0
+    readingType: readingData
+    scale: -3
+    sensorNamePattern: nameLeaf
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
diff --git a/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/witherspoon/ac922-ipmi-extra-hwmon-sensors.yaml b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/witherspoon/ac922-ipmi-extra-hwmon-sensors.yaml
new file mode 100644
index 0000000..538b4c8
--- /dev/null
+++ b/meta-witherspoon/recipes-phosphor/configuration/acx22-yaml-config/witherspoon/ac922-ipmi-extra-hwmon-sensors.yaml
@@ -0,0 +1,84 @@
+222:
+    bExp: 0
+    entityID: 29
+    entityInstance: 2
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan0_1
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+226:
+    bExp: 0
+    entityID: 29
+    entityInstance: 4
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan1_1
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+228:
+    bExp: 0
+    entityID: 29
+    entityInstance: 6
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan2_1
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+230:
+    bExp: 0
+    entityID: 29
+    entityInstance: 8
+    interfaces:
+        xyz.openbmc_project.Sensor.Value:
+            Value:
+                Offsets:
+                    255:
+                        type: int64_t
+    multiplierM: 100
+    offsetB: 0
+    path: /xyz/openbmc_project/sensors/fan_tach/fan3_1
+    rExp: 0
+    readingType: readingData
+    scale: 0
+    sensorNamePattern: nameLeaf
+    sensorReadingType: 1
+    sensorType: 4
+    serviceInterface: org.freedesktop.DBus.Properties
+    unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS