Add Inventec's Transformers platform

Change-Id: Ic8aaa0728a43936cd4c6212d590e01ba8202b25b
Signed-off-by: Habeeb Mohammed <mohammed.habeeb@inventec.com>
diff --git a/meta-inventec/MAINTAINERS b/meta-inventec/MAINTAINERS
new file mode 100644
index 0000000..83ff5a0
--- /dev/null
+++ b/meta-inventec/MAINTAINERS
@@ -0,0 +1,46 @@
+How to use this list:
+    Find the most specific section entry (described below) that matches where
+    your change lives and add the reviewers (R) and maintainers (M) as
+    reviewers. You can use the same method to track down who knows a particular
+    code base best.
+
+    Your change/query may span multiple entries; that is okay.
+
+    If you do not find an entry that describes your request at all, someone
+    forgot to update this list; please at least file an issue or send an email
+    to a maintainer, but preferably you should just update this document.
+
+Description of section entries:
+
+    Section entries are structured according to the following scheme:
+
+    X:  NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>
+    X:  ...
+    .
+    .
+    .
+
+    Where REPO_NAME is the name of the repository within the OpenBMC GitHub
+    organization; FILE_PATH is a file path within the repository, possibly with
+    wildcards; X is a tag of one of the following types:
+
+    M:  Denotes maintainer; has fields NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>;
+        if omitted from an entry, assume one of the maintainers from the
+        MAINTAINERS entry.
+    R:  Denotes reviewer; has fields NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>;
+        these people are to be added as reviewers for a change matching the repo
+        path.
+    F:  Denotes forked from an external repository; has fields URL.
+
+    Line comments are to be denoted "# SOME COMMENT" (typical shell style
+    comment); it is important to follow the correct syntax and semantics as we
+    may want to use automated tools with this file in the future.
+
+    A change cannot be added to an OpenBMC repository without a MAINTAINER's
+    approval; thus, a MAINTAINER should always be listed as a reviewer.
+
+START OF MAINTAINERS LIST
+-------------------------
+
+M:  Habeeb Mohammed <mohammed.habeeb@inventec.com>
+M:  Ye Vic <ye.vic@inventec.com>
diff --git a/meta-inventec/OWNERS b/meta-inventec/OWNERS
new file mode 100644
index 0000000..d97fcae
--- /dev/null
+++ b/meta-inventec/OWNERS
@@ -0,0 +1,3 @@
+owners:
+- mohammed.habeeb@inventec.com
+- ye.vic@inventec.com
diff --git a/meta-inventec/conf/layer.conf b/meta-inventec/conf/layer.conf
index 2b5eade..e390573 100644
--- a/meta-inventec/conf/layer.conf
+++ b/meta-inventec/conf/layer.conf
@@ -1,7 +1,15 @@
 # We have a conf and classes directory, add to BBPATH
 BBPATH .= ":${LAYERDIR}"
 
