meta-ampere: Initial AmpereOne(TM) Mt. Mitchell's non-DC-SCM BMC support
Add new Mt.Mitchell platform with basic features so that it can be
compiled and works.
Tested:
1. Compile for Mt.Mitchell successful.
2. Flash and check for the firmware can boot on the Mt.Mitchell
non-DC-SCM system without issue
Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
Change-Id: I8dc9db9029b27c0c6325c31d368cdbb614a3c8b6
diff --git a/meta-ampere/meta-mitchell/conf/layer.conf b/meta-ampere/meta-mitchell/conf/layer.conf
new file mode 100644
index 0000000..3855afb
--- /dev/null
+++ b/meta-ampere/meta-mitchell/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 += "mitchell-layer"
+BBFILE_PATTERN_mitchell-layer := "^${LAYERDIR}/"
+LAYERSERIES_COMPAT_mitchell-layer = "kirkstone langdale"
+
diff --git a/meta-ampere/meta-mitchell/conf/machine/mtmitchell.conf b/meta-ampere/meta-mitchell/conf/machine/mtmitchell.conf
new file mode 100644
index 0000000..85e6f4f
--- /dev/null
+++ b/meta-ampere/meta-mitchell/conf/machine/mtmitchell.conf
@@ -0,0 +1,42 @@
+KMACHINE = "aspeed"
+KERNEL_DEVICETREE = "${KMACHINE}-bmc-ampere-mtmitchell.dtb"
+UBOOT_DEVICETREE = "ast2600-bletchley"
+UBOOT_MACHINE = "ast2600_openbmc_spl_defconfig"
+SPL_BINARY = "spl/u-boot-spl.bin"
+SOCSEC_SIGN_ENABLE = "0"
+
+SERIAL_CONSOLES = "115200;ttyS4"
+
+require conf/machine/include/ast2600.inc
+require conf/machine/include/obmc-bsp-common.inc
+
+FLASH_SIZE = "65536"
+VOLATILE_LOG_DIR = "no"
+
+MACHINE_FEATURES += "\
+ obmc-bmc-state-mgmt \
+ obmc-chassis-state-mgmt \
+ obmc-host-ipmi \
+ obmc-host-state-mgmt \
+ obmc-phosphor-chassis-mgmt \
+ obmc-phosphor-flash-mgmt \
+ "
+
+OBMC_IMAGE_EXTRA_INSTALL:append = " \
+ ampere-utils \
+ ampere-usbnet \
+ phosphor-misc-usb-ctrl \
+ ampere-platform-init \
+ ampere-ipmi-oem \
+ phosphor-ipmi-blobs \
+ phosphor-ipmi-blobs-binarystore \
+ util-linux \
+ "
+
+PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-obmc-ampere-apps"
+PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-obmc-ampere-apps"
+PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-obmc-ampere-apps"
+PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw = "phosphor-ipmi-ssif"
+PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "ampere-led-manager-config-native"
+
+OVERRIDES .= ":ampere"
diff --git a/meta-ampere/meta-mitchell/conf/templates/default/bblayers.conf.sample b/meta-ampere/meta-mitchell/conf/templates/default/bblayers.conf.sample
new file mode 100644
index 0000000..a6e860f
--- /dev/null
+++ b/meta-ampere/meta-mitchell/conf/templates/default/bblayers.conf.sample
@@ -0,0 +1,31 @@
+# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+LCONF_VERSION = "8"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+ ##OEROOT##/meta \
+ ##OEROOT##/meta-openembedded/meta-oe \
+ ##OEROOT##/meta-openembedded/meta-networking \
+ ##OEROOT##/meta-openembedded/meta-perl \
+ ##OEROOT##/meta-openembedded/meta-python \
+ ##OEROOT##/meta-security \
+ ##OEROOT##/meta-phosphor \
+ ##OEROOT##/meta-aspeed \
+ ##OEROOT##/meta-ampere \
+ ##OEROOT##/meta-ampere/meta-mitchell \
+ "
+BBLAYERS_NON_REMOVABLE ?= " \
+ ##OEROOT##/meta \
+ ##OEROOT##/meta-openembedded/meta-oe \
+ ##OEROOT##/meta-openembedded/meta-networking \
+ ##OEROOT##/meta-openembedded/meta-perl \
+ ##OEROOT##/meta-openembedded/meta-python \
+ ##OEROOT##/meta-security \
+ ##OEROOT##/meta-phosphor \
+ ##OEROOT##/meta-aspeed \
+ ##OEROOT##/meta-ampere \
+ ##OEROOT##/meta-ampere/meta-mitchell \
+ "
diff --git a/meta-ampere/meta-mitchell/conf/templates/default/conf-notes.txt b/meta-ampere/meta-mitchell/conf/templates/default/conf-notes.txt
new file mode 100644
index 0000000..9b3c01a
--- /dev/null
+++ b/meta-ampere/meta-mitchell/conf/templates/default/conf-notes.txt
@@ -0,0 +1,2 @@
+Common targets are:
+ obmc-phosphor-image
diff --git a/meta-ampere/meta-mitchell/conf/templates/default/local.conf.sample b/meta-ampere/meta-mitchell/conf/templates/default/local.conf.sample
new file mode 100644
index 0000000..b852ff0
--- /dev/null
+++ b/meta-ampere/meta-mitchell/conf/templates/default/local.conf.sample
@@ -0,0 +1,214 @@
+#
+# 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.
+#
+# 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 ??= "mtmitchell"
+
+#
+# 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-phosphor"
+# 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 ipk:
+PACKAGE_CLASSES ?= "package_ipk"
+
+#
+# SDK/ADT target architecture
+#
+# This variable specifies the architecture to build SDK/ADT 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 and x86_64
+#SDKMACHINE ?= "i686"
+
+SANITY_TESTED_DISTROS:append ?= " *"
+
+#
+# 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)
+# "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, exmap, 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
+# - 'image-swab' to perform host system intrusion detection
+# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
+# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
+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. To
+# enable this uncomment this line. See classes/testimage(-auto).bbclass for
+# further details.
+#TEST_IMAGE = "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 that 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 \
+ HALT,${TMPDIR},100M,1K \
+ HALT,${DL_DIR},100M,1K \
+ HALT,${SSTATE_DIR},100M,1K \
+ HALT,/tmp,10M,1K"
+
+#
+# Shared-state files from other locations
+#
+# As mentioned above, shared state files are prebuilt cache data objects which can
+# 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"
+
+
+#
+# Qemu configuration
+#
+# By default qemu will build with a builtin VNC server where graphical output can be
+# seen. The two lines below enable the SDL backend too. This assumes there is a
+# libsdl library available on your build system.
+#PACKAGECONFIG_append_pn-qemu-native = " sdl"
+#PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
+#ASSUME_PROVIDED += "libsdl-native"
+
+
+# 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-ampere/meta-mitchell/recipes-ampere/packagegroups/packagegroup-obmc-ampere-apps.bb b/meta-ampere/meta-mitchell/recipes-ampere/packagegroups/packagegroup-obmc-ampere-apps.bb
new file mode 100644
index 0000000..d1c7e7e
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/packagegroups/packagegroup-obmc-ampere-apps.bb
@@ -0,0 +1,53 @@
+SUMMARY = "OpenBMC for Ampere - Applications"
+PR = "r1"
+
+inherit packagegroup
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = " \
+ ${PN}-chassis \
+ ${PN}-flash \
+ ${PN}-system \
+ "
+
+PROVIDES += "virtual/obmc-chassis-mgmt"
+PROVIDES += "virtual/obmc-flash-mgmt"
+PROVIDES += "virtual/obmc-system-mgmt"
+
+RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
+RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
+RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt"
+
+SUMMARY:${PN}-chassis = "Ampere Chassis"
+RDEPENDS:${PN}-chassis = " \
+ obmc-phosphor-buttons-signals \
+ obmc-phosphor-buttons-handler \
+ obmc-op-control-power \
+ ampere-hostctrl \
+ phosphor-hostlogger \
+ phosphor-sel-logger \
+ phosphor-logging \
+ "
+
+SUMMARY:${PN}-system = "Ampere System"
+RDEPENDS:${PN}-system = " \
+ smbios-mdr \
+ "
+
+SUMMARY:${PN}-flash = "Ampere Flash"
+RDEPENDS:${PN}-flash = " \
+ phosphor-software-manager \
+ "
+
+RDEPENDS:${PN}-inventory:append = " \
+ dbus-sensors \
+ entity-manager \
+ "
+
+RDEPENDS:${PN}-extras:append = " \
+ webui-vue \
+ phosphor-virtual-sensor \
+ "
+RDEPENDS:${PN}-extras:remove = " phosphor-hwmon"
+
+VIRTUAL-RUNTIME_obmc-sensors-hwmon ?= "dbus-sensors"
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init.bb b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init.bb
new file mode 100644
index 0000000..dd5f599
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Phosphor OpenBMC Platform Init Service"
+DESCRIPTION = "Phosphor OpenBMC Platform Init Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+RDEPENDS:${PN} += "libsystemd"
+RDEPENDS:${PN} += "bash"
+
+SRC_URI = " \
+ file://ampere-platform-init.service \
+ file://ampere-bmc-heartbeat.service \
+ file://ampere_platform_init.sh \
+ file://ampere_bmc_heartbeat.sh \
+ file://${MACHINE}_platform_gpios_init.sh \
+ file://gpio-lib.sh \
+ "
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "ampere-platform-init.service ampere-bmc-heartbeat.service"
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/gpio-lib.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/ampere_platform_init.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/ampere_bmc_heartbeat.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/${MACHINE}_platform_gpios_init.sh ${D}${sbindir}/platform_gpios_init.sh
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/ampere-platform-init.service ${D}${systemd_unitdir}/system
+}
+
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere-bmc-heartbeat.service b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere-bmc-heartbeat.service
new file mode 100644
index 0000000..d491fd9
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere-bmc-heartbeat.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Ampere BMC heartbeat service
+Wants=obmc-mapper.target
+After=obmc-mapper.target
+
+[Service]
+Type=simple
+Restart=always
+ExecStart=/usr/bin/env ampere_bmc_heartbeat.sh
+SyslogIdentifier = "ampere-bmc-heartbeat"
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service
new file mode 100644
index 0000000..72a34cb
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service
@@ -0,0 +1,11 @@
+[Unit]
+Description = Ampere Platform Initialization
+
+[Service]
+Restart=no
+RemainAfterExit=true
+Type=oneshot
+ExecStart=/usr/sbin/ampere_platform_init.sh
+
+[Install]
+WantedBy=sysinit.target
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere_bmc_heartbeat.sh b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere_bmc_heartbeat.sh
new file mode 100644
index 0000000..5ecea31
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere_bmc_heartbeat.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# shellcheck disable=SC2154
+# shellcheck source=/dev/null
+
+source /usr/sbin/gpio-lib.sh
+
+value=0
+while true;
+do
+ if [[ $value -eq 0 ]]; then
+ value=1
+ gpio_name_set led-sw-hb 1
+ gpio_name_set led-bmc-hb 0
+ else
+ value=0
+ gpio_name_set led-sw-hb 0
+ gpio_name_set led-bmc-hb 1
+ fi
+ sleep 1s
+done
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh
new file mode 100644
index 0000000..33dc7ea
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# shellcheck disable=SC2154
+# shellcheck source=/dev/null
+
+source /usr/sbin/gpio-lib.sh
+source /usr/sbin/platform_gpios_init.sh
+
+#pre platform init function. implemented in platform_gpios_init.sh
+pre-platform-init
+
+# =======================================================
+# Setting default value for device sel and mux
+bootstatus=$(cat /sys/class/watchdog/watchdog0/bootstatus)
+if [ "$bootstatus" == '32' ]; then
+ echo "CONFIGURE: gpio pins to output high after AC power"
+ for gpioName in "${output_high_gpios_in_ac[@]}"; do
+ gpio_name_set "$gpioName" 1
+ done
+ echo "CONFIGURE: gpio pins to output low after AC power"
+ for gpioName in "${output_low_gpios_in_ac[@]}"; do
+ gpio_name_set "$gpioName" 0
+ done
+ echo "CONFIGURE: gpio pins to input after AC power"
+ for gpioName in "${input_gpios_in_ac[@]}"; do
+ gpio_name_input "$gpioName"
+ done
+fi
+
+# =======================================================
+# Setting default value for others gpio pins
+echo "CONFIGURE: gpio pins to output high"
+for gpioName in "${output_high_gpios_in_bmc_reboot[@]}"; do
+ gpio_name_set "$gpioName" 1
+done
+echo "CONFIGURE: gpio pins to output low"
+for gpioName in "${output_low_gpios_in_bmc_reboot[@]}"; do
+ gpio_name_set "$gpioName" 0
+done
+echo "CONFIGURE: gpio pins to input"
+for gpioName in "${input_gpios_in_bmc_reboot[@]}"; do
+ gpio_name_input "$gpioName"
+done
+
+#post platform init function. implemented in platform_gpios_init.sh
+post-platform-init
+
+exit 0
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/gpio-lib.sh b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/gpio-lib.sh
new file mode 100644
index 0000000..3e503c4
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/gpio-lib.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+# shellcheck disable=SC2154
+# shellcheck source=/dev/null
+
+# Configure GPIO as output and set its value
+AST2600_GPIO_BASE=(
+ 816
+ 780
+)
+
+function gpio_configure_output() {
+ echo "$1" > /sys/class/gpio/export
+ echo out > /sys/class/gpio/gpio"$1"/direction
+ echo "$2" > /sys/class/gpio/gpio"$1"/value
+ echo "$1" > /sys/class/gpio/unexport
+}
+
+function gpio_get_val() {
+ echo "$1" > /sys/class/gpio/export
+ cat /sys/class/gpio/gpio"$1"/value
+ echo "$1" > /sys/class/gpio/unexport
+}
+
+# Configure GPIO as input
+function gpio_configure_input() {
+ echo "$1" > /sys/class/gpio/export
+ echo "in" > /sys/class/gpio/gpio"$1"/direction
+ echo "$1" > /sys/class/gpio/unexport
+}
+
+function gpio_name_set()
+{
+ str=$(gpiofind "$1")
+ #Verify error code when run gpiofind
+ if [ "$?" == '1' ]; then
+ echo "Invalid gpio name $1"
+ else
+ gpioid=$(echo "$str"|cut -c 9)
+ offset=$(echo "$str"|cut -d " " -f 2)
+ gpioPin=$(("$offset" + ${AST2600_GPIO_BASE[$gpioid]}))
+ gpio_configure_output "$gpioPin" "$2"
+ fi
+}
+
+function gpio_name_get()
+{
+ str=$(gpiofind "$1")
+ #Verify error code when run gpiofind
+ if [ "$?" == '1' ]; then
+ echo "Invalid gpio name $1"
+ else
+ offset=$(echo "$str"|cut -d " " -f 2)
+ gpioid=$(echo "$str"|cut -c 9)
+ gpioPin=$(("$offset" + ${AST2600_GPIO_BASE[$gpioid]}))
+ gpio_get_val "$gpioPin"
+ fi
+}
+
+function gpio_name_input()
+{
+ str=$(gpiofind "$1")
+ #Verify error code when run gpiofind
+ if [ "$?" == '1' ]; then
+ echo "Invalid gpio name $1"
+ else
+ gpioid=$(echo "$str"|cut -c 9)
+ offset=$(echo "$str"|cut -d " " -f 2)
+ gpioPin=$(("$offset" + ${AST2600_GPIO_BASE[$gpioid]}))
+ gpio_configure_input "$gpioPin"
+ fi
+}
\ No newline at end of file
diff --git a/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/mtmitchell_platform_gpios_init.sh b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/mtmitchell_platform_gpios_init.sh
new file mode 100644
index 0000000..4c30466
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/mtmitchell_platform_gpios_init.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+# shellcheck disable=SC2154
+# shellcheck source=/dev/null
+
+source /usr/sbin/gpio-lib.sh
+
+function bind_rtc_driver() {
+ # If rtc device can not present, bind the device
+ if [[ ! -e /dev/rtc0 ]]; then
+ echo "Bind rtc driver"
+ echo 6-0051 > /sys/bus/i2c/drivers/rtc-pcf85063/bind
+ fi
+}
+
+function pre-platform-init() {
+ echo "Do pre platform init"
+}
+
+function post-platform-init() {
+ # gpio-leds is controlling bmc-ready, not by gpio
+ echo 1 > /sys/class/leds/bmc-ready/brightness
+
+ # Bind rtc driver
+ bind_rtc_driver
+}
+
+export output_high_gpios_in_ac=(
+ # add device enable, mux setting, device select gpios
+ "spi0-backup-sel"
+ "i2c-backup-sel"
+)
+
+export output_low_gpios_in_ac=(
+ # add device enable, mux setting, device select gpios
+ "spi0-program-sel"
+ "ocp-main-pwren"
+)
+
+export input_gpios_in_ac=(
+ # add device enable, mux setting, device select gpios
+)
+
+export output_high_gpios_in_bmc_reboot=(
+ "host0-sysreset-n"
+ "host0-pmin-n"
+ "vrd-sel"
+ "spd-sel"
+ "ext-high-temp-n"
+ "wd-disable-n"
+ "hpm-stby-rst-n"
+ "jtag-sel-s0"
+ "cpld-user-mode"
+ "jtag-srst-n"
+ "host0-shd-req-n"
+)
+
+export output_low_gpios_in_bmc_reboot=(
+ "rtc-battery-voltage-read-enable"
+ "s0-rtc-lock"
+ "hpm-fw-recovery"
+ "led-fault"
+ "spi-nor-access"
+ "host0-special-boot"
+)
+
+export input_gpios_in_bmc_reboot=(
+ "s0-vrd-fault-n"
+ "s1-vrd-fault-n"
+ "irq-n"
+ "presence-ps0"
+ "presence-ps1"
+ "hsc-12vmain-alt2-n"
+ "s0-pcp-oc-warn-n"
+ "s1-pcp-oc-warn-n"
+ "cpu-bios-recover"
+ "s0-heartbeat"
+ "hs-scout-proc-hot"
+ "s0-vr-hot-n"
+ "s1-vr-hot-n"
+ "hsc-12vmain-alt1-n"
+ "power-chassis-good"
+ "power-button"
+ "s0-ddr-save"
+ "soc-spi-nor-access"
+ "presence-cpu0"
+ "jtag-dbgr-prsnt-n"
+ "ps0-ac-loss-n"
+ "ps1-ac-loss-n"
+ "s1-ddr-save"
+ "sys-pgood"
+ "presence-cpu1"
+ "s0-fault-alert"
+ "s0-sys-auth-failure-n"
+ "host0-ready"
+ "ocp-pgood"
+ "s1-fault-alert"
+ "s1-fw-boot-ok"
+ "s0-spi-auth-fail-n"
+ "s1-sys-auth-failure-n"
+ "reset-button"
+ "ps0-pgood"
+ "ps1-pgood"
+ "s0-soc-pgood"
+)
diff --git a/meta-ampere/meta-mitchell/recipes-bsp/u-boot/u-boot-aspeed-sdk/ampere.cfg b/meta-ampere/meta-mitchell/recipes-bsp/u-boot/u-boot-aspeed-sdk/ampere.cfg
new file mode 100644
index 0000000..e88414a
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-bsp/u-boot/u-boot-aspeed-sdk/ampere.cfg
@@ -0,0 +1,2 @@
+CONFIG_PHY_NCSI=n
+
diff --git a/meta-ampere/meta-mitchell/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend b/meta-ampere/meta-mitchell/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
new file mode 100644
index 0000000..133671c
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
+
+SRC_URI += " \
+ file://ampere.cfg \
+ "
diff --git a/meta-ampere/meta-mitchell/recipes-kernel/linux/linux-aspeed/ampere.cfg b/meta-ampere/meta-mitchell/recipes-kernel/linux/linux-aspeed/ampere.cfg
new file mode 100644
index 0000000..1990bf4
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-kernel/linux/linux-aspeed/ampere.cfg
@@ -0,0 +1,36 @@
+#
+# BOM
+#
+CONFIG_RTC_DRV_PCF85063=y
+CONFIG_IIO_MUX=y
+CONFIG_MUX_GPIO=y
+CONFIG_I2C_MUX=y
+
+CONFIG_SENSORS_IIO_HWMON=y
+CONFIG_ASPEED_ADC=y
+CONFIG_SENSORS_LM75=y
+CONFIG_SENSORS_EMC1403=y
+CONFIG_LTC2497=y
+CONFIG_I2C_SLAVE=y
+CONFIG_SENSORS_ASPEED=y
+
+CONFIG_USB_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_ASPEED_VHUB=y
+CONFIG_USB_CONFIGFS_ECM=y
+
+CONFIG_HWMON=y
+
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_SENSORS_PWM_FAN=y
+CONFIG_SENSORS_ASPEED=y
+
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR=y
+
+CONFIG_SENSORS_MAX31790=y
+
+CONFIG_NET_NCSI=y
+CONFIG_NCSI_OEM_CMD_GET_MAC=y
diff --git a/meta-ampere/meta-mitchell/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-ampere/meta-mitchell/recipes-kernel/linux/linux-aspeed_%.bbappend
new file mode 100644
index 0000000..4cac8de
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-kernel/linux/linux-aspeed_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += " \
+ file://ampere.cfg \
+ "
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend b/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend
new file mode 100644
index 0000000..13ed796
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
+
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json b/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json
new file mode 100644
index 0000000..4998665
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json
@@ -0,0 +1,178 @@
+{
+ "0" : {
+ "name" : "IPMB",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "ipmb",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "1" : {
+ "name" : "eth0",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "lan-802.3",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "multi-session",
+ "is_ipmi" : true
+ }
+ },
+ "2" : {
+ "name" : "eth1",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "lan-802.3",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "multi-session",
+ "is_ipmi" : true
+ }
+ },
+ "3" : {
+ "name" : "usb0",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "lan-802.3",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "multi-session",
+ "is_ipmi" : true
+ }
+ },
+ "4" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "5" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "6" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "7" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "8" : {
+ "name" : "INTRABMC",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "oem",
+ "protocol_type" : "oem",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "9" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "10" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "11" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "12" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "13" : {
+ "name" : "RESERVED",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "reserved",
+ "protocol_type" : "na",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "14" : {
+ "name" : "SELF",
+ "is_valid" : false,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "ipmb",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "15" : {
+ "name" : "ipmi_ssif",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "smbus-v2.0",
+ "protocol_type" : "ipmi-smbus",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ }
+}
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json b/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json
new file mode 100644
index 0000000..8e89732
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json
@@ -0,0 +1,2 @@
+{"id": 32, "revision": 1, "addn_dev_support": 141,
+ "manuf_id": 52538, "prod_id": 131, "aux": 0}
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/leds/ampere-led-manager-config-native.bb b/meta-ampere/meta-mitchell/recipes-phosphor/leds/ampere-led-manager-config-native.bb
new file mode 100644
index 0000000..3b15b53
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/leds/ampere-led-manager-config-native.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Phosphor LED Group Management for Mt. Mitchell"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit native
+
+PROVIDES += "virtual/phosphor-led-manager-config-native"
+
+SRC_URI += "file://led.yaml"
+
+# Overwrite the example led layout yaml file prior
+# to building the phosphor-led-manager package
+do_install() {
+ DEST=${D}${datadir}/phosphor-led-manager
+ install -D ${WORKDIR}/led.yaml ${DEST}/led.yaml
+}
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/leds/ampere-led-manager-config/led.yaml b/meta-ampere/meta-mitchell/recipes-phosphor/leds/ampere-led-manager-config/led.yaml
new file mode 100644
index 0000000..3e321ed
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/leds/ampere-led-manager-config/led.yaml
@@ -0,0 +1,32 @@
+bmc_booted:
+ power:
+ Action: 'Blink'
+ DutyOn: 50
+ Period: 1000
+ Priority: 'On'
+
+power_on:
+ power:
+ Action: 'On'
+ DutyOn: 50
+ Period: 0
+ Priority: 'On'
+
+systemFault:
+ fault:
+ Action: 'On'
+ DutyOn: 50
+ Period: 0
+ Priority: 'Blink'
+
+enclosure_identify:
+ identify:
+ Action: 'On'
+ DutyOn: 50
+ Period: 1000
+
+enclosure_identify_blink:
+ identify:
+ Action: 'Blink'
+ DutyOn: 50
+ Period: 1000
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/skeleton/obmc-libobmc-intf/mtmitchell_gpio_defs.json b/meta-ampere/meta-mitchell/recipes-phosphor/skeleton/obmc-libobmc-intf/mtmitchell_gpio_defs.json
new file mode 100644
index 0000000..f354284
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/skeleton/obmc-libobmc-intf/mtmitchell_gpio_defs.json
@@ -0,0 +1,45 @@
+{
+ "gpio_configs": {
+
+ "power_config": {
+ "power_good_in": "PGOOD",
+ "power_up_outs": [
+ {"name": "OCP_MAIN_PWREN", "polarity": true},
+ {"name": "BMC_SYS_PSON_L", "polarity": false}
+ ]
+ }
+ },
+
+ "gpio_definitions": [
+ {
+ "name": "PGOOD",
+ "pin": "H3",
+ "direction": "in"
+ },
+ {
+ "name": "BMC_SYS_PSON_L",
+ "pin": "F2",
+ "direction": "out"
+ },
+ {
+ "name": "POWER_BUTTON",
+ "pin": "I6",
+ "direction": "both"
+ },
+ {
+ "name": "RESET_BUTTON",
+ "pin": "Z0",
+ "direction": "both"
+ },
+ {
+ "name": "OCP_MAIN_PWREN",
+ "pin": "W1",
+ "direction": "out"
+ },
+ {
+ "name": "ID_BTN",
+ "pin": "S2",
+ "direction": "both"
+ }
+ ]
+}
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend b/meta-ampere/meta-mitchell/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend
new file mode 100644
index 0000000..331c244
--- /dev/null
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
+
+SRC_URI += "\
+ file://${MACHINE}_gpio_defs.json \
+ "
+
+do_install:append() {
+ install -d ${D}${sysconfdir}/default/obmc/gpio/
+ install -m 0644 ${WORKDIR}/${MACHINE}_gpio_defs.json ${D}/${sysconfdir}/default/obmc/gpio/gpio_defs.json
+}