meta-quanta: s6q: add fru yaml config files

Add fru setting config and device json file.

Tested:
~# ipmitool mc info
Device ID : 32
Device Revision : 1
Firmware Revision : 0.00
IPMI Version : 2.0
Manufacturer ID : 7244
Manufacturer Name : Quanta Computer Inc.
Product ID : 13905 (0x3651)
Product Name : Unknown (0x3651)
Device Available : yes
Provides Device SDRs : no
Additional Device Support :
Sensor Device
SEL Device
FRU Inventory Device
Chassis Device
Aux Firmware Rev Info :
0x00
0x00
0x00
0x00

~# ipmitool fru
FRU Device Description : Builtin FRU Device (ID 0)
Board Mfg Date : Mon Jan 17 07:40:00 2022 UTC
Board Mfg : Quanta
Board Product : S6Q_Openbmc
Board Serial : QCTQTW213400001
Board Part Number : 1100827-01

FRU Device Description : mainboard (ID 1)
Board Mfg Date : Sat Sep 4 17:44:00 2021 UTC
Board Mfg : Quanta Cloud Technology Inc.
Board Product : S6Q-MB-RTT
Board Serial : RTTQTW12500077
Board Part Number : 31S6QMB0000

Signed-off-by: Joseph Fu <joseph.fu@quantatw.com>
Change-Id: Id7d8d6a330eb4b698b2933189eec35e0b48fc700
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config.bb b/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config.bb
new file mode 100644
index 0000000..e437b7f
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config.bb
@@ -0,0 +1,25 @@
+SUMMARY = "YAML configuration for s6q"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit allarch
+
+SRC_URI = " \
+    file://ipmi-fru.yaml \
+    file://ipmi-fru-properties.yaml \
+    "
+
+S = "${WORKDIR}"
+
+do_install() {
+    install -m 0644 -D ipmi-fru.yaml ${D}${datadir}/${BPN}/ipmi-fru-read.yaml
+    install -m 0644 -D ipmi-fru-properties.yaml ${D}${datadir}/${BPN}/ipmi-extra-properties.yaml
+}
+
+FILES:${PN}-dev = " \
+    ${datadir}/${BPN}/ipmi-fru-read.yaml \
+    ${datadir}/${BPN}/ipmi-extra-properties.yaml \
+    "
+
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config/ipmi-fru-properties.yaml b/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config/ipmi-fru-properties.yaml
new file mode 100644
index 0000000..6ce5de1
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config/ipmi-fru-properties.yaml
@@ -0,0 +1,31 @@
+/system:
+    xyz.openbmc_project.Inventory.Decorator.Cacheable:
+        Cached: 'true'
+    xyz.openbmc_project.Inventory.Decorator.Replaceable:
+        FieldReplaceable: 'true'
+    xyz.openbmc_project.Inventory.Item:
+        Present: 'true'
+
+/system/chassis:
+    xyz.openbmc_project.Inventory.Decorator.Cacheable:
+        Cached: 'true'
+    xyz.openbmc_project.Inventory.Decorator.Replaceable:
+        FieldReplaceable: 'true'
+    xyz.openbmc_project.Inventory.Item:
+        Present: 'true'
+
+/system/chassis/bmc:
+    xyz.openbmc_project.Inventory.Decorator.Replaceable:
+        FieldReplaceable: 'true'
+    xyz.openbmc_project.Inventory.Decorator.Cacheable:
+        Cached: 'true'
+    xyz.openbmc_project.Inventory.Item:
+        Present: 'true'
+
+/system/chassis/mainboard:
+    xyz.openbmc_project.Inventory.Decorator.Replaceable:
+        FieldReplaceable: 'true'
+    xyz.openbmc_project.Inventory.Decorator.Cacheable:
+        Cached: 'true'
+    xyz.openbmc_project.Inventory.Item:
+        Present: 'true'
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config/ipmi-fru.yaml b/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config/ipmi-fru.yaml
new file mode 100755
index 0000000..519af3f
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/configuration/s6q-yaml-config/ipmi-fru.yaml
@@ -0,0 +1,60 @@
+0x00:
+  /system/chassis/bmc:
+    entityID: 6
+    entityInstance: 1
+    interfaces:
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Board
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Board
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Board
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Board
+        CustomField:
+          IPMIFruProperty: CustomField
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Name
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Decorator.Revision:
+        Version:
+          IPMIFruProperty: FRU File ID
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Item.NetworkInterface:
+        MACAddress:
+          IPMIFruProperty: Custom Field 1
+          IPMIFruSection: Board
+
+0x01:
+  /system/chassis/mainboard:
+    entityID: 16
+    entityInstance: 1
+    interfaces:
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Board
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Board
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Board
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Name
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Decorator.Revision:
+        Version:
+          IPMIFruProperty: FRU File ID
+          IPMIFruSection: Board
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json
new file mode 100644
index 0000000..0a1e4ba
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json
@@ -0,0 +1,8 @@
+{
+    "id": 32,
+    "revision": 1,
+    "addn_dev_support": 141,
+    "manuf_id": 7244,
+    "prod_id": 13905,
+    "aux": 0
+}
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru/obmc/eeproms/system/chassis/bmc b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru/obmc/eeproms/system/chassis/bmc
new file mode 100644
index 0000000..799a22d
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru/obmc/eeproms/system/chassis/bmc
@@ -0,0 +1,3 @@
+OF_NAME=scm_fru
+SYSFS_PATH=/sys/bus/i2c/devices/14-0051/eeprom
+FRUID=0
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru/obmc/eeproms/system/chassis/motherboard b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru/obmc/eeproms/system/chassis/motherboard
new file mode 100644
index 0000000..2dd41d6
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru/obmc/eeproms/system/chassis/motherboard
@@ -0,0 +1,3 @@
+OF_NAME=mb_fru
+SYSFS_PATH=/sys/bus/i2c/devices/3-0051/eeprom
+FRUID=1
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru_%.bbappend b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru_%.bbappend
new file mode 100644
index 0000000..6caa6a5
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-fru_%.bbappend
@@ -0,0 +1,26 @@
+FILESEXTRAPATHS:prepend:s6q := "${THISDIR}/${PN}:"
+
+inherit obmc-phosphor-systemd
+DEPENDS:append:s6q = " s6q-yaml-config"
+
+EEPROMS_NAME_LIST = "bmc motherboard"
+
+EEPROMFMT = "system/chassis/{0}"
+EEPROM_ESCAPEDFMT = "system-chassis-{0}"
+EEPROMS = "${@compose_list(d, 'EEPROMFMT', 'EEPROMS_NAME_LIST')}"
+EEPROMS_ESCAPED = "${@compose_list(d, 'EEPROM_ESCAPEDFMT', 'EEPROMS_NAME_LIST')}"
+
+ENVFMT = "obmc/eeproms/{0}"
+SYSTEMD_ENVIRONMENT_FILE:${PN}:append:s6q := " ${@compose_list(d, 'ENVFMT', 'EEPROMS')}"
+
+TMPL = "obmc-read-eeprom@.service"
+TGT = "multi-user.target"
+INSTFMT = "obmc-read-eeprom@{0}.service"
+FMT = "../${TMPL}:${TGT}.wants/${INSTFMT}"
+
+SYSTEMD_LINK:${PN}:append:s6q := " ${@compose_list(d, 'FMT', 'EEPROMS_ESCAPED')}"
+
+EXTRA_OECONF:append:s6q = " \
+    YAML_GEN=${STAGING_DIR_HOST}${datadir}/s6q-yaml-config/ipmi-fru-read.yaml \
+    PROP_YAML=${STAGING_DIR_HOST}${datadir}/s6q-yaml-config/ipmi-extra-properties.yaml \
+    "
diff --git a/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
new file mode 100644
index 0000000..5e35c59f
--- /dev/null
+++ b/meta-quanta/meta-s6q/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:prepend:s6q := "${THISDIR}/${PN}:"
+
+DEPENDS:append:s6q = " s6q-yaml-config"
+
+EXTRA_OECONF:append:s6q = " FRU_YAML_GEN=${STAGING_DIR_HOST}${datadir}/s6q-yaml-config/ipmi-fru-read.yaml"