-BBFILE_COLLECTIONS += "inventec"
-BBFILE_PATTERN_inventec = ""
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/meta-common/recipes-*/*/*.bb \
+            ${LAYERDIR}/meta-common/recipes-*/*/*.bbappend"
 
-LAYERSERIES_COMPAT_inventec = "hardknott"
+BBFILE_COLLECTIONS += "inventec"
+BBFILE_PATTERN_inventec := "^${LAYERDIR}/"
+LAYERSERIES_COMPAT_inventec = "hardknott honister"
+BBFILE_PRIORITY_inventec = "6"
+
+# Provide a variable that points the base of the hpe layer.
+INVENTECBASE = '${@os.path.normpath("${LAYERDIR}/")}'
+
diff --git a/meta-inventec/conf/machine/include/inventec.inc b/meta-inventec/conf/machine/include/inventec.inc
index c79ddd7..02b0df6 100644
--- a/meta-inventec/conf/machine/include/inventec.inc
+++ b/meta-inventec/conf/machine/include/inventec.inc
@@ -1 +1,26 @@
-require conf/machine/include/openpower.inc
+OBMC_MACHINE_FEATURES += "\
+        obmc-phosphor-fan-mgmt \
+        obmc-phosphor-chassis-mgmt \
+        obmc-phosphor-flash-mgmt \
+        obmc-host-ipmi \
+        obmc-host-ctl \
+        obmc-host-state-mgmt \
+        obmc-chassis-state-mgmt \
+        obmc-bmc-state-mgmt \
+        "
+# since we use x86-power-control service, we don't need below three services
+VIRTUAL-RUNTIME_obmc-host-state-manager = "x86-power-control"
+VIRTUAL-RUNTIME_obmc-chassis-state-manager = "x86-power-control"
+VIRTUAL-RUNTIME_obmc-discover-system-state = "x86-power-control"
+
+
+PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-inventec-apps"
+PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-inventec-apps"
+PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-inventec-apps"
+PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-inventec-apps"
+PREFERRED_PROVIDER_virtual/obmc-host-ctl ?= "obmc-op-control-host"
+PREFERRED_PROVIDER_virtual/obmc-inventory-data ?= "${VIRTUAL-RUNTIME_skeleton_workbook}"
+PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw = "phosphor-ipmi-kcs"
+PREFERRED_PROVIDER_virtual/obmc-gpio-monitor ?= "phosphor-gpio-monitor"
+
+OVERRIDES .= ":inventec"
diff --git a/meta-inventec/meta-common/conf/layer.conf b/meta-inventec/meta-common/conf/layer.conf
new file mode 100644
index 0000000..07788f6
--- /dev/null
+++ b/meta-inventec/meta-common/conf/layer.conf
@@ -0,0 +1,11 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+        ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "common"
+BBFILE_PATTERN_common = "^${LAYERDIR}/"
+BBFILE_PRIORITY_common = "10"
+LAYERSERIES_COMPAT_common = "hardknott honister"
diff --git a/meta-inventec/meta-common/recipes-inventec/packagegroups/packagegroup-inventec-apps.bb b/meta-inventec/meta-common/recipes-inventec/packagegroups/packagegroup-inventec-apps.bb
new file mode 100644
index 0000000..7996cda
--- /dev/null
+++ b/meta-inventec/meta-common/recipes-inventec/packagegroups/packagegroup-inventec-apps.bb
@@ -0,0 +1,56 @@
+SUMMARY = "OpenBMC for Inventec - Applications"
+PR = "r1"
+
+inherit packagegroup
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = " \
+        ${PN}-chassis \
+        ${PN}-fans \
+        ${PN}-flash \
+        ${PN}-system \
+        ${PN}-ipmi-oem \
+        "
+
+PROVIDES += "virtual/obmc-chassis-mgmt"
+PROVIDES += "virtual/obmc-fan-mgmt"
+PROVIDES += "virtual/obmc-flash-mgmt"
+PROVIDES += "virtual/obmc-system-mgmt"
+PROVIDES += "virtual/obmc-ipmi-oem"
+
+RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
+RPROVIDES:${PN}-fans += "virtual-obmc-fan-mgmt"
+RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
+RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt"
+RPROVIDES:${PN}-ipmi-oem += "virtual-obmc-ipmi-oem"
+
+SUMMARY:${PN}-chassis = "Inventec Chassis"
+RDEPENDS:${PN}-chassis = " \
+        x86-power-control \
+        obmc-host-failure-reboots \
+        "
+
+SUMMARY:${PN}-fans = "Inventec Fans"
+RDEPENDS:${PN}-fans = " \
+        phosphor-pid-control \
+        "
+
+SUMMARY:${PN}-flash = "Inventec Flash"
+RDEPENDS:${PN}-flash = " \
+        obmc-control-bmc \
+        phosphor-ipmi-blobs \
+        phosphor-ipmi-flash \
+        "
+
+SUMMARY:${PN}-system = "Inventec System"
+RDEPENDS:${PN}-system = " \
+        bmcweb \
+        entity-manager \
+        dbus-sensors \
+        webui-vue \
+        phosphor-snmp \
+        phosphor-sel-logger \
+        phosphor-gpio-monitor \
+        phosphor-gpio-monitor-monitor \
+        vlan \
+        "
diff --git a/meta-inventec/meta-common/recipes-inventec/packagegroups/packagegroup-obmc-apps.bbappend b/meta-inventec/meta-common/recipes-inventec/packagegroups/packagegroup-obmc-apps.bbappend
new file mode 100644
index 0000000..73a788c
--- /dev/null
+++ b/meta-inventec/meta-common/recipes-inventec/packagegroups/packagegroup-obmc-apps.bbappend
@@ -0,0 +1,14 @@
+RDEPENDS:${PN}-extras:remove = " \
+       phosphor-rest \
+       phosphor-gevent \
+       "
+
+#Add python utility.(e.g gpioutil,...)
+RDEPENDS:${PN}-extrasdevtools:append += " ipmitool"
+RDEPENDS:${PN}-extrasdevtools:append += " openssh-sftp-server"
+RDEPENDS:${PN}-extras += " python3-smbus"
+
+#Install publickey for image file verification
+RDEPENDS:${PN}-extras += " phosphor-image-signing"
+
+RDEPENDS:${PN}-health-monitor:remove:transformers = "phosphor-health-monitor"
diff --git a/meta-inventec/meta-transformers/conf/bblayers.conf.sample b/meta-inventec/meta-transformers/conf/bblayers.conf.sample
new file mode 100755
index 0000000..c779683
--- /dev/null
+++ b/meta-inventec/meta-transformers/conf/bblayers.conf.sample
@@ -0,0 +1,38 @@
+# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+LCONF_VERSION = "8"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-poky \
+  ##OEROOT##/meta-openembedded/meta-oe \
+  ##OEROOT##/meta-openembedded/meta-networking \
+  ##OEROOT##/meta-openembedded/meta-perl \
+  ##OEROOT##/meta-openembedded/meta-python \
+  ##OEROOT##/meta-openembedded/meta-webserver \
+  ##OEROOT##/meta-phosphor \
+  ##OEROOT##/meta-aspeed \
+  ##OEROOT##/meta-x86 \
+  ##OEROOT##/meta-openpower \
+  ##OEROOT##/meta-inventec \
+  ##OEROOT##/meta-inventec/meta-transformers \
+"
+BBLAYERS_NON_REMOVABLE ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-poky \
+  ##OEROOT##/meta-openembedded/meta-oe \
+  ##OEROOT##/meta-openembedded/meta-networking \
+  ##OEROOT##/meta-openembedded/meta-perl \
+  ##OEROOT##/meta-openembedded/meta-python \
+  ##OEROOT##/meta-openembedded/meta-webserver \
+  ##OEROOT##/meta-phosphor \
+  ##OEROOT##/meta-aspeed \
+  ##OEROOT##/meta-x86 \
+  ##OEROOT##/meta-openpower \
+  ##OEROOT##/meta-inventec \
+  ##OEROOT##/meta-inventec/meta-transformers \
+"
+
diff --git a/meta-inventec/meta-transformers/conf/conf-notes.txt b/meta-inventec/meta-transformers/conf/conf-notes.txt
new file mode 100755
index 0000000..43d4ab0
--- /dev/null
+++ b/meta-inventec/meta-transformers/conf/conf-notes.txt
@@ -0,0 +1,2 @@
+Common targets are:
+    obmc-phosphor-image
diff --git a/meta-inventec/meta-transformers/conf/layer.conf b/meta-inventec/meta-transformers/conf/layer.conf
new file mode 100755
index 0000000..35ae68d
--- /dev/null
+++ b/meta-inventec/meta-transformers/conf/layer.conf
@@ -0,0 +1,11 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "transformers"
+BBFILE_PATTERN_transformers = "^${LAYERDIR}/"
+BBFILE_PRIORITY_transformers = "7"
+LAYERSERIES_COMPAT_transformers = "hardknott honister"
diff --git a/meta-inventec/meta-transformers/conf/local.conf.sample b/meta-inventec/meta-transformers/conf/local.conf.sample
new file mode 100755
index 0000000..f3ac2e2
--- /dev/null
+++ b/meta-inventec/meta-transformers/conf/local.conf.sample
@@ -0,0 +1,255 @@
+#
+# This file is your local configuration file and is where all local user settings
+# are placed. The comments in this file give some guide to the options a new user
+# to the system might want to change but pretty much any configuration option can
+# be set in this file. More adventurous users can look at local.conf.extended
+# which contains other examples of configuration which can be placed in this file
+# but new users likely won't need any of them initially.
+#
+# Lines starting with the '#' character are commented out and in some cases the
+# default values are provided as comments to show people example syntax. Enabling
+# the option is a question of removing the # character and making any change to the
+# variable as required.
+
+#
+# Machine Selection
+#
+MACHINE ??= "transformers"
+
+#
+# Where to place downloads
+#
+# During a first build the system will download many different source code tarballs
+# from various upstream projects. This can take a while, particularly if your network
+# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
+# can preserve this directory to speed up this part of subsequent builds. This directory
+# is safe to share between multiple builds on the same machine too.
+#
+# The default is a downloads directory under TOPDIR which is the build directory.
+#
+#DL_DIR ?= "${TOPDIR}/downloads"
+
+#
+# Where to place shared-state files
+#
+# BitBake has the capability to accelerate builds based on previously built output.
+# This is done using "shared state" files which can be thought of as cache objects
+# and this option determines where those files are placed.
+#
+# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
+# from these files if no changes were made to the configuration. If changes were made
+# to the configuration, only shared state files where the state was still valid would
+# be used (done using checksums).
+#
+# The default is a sstate-cache directory under TOPDIR.
+#
+#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
+
+#
+# Where to place the build output
+#
+# This option specifies where the bulk of the building work should be done and
+# where BitBake should place its temporary files and output. Keep in mind that
+# this includes the extraction and compilation of many applications and the toolchain
+# which can use Gigabytes of hard disk space.
+#
+# The default is a tmp directory under TOPDIR.
+#
+#TMPDIR = "${TOPDIR}/tmp"
+
+#
+# Default policy config
+#
+# The distribution setting controls which policy settings are used as defaults.
+# The default value is fine for general Yocto project use, at least initially.
+# Ultimately when creating custom policy, people will likely end up subclassing
+# these defaults.
+#
+DISTRO ?= "openbmc-openpower"
+# As an example of a subclass there is a "bleeding" edge policy configuration
+# where many versions are set to the absolute latest code from the upstream
+# source control systems. This is just mentioned here as an example, its not
+# useful to most new users.
+# DISTRO ?= "poky-bleeding"
+
+#
+# Package Management configuration
+#
+# This variable lists which packaging formats to enable. Multiple package backends
+# can be enabled at once and the first item listed in the variable will be used
+# to generate the root filesystems.
+# Options are:
+#  - 'package_deb' for debian style deb files
+#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
+#  - 'package_rpm' for rpm style packages
+# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
+# We default to rpm:
+PACKAGE_CLASSES ?= "package_rpm"
+
+#
+# SDK target architecture
+#
+# This variable specifies the architecture to build SDK items for and means
+# you can build the SDK packages for architectures other than the machine you are
+# running the build on (i.e. building i686 packages on an x86_64 host).
+# Supported values are i686, x86_64, aarch64
+#SDKMACHINE ?= "i686"
+
+SANITY_TESTED_DISTROS:append ?= " RedHatEnterpriseWorkstation-6.*"
+
+#
+# Extra image configuration defaults
+#
+# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
+# images. Some of these options are added to certain image types automatically. The
+# variable can contain the following options:
+#  "dbg-pkgs"       - add -dbg packages for all installed packages
+#                     (adds symbol information for debugging/profiling)
+#  "src-pkgs"       - add -src packages for all installed packages
+#                     (adds source code for debugging)
+#  "dev-pkgs"       - add -dev packages for all installed packages
+#                     (useful if you want to develop against libs in the image)
+#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
+#                     (useful if you want to run the package test suites)
+#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
+#  "tools-debug"    - add debugging tools (gdb, strace)
+#  "eclipse-debug"  - add Eclipse remote debugging support
+#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
+#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
+#  "debug-tweaks"   - make an image suitable for development
+#                     e.g. ssh root access has a blank password
+# There are other application targets that can be used here too, see
+# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
+# We default to enabling the debugging tweaks.
+EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
+
+#
+# Additional image features
+#
+# The following is a list of additional classes to use when building images which
+# enable extra features. Some available options which can be included in this variable
+# are:
+#   - 'buildstats' collect build statistics
+USER_CLASSES ?= "buildstats"
+
+#
+# Runtime testing of images
+#
+# The build system can test booting virtual machine images under qemu (an emulator)
+# after any root filesystems are created and run tests against those images. It can also
+# run tests against any SDK that are built. To enable this uncomment these lines.
+# See classes/test{image,sdk}.bbclass for further details.
+#IMAGE_CLASSES += "testimage testsdk"
+#TESTIMAGE_AUTO:qemuall = "1"
+
+#
+# Interactive shell configuration
+#
+# Under certain circumstances the system may need input from you and to do this it
+# can launch an interactive shell. It needs to do this since the build is
+# multithreaded and needs to be able to handle the case where more than one parallel
+# process may require the user's attention. The default is iterate over the available
+# terminal types to find one that works.
+#
+# Examples of the occasions this may happen are when resolving patches which cannot
+# be applied, to use the devshell or the kernel menuconfig
+#
+# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
+# Note: currently, Konsole support only works for KDE 3.x due to the way
+# newer Konsole versions behave
+#OE_TERMINAL = "auto"
+# By default disable interactive patch resolution (tasks will just fail instead):
+PATCHRESOLVE = "noop"
+
+#
+# Disk Space Monitoring during the build
+#
+# Monitor the disk space during the build. If there is less that 1GB of space or less
+# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
+# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard abort
+# of the build. The reason for this is that running completely out of space can corrupt
+# files and damages the build in ways which may not be easily recoverable.
+# It's necessary to monitor /tmp, if there is no space left the build will fail
+# with very exotic errors.
+BB_DISKMON_DIRS ??= "\
+    STOPTASKS,${TMPDIR},1G,100K \
+    STOPTASKS,${DL_DIR},1G,100K \
+    STOPTASKS,${SSTATE_DIR},1G,100K \
+    STOPTASKS,/tmp,100M,100K \
+    ABORT,${TMPDIR},100M,1K \
+    ABORT,${DL_DIR},100M,1K \
+    ABORT,${SSTATE_DIR},100M,1K \
+    ABORT,/tmp,10M,1K"
+
+#
+# Shared-state files from other locations
+#
+# As mentioned above, shared state files are prebuilt cache data objects which can be
+# used to accelerate build time. This variable can be used to configure the system
+# to search other mirror locations for these objects before it builds the data itself.
+#
+# This can be a filesystem directory, or a remote url such as http or ftp. These
+# would contain the sstate-cache results from previous builds (possibly from other
+# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
+# cache locations to check for the shared objects.
+# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
+# at the end as shown in the examples below. This will be substituted with the
+# correct path within the directory structure.
+#SSTATE_MIRRORS ?= "\
+#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
+#file://.* file:///some/local/dir/sstate/PATH"
+
+#
+# Yocto Project SState Mirror
+#
+# The Yocto Project has prebuilt artefacts available for its releases, you can enable
+# use of these by uncommenting the following line. This will mean the build uses
+# the network to check for artefacts at the start of builds, which does slow it down
+# equally, it will also speed up the builds by not having to build things if they are
+# present in the cache. It assumes you can download something faster than you can build it
+# which will depend on your network.
+#
+#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH"
+
+#
+# Qemu configuration
+#
+# By default native qemu will build with a builtin VNC server where graphical output can be
+# seen. The line below enables the SDL UI frontend too.
+PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
+# By default libsdl2-native will be built, if you want to use your host's libSDL instead of
+# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
+#ASSUME_PROVIDED += "libsdl2-native"
+
+# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds
+# a handy set of menus for controlling the emulator.
+#PACKAGECONFIG:append:pn-qemu-system-native = " gtk+"
+
+#
+# Hash Equivalence
+#
+# Enable support for automatically running a local hash equivalence server and
+# instruct bitbake to use a hash equivalence aware signature generator. Hash
+# equivalence improves reuse of sstate by detecting when a given sstate
+# artifact can be reused as equivalent, even if the current task hash doesn't
+# match the one that generated the artifact.
+#
+# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
+#
+#BB_HASHSERVE = "auto"
+#BB_SIGNATURE_HANDLER = "OEEquivHash"
+
+#
+# Memory Resident Bitbake
+#
+# Bitbake's server component can stay in memory after the UI for the current command
+# has completed. This means subsequent commands can run faster since there is no need
+# for bitbake to reload cache files and so on. Number is in seconds, after which the
+# server will shut down.
+#
+#BB_SERVER_TIMEOUT = "60"
+
+# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
+# track the version of this file when it was generated. This can safely be ignored if
+# this doesn't mean anything to you.
+CONF_VERSION = "2"
diff --git a/meta-inventec/meta-transformers/conf/machine/platform_configs.inc b/meta-inventec/meta-transformers/conf/machine/platform_configs.inc
new file mode 100644
index 0000000..48f1065
--- /dev/null
+++ b/meta-inventec/meta-transformers/conf/machine/platform_configs.inc
@@ -0,0 +1,21 @@
+# This include file is aim to pass variables to bb/bb.apppend files,
+# such as sysguid tool, and easily maintain platform settings
+
+
+##################### Configure default EEPROM setting #####################
+### The I2C bus is "0 based, decimal"
+### The address and offset are "hexcimal"
+### e.g.
+###     EEPROM_GUID_I2C_BUS = "3"
+###     EEPROM_GUID_I2C_ADDRESS = "0x54"
+###     EEPROM_GUID_OFFSET = "0x1F00"
+
+EEPROM_GUID_I2C_BUS= "3"
+EEPROM_GUID_I2C_ADDRESS = "0x54"
+EEPROM_GUID_OFFSET = "0x1F00"
+
+EEPROM_MAC_I2C_BUS = "14"
+EEPROM_MAC_I2C_ADDRESS = "0x50"
+EEPROM_MAC_OFFSET = "0x1000"
+
+############################################################################
diff --git a/meta-inventec/meta-transformers/conf/machine/transformers.conf b/meta-inventec/meta-transformers/conf/machine/transformers.conf
new file mode 100755
index 0000000..24cc267
--- /dev/null
+++ b/meta-inventec/meta-transformers/conf/machine/transformers.conf
@@ -0,0 +1,18 @@
+KMACHINE = "aspeed"
+KERNEL_DEVICETREE = "${KMACHINE}-bmc-inventec-${MACHINE}.dtb"
+
+require conf/machine/include/ast2600.inc
+require conf/machine/include/obmc-bsp-common.inc
+require conf/machine/include/inventec.inc
+
+UBOOT_MACHINE = "transformers-ast2600_defconfig"
+UBOOT_DEVICETREE = "ast2600-transformers"
+
+# To build a 64MB image, set FLASH_SIZE value to "65536".
+FLASH_SIZE = "65536"
+# Overwrite flash offsets
+FLASH_UBOOT_OFFSET = "0"
+FLASH_KERNEL_OFFSET = "1024"
+FLASH_ROFS_OFFSET = "10240"
+FLASH_RWFS_OFFSET = "43008"
+
diff --git a/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-aspeed-sdk/transformers-ast2600.cfg b/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-aspeed-sdk/transformers-ast2600.cfg
new file mode 100644
index 0000000..2add540
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-aspeed-sdk/transformers-ast2600.cfg
@@ -0,0 +1,2 @@
+CONFIG_CMD_EEPROM=y
+CONFIG_DEFAULT_DEVICE_TREE="ast2600-transformers"
diff --git a/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend b/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
new file mode 100644
index 0000000..fc3f354
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${BPN}:"
+
+
+SRC_URI:append = " file://transformers-ast2600.cfg \
+                 "
diff --git a/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-fw-utils-aspeed-sdk_%.bbappend b/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-fw-utils-aspeed-sdk_%.bbappend
new file mode 100644
index 0000000..405f9a5
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-bsp/u-boot/u-boot-fw-utils-aspeed-sdk_%.bbappend
@@ -0,0 +1,15 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${BPN}:"
+# In order to reuse and easily maintain, we use the same patch files among u-boot-aspeed-sdk
+FILESEXTRAPATHS:append := "${THISDIR}/u-boot-aspeed-sdk:"
+
+
+SRC_URI:append += "file://fw_env.config \
+                   file://transformers-ast2600.cfg \
+                 "
+
+do_install:append () {
+        install -d ${D}${sysconfdir}
+        install -m 0644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
+        install -m 0644 ${WORKDIR}/fw_env.config ${S}/tools/env/fw_env.config
+}
+
diff --git a/meta-inventec/meta-transformers/recipes-kernel/linux/linux-aspeed/transformers.cfg b/meta-inventec/meta-transformers/recipes-kernel/linux/linux-aspeed/transformers.cfg
new file mode 100644
index 0000000..5facc5e
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-kernel/linux/linux-aspeed/transformers.cfg
@@ -0,0 +1,318 @@
+CONFIG_KERNEL_XZ=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PSI=y
+CONFIG_PSI_DEFAULT_DISABLED=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_CGROUPS=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+# CONFIG_UID16 is not set
+# CONFIG_SYSFS_SYSCALL is not set
+# CONFIG_AIO is not set
+CONFIG_BPF_SYSCALL=y
+CONFIG_EMBEDDED=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+CONFIG_SLAB_FREELIST_RANDOM=y
+CONFIG_ARCH_MULTI_V6=y
+CONFIG_ARCH_ASPEED=y
+CONFIG_MACH_ASPEED_G6=y
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_SMP=y
+# CONFIG_ARM_CPU_TOPOLOGY is not set
+CONFIG_VMSPLIT_2G=y
+CONFIG_NR_CPUS=2
+CONFIG_HIGHMEM=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+CONFIG_SECCOMP=y
+# CONFIG_ATAGS is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_KEXEC=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_KERNEL_MODE_NEON=y
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_JUMP_LABEL=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEBUG_FS is not set
+# CONFIG_MQ_IOSCHED_DEADLINE is not set
+# CONFIG_MQ_IOSCHED_KYBER is not set
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_COMPACTION is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_DIAG is not set
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_ADVANCED is not set
+CONFIG_VLAN_8021Q=y
+CONFIG_NET_NCSI=y
+# CONFIG_WIRELESS is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_MTD=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_PARTITIONED_MASTER=y
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+CONFIG_SPI_ASPEED_SMC=y
+CONFIG_SPI_ASPEED=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=y
+CONFIG_EEPROM_AT24=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_DM_VERITY=y
+CONFIG_NETDEVICES=y
+CONFIG_NETCONSOLE=y
+# CONFIG_NET_VENDOR_ALACRITECH is not set
+# CONFIG_NET_VENDOR_AMAZON is not set
+# CONFIG_NET_VENDOR_AQUANTIA is not set
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_VENDOR_AURORA is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CADENCE is not set
+# CONFIG_NET_VENDOR_CAVIUM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_CORTINA is not set
+# CONFIG_NET_VENDOR_EZCHIP is not set
+CONFIG_FTGMAC100=y
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MELLANOX is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_MICROSEMI is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_NETRONOME is not set
+# CONFIG_NET_VENDOR_NI is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_RENESAS is not set
+# CONFIG_NET_VENDOR_ROCKER is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_SOCIONEXT is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_BROADCOM_PHY=y
+CONFIG_REALTEK_PHY=y
+# CONFIG_USB_NET_DRIVERS is not set
+# CONFIG_WLAN is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_GPIO_POLLED=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_SERIO is not set
+# CONFIG_VT is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=6
+CONFIG_SERIAL_8250_RUNTIME_UARTS=6
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_ASPEED_VUART=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_ASPEED_KCS_IPMI_BMC=y
+CONFIG_ASPEED_BT_IPMI_BMC=y
+CONFIG_IPMB_DEVICE_INTERFACE=y
+CONFIG_HW_RANDOM_TIMERIOMEM=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX=y
+CONFIG_I2C_MUX_PCA9541=y
+CONFIG_I2C_MUX_PCA954x=y
+CONFIG_I2C_ASPEED=y
+CONFIG_I2C_FSI=y
+CONFIG_I2C_SLAVE=y
+CONFIG_SPI=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_ASPEED=y
+CONFIG_GPIO_ASPEED_SGPIO=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_GPIO=y
+CONFIG_W1_SLAVE_THERM=y
+CONFIG_SENSORS_ASPEED=y
+CONFIG_SENSORS_IIO_HWMON=y
+CONFIG_SENSORS_LM75=y
+CONFIG_SENSORS_NCT7904=y
+CONFIG_SENSORS_OCC_P8_I2C=y
+CONFIG_SENSORS_OCC_P9_SBE=y
+//CONFIG_SENSORS_PECI_CPUTEMP is not set
+//CONFIG_SENSORS_PECI_DIMMTEMP is not set
+CONFIG_PMBUS=y
+CONFIG_SENSORS_ADM1275=y
+CONFIG_SENSORS_IBM_CFFPS=y
+CONFIG_SENSORS_IR35221=y
+CONFIG_SENSORS_IR38064=y
+CONFIG_SENSORS_ISL68137=y
+CONFIG_SENSORS_LM25066=y
+CONFIG_SENSORS_MAX31785=y
+CONFIG_SENSORS_UCD9000=y
+CONFIG_SENSORS_UCD9200=y
+CONFIG_SENSORS_TMP421=y
+CONFIG_SENSORS_TMP468=y
+CONFIG_SENSORS_W83773G=y
+CONFIG_WATCHDOG_SYSFS=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_ASPEED=y
+CONFIG_DRM=y
+CONFIG_DRM_ASPEED_GFX=y
+CONFIG_USB=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ASPEED_VHUB=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_OF_ASPEED=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLASS_FLASH=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PCA955X=y
+CONFIG_LEDS_PCA955X_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_EDAC=y
+# CONFIG_EDAC_LEGACY_SYSFS is not set
+CONFIG_EDAC_ASPEED=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_PCF8523=y
+CONFIG_RTC_DRV_RV8803=y
+CONFIG_RTC_DRV_ASPEED=y
+# CONFIG_VIRTIO_MENU is not set
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_ASPEED_LPC_CTRL=y
+CONFIG_ASPEED_LPC_SNOOP=y
+CONFIG_ASPEED_P2A_CTRL=y
+CONFIG_IIO=y
+CONFIG_ASPEED_ADC=y
+CONFIG_MAX1363=y
+CONFIG_BMP280=y
+CONFIG_DPS310=y
+CONFIG_RAS=y
+CONFIG_FSI=y
+CONFIG_FSI_MASTER_HUB=y
+CONFIG_FSI_MASTER_ASPEED=y
+CONFIG_FSI_SCOM=y
+CONFIG_FSI_SBEFIFO=y
+CONFIG_FSI_OCC=y
+CONFIG_PECI=y
+CONFIG_PECI_ASPEED=y
+CONFIG_PECI_CHARDEV=y
+CONFIG_MFD_INTEL_PECI_CLIENT=y
+CONFIG_SENSORS_PECI_CPUTEMP=y
+CONFIG_SENSORS_PECI_DIMMTEMP=y
+CONFIG_EXT4_FS=y
+CONFIG_FANOTIFY=y
+CONFIG_OVERLAY_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+# CONFIG_JFFS2_FS_WRITEBUFFER is not set
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_UBIFS_FS=y
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_XZ=y
+CONFIG_SQUASHFS_ZSTD=y
+# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_HARDENED_USERCOPY=y
+CONFIG_FORTIFY_SOURCE=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_USER_API_HASH=y
+# CONFIG_CRYPTO_HW is not set
+# CONFIG_XZ_DEC_X86 is not set
+# CONFIG_XZ_DEC_POWERPC is not set
+# CONFIG_XZ_DEC_IA64 is not set
+# CONFIG_XZ_DEC_SPARC is not set
+CONFIG_PRINTK_TIME=y
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_INFO_REDUCED=y
+CONFIG_DEBUG_INFO_DWARF4=y
+CONFIG_GDB_SCRIPTS=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
+CONFIG_WQ_WATCHDOG=y
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_TIMEOUT=-1
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_SCHED_STACK_END_CHECK=y
+CONFIG_FUNCTION_TRACER=y
+# CONFIG_RUNTIME_TESTING_MENU is not set
+CONFIG_DEBUG_WX=y
+CONFIG_DEBUG_USER=y
+#CONFIG_ASPEED_JTAG is not set
+CONFIG_SENSORS_ASPEED_PWM_TECHOMETER=y
+CONFIG_THERMAL=y
+#CONFIG_MDIO_DEVICE=y
+#CONFIG_MDIO_BUS=y
+CONFIG_MDIO_ASPEED=y
+CONFIG_ASPEED_ESPI_SLAVE=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_SPI_ASPEED=y
+CONFIG_JTAG=y
+CONFIG_JTAG_ASPEED=y
+CONFIG_VIRTUAL=y
+
+CONFIG_USB_U_ETHER=y
+CONFIG_USB_F_ECM=y
+CONFIG_USB_F_SUBSET=y
+CONFIG_USB_F_RNDIS=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
diff --git a/meta-inventec/meta-transformers/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-inventec/meta-transformers/recipes-kernel/linux/linux-aspeed_%.bbappend
new file mode 100644
index 0000000..dd8698d
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-kernel/linux/linux-aspeed_%.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
+
+SRC_URI:append = " file://transformers.cfg \
+                 "
diff --git a/meta-inventec/meta-transformers/recipes-phosphor/image/obmc-phosphor-image.bbappend b/meta-inventec/meta-transformers/recipes-phosphor/image/obmc-phosphor-image.bbappend
new file mode 100644
index 0000000..39a681e
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-phosphor/image/obmc-phosphor-image.bbappend
@@ -0,0 +1,13 @@
+inherit extrausers
+
+EXTRA_USERS_PARAMS:append = " \
+useradd -e '' -ou 0 -d /home/root -G priv-admin,root,sudo,ipmi,web,redfish -p 'gzW59equAcJAg' sysadmin; \
+useradd -e '' -ou 0 -d /home/root -G priv-admin,root,sudo,ipmi,web,redfish -p 'kFdHdjRkot8KQ' admin; \
+"
+OBMC_IMAGE_EXTRA_INSTALL:append += " openssh-sftp-server"
+OBMC_IMAGE_EXTRA_INSTALL:append += " phosphor-ipmi-ipmb"
+OBMC_IMAGE_EXTRA_INSTALL:append += " python3-smbus"
+OBMC_IMAGE_EXTRA_INSTALL:append += " ipmitool"
+#BMC_IMAGE_EXTRA_INSTALL:append += " rest-dbus"
+OBMC_IMAGE_EXTRA_INSTALL:append += " mmc-utils"
+OBMC_IMAGE_EXTRA_INSTALL:append += " transformers-init"
diff --git a/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init.bb b/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init.bb
new file mode 100644
index 0000000..3e403f7
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init.bb
@@ -0,0 +1,24 @@
+SUMMARY = "transformers init service"
+DESCRIPTION = "Essential init commands for transformers"
+PR = "r1"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+RDEPENDS:${PN} += "libsystemd"
+
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/transformers-init:"
+SRC_URI += "file://transformers-init.sh"
+
+S = "${WORKDIR}"
+
+do_install() {
+        install -d ${D}${sbindir}
+        install -m 0755 transformers-init.sh ${D}${sbindir}
+}
+
+SYSTEMD_SERVICE:${PN} += "transformers-init.service"
diff --git a/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init/transformers-init.service b/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init/transformers-init.service
new file mode 100644
index 0000000..235cd7e
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init/transformers-init.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Essential init commands for transformers
+
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=/usr/sbin/transformers-init.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init/transformers-init.sh b/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init/transformers-init.sh
new file mode 100644
index 0000000..669a399
--- /dev/null
+++ b/meta-inventec/meta-transformers/recipes-phosphor/init/transformers-init/transformers-init.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Init GPIO setting
+
+gpioset `gpiofind BMC_READY`=0
+echo BMC ready !!
+gpioset `gpiofind RST_BMC_SGPIO`=1
+echo Release reset SGPIO !!