Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
View File
+17
View File
@@ -0,0 +1,17 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+175
View File
@@ -0,0 +1,175 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
+12
View File
@@ -0,0 +1,12 @@
Different components of meta-yadro are under different licenses (a mix
of MIT and Apache-2.0). Please see:
COPYING.Apache-2.0
COPYING.MIT (MIT)
All metadata is MIT licensed unless otherwise stated. Source code
included in tree for individual recipes is under the LICENSE stated in
the associated recipe (.bb file) unless otherwise stated.
License information for any other files is either explicitly stated
or defaults to Apache-2.0.
+3
View File
@@ -0,0 +1,3 @@
owners:
- a.filippov@yadro.com
- a.amelkin@yadro.com
+9
View File
@@ -0,0 +1,9 @@
# YADRO
YADRO is a technology company committed to influencing the way enterprises
address their IT transformation challenges and offering game-changing products
with outstanding quality. Powered by a team of knowledgeable talents combining a
wide range of experience gained through the years of contribution to the success
of leading technology companies.
https://yadro.com
+12
View File
@@ -0,0 +1,12 @@
# 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 += "yadro-layer"
BBFILE_PATTERN_yadro-layer = "^${LAYERDIR}/"
BBFILE_PATTERN_IGNORE_EMPTY_yadro-layer = "1"
LAYERSERIES_COMPAT_yadro-layer = "langdale mickledore"
+10
View File
@@ -0,0 +1,10 @@
# 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 += "nicole-layer"
BBFILE_PATTERN_nicole-layer := "^${LAYERDIR}/"
LAYERSERIES_COMPAT_nicole-layer = "langdale mickledore"
@@ -0,0 +1,19 @@
KMACHINE = "aspeed"
KERNEL_DEVICETREE = "${KMACHINE}-bmc-opp-${MACHINE}.dtb"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-aspeed"
PREFERRED_PROVIDER_u-boot = "u-boot-aspeed"
PREFERRED_PROVIDER_u-boot-fw-utils = "u-boot-fw-utils-aspeed"
UBOOT_MACHINE = "ast_g5_ncsi_config"
require conf/machine/include/ast2500.inc
require conf/machine/include/obmc-bsp-common.inc
require conf/machine/include/openpower.inc
require conf/machine/include/p9.inc
IMAGE_FEATURES:remove = " obmc-fan-control obmc-fan-mgmt"
PREFERRED_PROVIDER_virtual/openpower-fru-vpd-layout = "nicole-openpower-fru-vpd-layout-native"
PREFERRED_PROVIDER_virtual/openpower-fru-inventory = "nicole-openpower-fru-inventory-native"
PREFERRED_PROVIDER_virtual/openpower-fru-properties = "nicole-openpower-fru-properties-native"
PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "nicole-led-manager-config-native"
@@ -0,0 +1,19 @@
# 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-phosphor \
##OEROOT##/meta-aspeed \
##OEROOT##/meta-openpower \
##OEROOT##/meta-yadro \
##OEROOT##/meta-yadro/meta-nicole \
"
@@ -0,0 +1,2 @@
Common targets are:
obmc-phosphor-image
@@ -0,0 +1,264 @@
#
# 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 ??= "nicole"
#
# 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 ipk:
PACKAGE_CLASSES ?= "package_ipk"
#
# 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 ?= " *"
#
# 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 \
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 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"
# Set the root password to '0penBmc'
# Defaults from meta-phosphor/conf/distro/include/phosphor-defaults.inc
# Add default administrative account (login: admin, password: admin)
DEFAULT_ADMIN_PASSWORD = "'\$6\$Fze0kFe8\$YjEc0mvYcwZvjBtnVWQ4Os4gFMDj.ogBkg2jTSjpOgFQpT33hDitAUheGGJcSZ0PkzRuzOq/xhpJ5bmrFg46R.'"
EXTRA_USERS_PARAMS:append:pn-obmc-phosphor-image = "\
useradd -p ${DEFAULT_ADMIN_PASSWORD} -g users -G priv-admin,ipmi -N admin; \
"
@@ -0,0 +1,210 @@
From 1c5b450a068583f2407767451ef636d0661071da Mon Sep 17 00:00:00 2001
From: Alexander Filippov <a.filippov@yadro.com>
Date: Tue, 7 Apr 2020 16:45:41 +0300
Subject: [PATCH] Add system reset status support
This is backport of patch file from intel-bmc/openbmc repository.
https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0020-Add-system-reset-status-support.patch
Will display the reset reasons in u-boot,
and save the reset reasons into kernel command line,
for applications to query.
Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
---
arch/arm/include/asm/arch-aspeed/ast_scu.h | 2 +-
arch/arm/include/asm/arch-aspeed/platform.h | 2 +
arch/arm/mach-aspeed/Makefile | 1 +
arch/arm/mach-aspeed/ast-late-init.c | 114 ++++++++++++++++++++
arch/arm/mach-aspeed/ast-scu.c | 6 +-
5 files changed, 123 insertions(+), 2 deletions(-)
create mode 100644 arch/arm/mach-aspeed/ast-late-init.c
diff --git a/arch/arm/include/asm/arch-aspeed/ast_scu.h b/arch/arm/include/asm/arch-aspeed/ast_scu.h
index dcbc6730d4..b428f386d6 100644
--- a/arch/arm/include/asm/arch-aspeed/ast_scu.h
+++ b/arch/arm/include/asm/arch-aspeed/ast_scu.h
@@ -29,7 +29,7 @@
#define __AST_SCU_H
extern void ast_scu_show_system_info (void);
-extern void ast_scu_sys_rest_info(void);
+extern u32 ast_scu_sys_rest_info(void);
extern void ast_scu_security_info(void);
extern u32 ast_scu_revision_id(void);
extern u32 ast_scu_get_vga_memsize(void);
diff --git a/arch/arm/include/asm/arch-aspeed/platform.h b/arch/arm/include/asm/arch-aspeed/platform.h
index 1c02914fcb..b9207c492f 100644
--- a/arch/arm/include/asm/arch-aspeed/platform.h
+++ b/arch/arm/include/asm/arch-aspeed/platform.h
@@ -31,4 +31,6 @@
#err "No define for platform.h"
#endif
+#define CONFIG_BOARD_LATE_INIT 1 /* Call board_late_init */
+
#endif
diff --git a/arch/arm/mach-aspeed/Makefile b/arch/arm/mach-aspeed/Makefile
index 7d8930beb9..4af2a7c96a 100644
--- a/arch/arm/mach-aspeed/Makefile
+++ b/arch/arm/mach-aspeed/Makefile
@@ -15,3 +15,4 @@ obj-y += timer.o reset.o cpuinfo.o ast-scu.o ast-ahbc.o ast-sdmc.o
obj-$(CONFIG_AST_SPI_NOR) += flash.o
obj-$(CONFIG_ARCH_AST2500) += platform_g5.o
obj-$(CONFIG_ARCH_AST2400) += platform_g4.o
+obj-$(CONFIG_BOARD_LATE_INIT) += ast-late-init.o
diff --git a/arch/arm/mach-aspeed/ast-late-init.c b/arch/arm/mach-aspeed/ast-late-init.c
new file mode 100644
index 0000000000..5646c0e882
--- /dev/null
+++ b/arch/arm/mach-aspeed/ast-late-init.c
@@ -0,0 +1,114 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ * Copyright (C) 2020 YADRO.
+ */
+
+#include <common.h>
+
+#include <asm/arch/ast_scu.h>
+#include <asm/arch/regs-scu.h>
+#include <malloc.h>
+
+static void update_bootargs_cmd(const char *key, const char *value)
+{
+ int buf_len;
+ char *buf;
+ char *cmdline;
+ char *end = NULL;
+
+ if (!key || (key[0] == '\0'))
+ {
+ printf("%s: Empty key not allowed\n", __func__);
+ return;
+ }
+
+ cmdline = getenv("bootargs");
+
+ /* Allocate space for maximum possible new command line */
+ buf_len = (cmdline ? strlen(cmdline) : 0)
+ + 1 /* spacebar as delimiter */
+ + strlen(key)
+ + (value ? 1 /* equal sign */ + strlen(value) : 0)
+ + 1 /* terminating null */;
+
+ buf = calloc(buf_len, sizeof(char));
+ if (!buf)
+ {
+ printf("%s: out of memory\n", __func__);
+ return;
+ }
+
+ if (cmdline)
+ {
+ char *start = strstr(cmdline, key);
+
+ /* Check for full word match. Match should be start of cmdline
+ * or there should be space before match */
+ if (start && ((start == cmdline) || (*(start - 1) == ' ')))
+ {
+ strncat(buf, cmdline, (start - cmdline));
+
+ /* Find the end of the keyword[=value] pair,
+ * including a single training space character, if any.
+ * Skip the found substring, mark the tail of cmdline.
+ */
+ end = strchr(start, ' ');
+ if (end)
+ {
+ end++;
+ }
+ }
+ else
+ {
+ strcat(buf, cmdline);
+ strcat(buf, " ");
+ }
+ }
+
+ strcat(buf, key);
+ if (value)
+ {
+ strcat(buf, "=");
+ strcat(buf, value);
+ }
+
+ if (end)
+ {
+ strcat(buf, " ");
+ strcat(buf, end);
+ }
+
+ setenv("bootargs", buf);
+ free(buf);
+}
+
+static void set_reset_reason(void)
+{
+ u32 reset_reason = ast_scu_sys_rest_info();
+
+ if (reset_reason & SCU_SYS_EXT_RESET_FLAG)
+ {
+ update_bootargs_cmd("resetreason", "external");
+ }
+ else if (reset_reason & SCU_SYS_WDT_RESET_FLAG)
+ {
+ update_bootargs_cmd("resetreason", "watchdog");
+ }
+ else if (reset_reason & SCU_SYS_PWR_RESET_FLAG)
+ {
+ update_bootargs_cmd("resetreason", "power");
+ }
+ else
+ {
+ char value[32];
+ snprintf(value, sizeof(value) - 1, "0x%x", reset_reason);
+ update_bootargs_cmd("resetreason", value);
+ }
+}
+
+int board_late_init(void)
+{
+ set_reset_reason();
+
+ return 0;
+}
diff --git a/arch/arm/mach-aspeed/ast-scu.c b/arch/arm/mach-aspeed/ast-scu.c
index 12de9b8036..5afd3793e3 100644
--- a/arch/arm/mach-aspeed/ast-scu.c
+++ b/arch/arm/mach-aspeed/ast-scu.c
@@ -482,22 +482,26 @@ void ast_scu_security_info(void)
}
}
-void ast_scu_sys_rest_info(void)
+u32 ast_scu_sys_rest_info(void)
{
u32 rest = ast_scu_read(AST_SCU_SYS_CTRL);
if (rest & SCU_SYS_EXT_RESET_FLAG) {
printf("RST : External\n");
ast_scu_write(SCU_SYS_EXT_RESET_FLAG, AST_SCU_SYS_CTRL);
+ rest = SCU_SYS_EXT_RESET_FLAG;
} else if (rest & SCU_SYS_WDT_RESET_FLAG) {
printf("RST : Watchdog\n");
ast_scu_write(SCU_SYS_WDT_RESET_FLAG, AST_SCU_SYS_CTRL);
+ rest = SCU_SYS_WDT_RESET_FLAG;
} else if (rest & SCU_SYS_PWR_RESET_FLAG) {
printf("RST : Power On\n");
ast_scu_write(SCU_SYS_PWR_RESET_FLAG, AST_SCU_SYS_CTRL);
+ rest = SCU_SYS_PWR_RESET_FLAG;
} else {
printf("RST : CLK en\n");
}
+ return rest;
}
u32 ast_scu_get_vga_memsize(void)
--
2.25.4
@@ -0,0 +1,27 @@
From efc627f4a288ea2e7969407f50fc403bb0264df1 Mon Sep 17 00:00:00 2001
From: Alexander Filippov <a.filippov@yadro.com>
Date: Wed, 23 Oct 2019 15:51:25 +0300
Subject: [PATCH] config/ast-common: set fieldmode to true
Force enables field mode. Our system always in production.
Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
---
include/configs/ast-common.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/configs/ast-common.h b/include/configs/ast-common.h
index a0243083bd..6285fa4037 100644
--- a/include/configs/ast-common.h
+++ b/include/configs/ast-common.h
@@ -117,6 +117,7 @@
#define ASPEED_ENV_SETTINGS \
"verify=yes\0" \
"spi_dma=yes\0" \
+ "fieldmode=true\0" \
""
#endif /* __AST_COMMON_CONFIG_H */
--
2.21.0
@@ -0,0 +1,512 @@
From 9bb68d8820480519e8b331f7a8b866b8718ad7fd Mon Sep 17 00:00:00 2001
From: Alexander Filippov <a.filippov@yadro.com>
Date: Tue, 19 May 2020 18:55:41 +0300
Subject: [PATCH] aspeed: add gpio support
This is an initial support for the parallel GPIO pins directly connected
to the AHB on the Aspeed 2400/2500.
This brings the functions and a shell command to manipulate the GPIO
state. The GPIO value reading and writing work in non interrupt mode
only.
Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
---
arch/arm/include/asm/arch-aspeed/gpio.h | 65 ++++
arch/arm/include/asm/arch-aspeed/platform.h | 1 +
drivers/gpio/Makefile | 2 +
drivers/gpio/aspeed_gpio.c | 386 ++++++++++++++++++++
4 files changed, 454 insertions(+)
create mode 100644 arch/arm/include/asm/arch-aspeed/gpio.h
create mode 100644 drivers/gpio/aspeed_gpio.c
diff --git a/arch/arm/include/asm/arch-aspeed/gpio.h b/arch/arm/include/asm/arch-aspeed/gpio.h
new file mode 100644
index 0000000000..c63987e917
--- /dev/null
+++ b/arch/arm/include/asm/arch-aspeed/gpio.h
@@ -0,0 +1,65 @@
+/*
+ * SPDX-License-Identifier: GPL-2.0+
+ * Copyright (C) 2020 YADRO.
+ */
+#ifndef _ASPEED_GPIO_H
+#define _ASPEED_GPIO_H
+
+#define ASPEED_GPIO_PORT_A 0
+#define ASPEED_GPIO_PORT_B 1
+#define ASPEED_GPIO_PORT_C 2
+#define ASPEED_GPIO_PORT_D 3
+#define ASPEED_GPIO_PORT_E 4
+#define ASPEED_GPIO_PORT_F 5
+#define ASPEED_GPIO_PORT_G 6
+#define ASPEED_GPIO_PORT_H 7
+#define ASPEED_GPIO_PORT_I 8
+#define ASPEED_GPIO_PORT_J 9
+#define ASPEED_GPIO_PORT_K 10
+#define ASPEED_GPIO_PORT_L 11
+#define ASPEED_GPIO_PORT_M 12
+#define ASPEED_GPIO_PORT_N 13
+#define ASPEED_GPIO_PORT_O 14
+#define ASPEED_GPIO_PORT_P 15
+#define ASPEED_GPIO_PORT_Q 16
+#define ASPEED_GPIO_PORT_R 17
+#define ASPEED_GPIO_PORT_S 18
+#define ASPEED_GPIO_PORT_T 19
+#define ASPEED_GPIO_PORT_U 20
+#define ASPEED_GPIO_PORT_V 21
+#define ASPEED_GPIO_PORT_W 22
+#define ASPEED_GPIO_PORT_X 23
+#define ASPEED_GPIO_PORT_Y 24
+#define ASPEED_GPIO_PORT_Z 25
+#define ASPEED_GPIO_PORT_AA 26
+#define ASPEED_GPIO_PORT_AB 27
+#define ASPEED_GPIO_PORT_AC 28
+
+#define ASPEED_GPIO_PORT_SHIFT 3
+#define ASPEED_GPIO_PIN_MASK 0x7
+#define ASPEED_GPIO(port, pin) \
+ ((ASPEED_GPIO_PORT_##port << ASPEED_GPIO_PORT_SHIFT) | \
+ (pin & ASPEED_GPIO_PIN_MASK))
+
+/* Direction values */
+#define ASPEED_GPIO_INPUT 0
+#define ASPEED_GPIO_OUTPUT 1
+
+/* Trigger values */
+#define ASPEED_GPIO_FALLING_EDGE 0
+#define ASPEED_GPIO_RISING_EDGE 1
+#define ASPEED_GPIO_LOW_LEVEL 2
+#define ASPEED_GPIO_HIGH_LEVEL 3
+#define ASPEED_GPIO_DUAL_EDGE 4
+
+/* Debounce values */
+#define ASPEED_GPIO_DEBOUNCE_NONE 0
+#define ASPEED_GPIO_DEBOUNCE_1 1
+#define ASPEED_GPIO_DEBOUNCE_2 2
+#define ASPEED_GPIO_DEBOUNCE_3 3
+
+#define gpio_status() gpio_info()
+
+extern void gpio_info(void);
+
+#endif /* #ifndef _ASPEED_GPIO_H */
diff --git a/arch/arm/include/asm/arch-aspeed/platform.h b/arch/arm/include/asm/arch-aspeed/platform.h
index b9207c492f..0a05a7a7a0 100644
--- a/arch/arm/include/asm/arch-aspeed/platform.h
+++ b/arch/arm/include/asm/arch-aspeed/platform.h
@@ -32,5 +32,6 @@
#endif
#define CONFIG_BOARD_LATE_INIT 1 /* Call board_late_init */
+#define CONFIG_CMD_GPIO 1 /* Enable gpio command in shell */
#endif
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 792d19186a..5f043e07ce 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -14,6 +14,8 @@ obj-$(CONFIG_DM_GPIO) += gpio-uclass.o
obj-$(CONFIG_DM_PCA953X) += pca953x_gpio.o
obj-$(CONFIG_DM_74X164) += 74x164_gpio.o
+obj-$(CONFIG_ARCH_AST2400) += aspeed_gpio.o
+obj-$(CONFIG_ARCH_AST2500) += aspeed_gpio.o
obj-$(CONFIG_AT91_GPIO) += at91_gpio.o
obj-$(CONFIG_ATMEL_PIO4) += atmel_pio4.o
obj-$(CONFIG_INTEL_ICH6_GPIO) += intel_ich6_gpio.o
diff --git a/drivers/gpio/aspeed_gpio.c b/drivers/gpio/aspeed_gpio.c
new file mode 100644
index 0000000000..dc07f5a520
--- /dev/null
+++ b/drivers/gpio/aspeed_gpio.c
@@ -0,0 +1,386 @@
+/*
+ * SPDX-License-Identifier: GPL-2.0+
+ * Copyright (C) 2020 YADRO.
+ */
+
+#include <common.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/platform.h>
+#include <asm/io.h>
+#include <linux/ctype.h>
+
+typedef struct _ast_gpio_regs
+{
+ uint32_t base; /* data and direction registers */
+ uint32_t intcfg; /* interrupt config */
+ uint32_t debounce; /* debounce config */
+ uint32_t cmdsrc; /* command source config */
+ uint32_t data; /* data read register */
+} ast_gpio_regs_t;
+
+static ast_gpio_regs_t ast_gpio_regs[] = {
+ /* A/B/C/D */
+ {AST_GPIO_BASE + 0x0000, AST_GPIO_BASE + 0x0008, AST_GPIO_BASE + 0x0040,
+ AST_GPIO_BASE + 0x0060, AST_GPIO_BASE + 0x00C0},
+ /* E/F/G/H */
+ {AST_GPIO_BASE + 0x0020, AST_GPIO_BASE + 0x0028, AST_GPIO_BASE + 0x0048,
+ AST_GPIO_BASE + 0x0068, AST_GPIO_BASE + 0x00C4},
+ /* I/J/K/L */
+ {AST_GPIO_BASE + 0x0070, AST_GPIO_BASE + 0x0098, AST_GPIO_BASE + 0x00B0,
+ AST_GPIO_BASE + 0x0090, AST_GPIO_BASE + 0x00C8},
+ /* M/N/O/P */
+ {AST_GPIO_BASE + 0x0078, AST_GPIO_BASE + 0x00E8, AST_GPIO_BASE + 0x0100,
+ AST_GPIO_BASE + 0x00E0, AST_GPIO_BASE + 0x00CC},
+ /* Q/R/S/T */
+ {AST_GPIO_BASE + 0x0080, AST_GPIO_BASE + 0x0118, AST_GPIO_BASE + 0x0130,
+ AST_GPIO_BASE + 0x0110, AST_GPIO_BASE + 0x00D0},
+ /* U/V/W/X */
+ {AST_GPIO_BASE + 0x0088, AST_GPIO_BASE + 0x0148, AST_GPIO_BASE + 0x0160,
+ AST_GPIO_BASE + 0x0140, AST_GPIO_BASE + 0x00D4},
+ /* Y/Z/AA/AB */
+ {AST_GPIO_BASE + 0x01E0, AST_GPIO_BASE + 0x0178, AST_GPIO_BASE + 0x0190,
+ AST_GPIO_BASE + 0x0170, AST_GPIO_BASE + 0x00D8},
+ /* AC */
+ {AST_GPIO_BASE + 0x01E8, AST_GPIO_BASE + 0x01A8, AST_GPIO_BASE + 0x01C0,
+ AST_GPIO_BASE + 0x01A0, AST_GPIO_BASE + 0x00DC},
+};
+
+#define AST_GPIO_PINS_PER_PORT 8
+#define AST_GPIO_PORTS_PER_REGISTER 4
+
+#define AST_GPIO_PORT(gpio) (gpio >> ASPEED_GPIO_PORT_SHIFT)
+#define AST_GPIO_PIN(gpio) (gpio & ASPEED_GPIO_PIN_MASK)
+#define AST_GPIO_SHIFT(gpio) \
+ ((AST_GPIO_PORT(gpio) % AST_GPIO_PORTS_PER_REGISTER) * \
+ AST_GPIO_PINS_PER_PORT + \
+ AST_GPIO_PIN(gpio))
+
+#define AST_GPIO_REG_INDEX(gpio) \
+ (AST_GPIO_PORT(gpio) / AST_GPIO_PORTS_PER_REGISTER)
+
+/**
+ * @return Pointer to corresponding item from ast_gpio_regs table.
+ */
+#define AST_GPIO_REGS(gpio) \
+ ((AST_GPIO_REG_INDEX(gpio) < ARRAY_SIZE(ast_gpio_regs)) \
+ ? (ast_gpio_regs + AST_GPIO_REG_INDEX(gpio)) \
+ : NULL)
+
+/**
+ * @brief Set a corresponding bit in specified register.
+ *
+ * @param val - Required bit value
+ * @param base - Register address
+ * @param shift - Bit index.
+ */
+#define AST_GPIO_WRITE(val, base, shift) \
+ writel(((val) ? readl(base) | (1 << (shift)) \
+ : readl(base) & ~(1 << (shift))), \
+ base)
+
+/**
+ * @brief Get value of corresponging bit from specified register.
+ *
+ * @param base - Register address
+ * @param shift - Bit index
+ *
+ * @return Bit value
+ */
+#define AST_GPIO_READ(base, shift) ((readl(base) >> (shift)) & 1)
+
+#define IS_VALID_GPIO(gpio) \
+ ((gpio) >= ASPEED_GPIO(A, 0) && (gpio) <= ASPEED_GPIO(AC, 7))
+
+#define AST_GPIO_DIRECTION 0x04
+#define AST_GPIO_INT_SENS0 0x04
+#define AST_GPIO_INT_SENS1 0x08
+#define AST_GPIO_INT_SENS2 0x0C
+#define AST_GPIO_INT_STATUS 0x10
+#define AST_GPIO_DEBOUNCE0 0x00
+#define AST_GPIO_DEBOUNCE1 0x04
+#define AST_GPIO_CMD_SRC0 0x00
+#define AST_GPIO_CMD_SRC1 0x04
+
+/**
+ * @brief Set a GPIO direction
+ *
+ * @param gpio GPIO line
+ * @param direction GPIO direction (0 for input or 1 for output)
+ *
+ * @return 0 if ok, -1 on error
+ */
+static int ast_gpio_set_direction(unsigned gpio, unsigned direction)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (!regs)
+ {
+ printf("%s: Invalid GPIO!\n", __func__);
+ return -1;
+ }
+
+ AST_GPIO_WRITE(direction, regs->base + AST_GPIO_DIRECTION,
+ AST_GPIO_SHIFT(gpio));
+ return 0;
+}
+
+/**
+ * The 6 following functions are generic u-boot gpio implementation.
+ * They are declared in `include/asm-generic/gpio.h`
+ */
+
+int gpio_request(unsigned gpio, const char *label)
+{
+ return (IS_VALID_GPIO(gpio) ? 0 : -1);
+}
+
+int gpio_free(unsigned gpio)
+{
+ return (IS_VALID_GPIO(gpio) ? 0 : -1);
+}
+
+int gpio_get_value(unsigned gpio)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (!regs)
+ {
+ printf("%s: Invalid GPIO!\n", __func__);
+ return -1;
+ }
+
+ return AST_GPIO_READ(regs->base, AST_GPIO_SHIFT(gpio));
+}
+
+int gpio_set_value(unsigned gpio, int value)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (!regs)
+ {
+ printf("%s: Invalid GPIO!\n", __func__);
+ return -1;
+ }
+
+ AST_GPIO_WRITE(value, regs->base, AST_GPIO_SHIFT(gpio));
+ return 0;
+}
+
+int gpio_direction_input(unsigned gpio)
+{
+ return ast_gpio_set_direction(gpio, ASPEED_GPIO_INPUT);
+}
+
+int gpio_direction_output(unsigned gpio, int value)
+{
+ int rc = ast_gpio_set_direction(gpio, ASPEED_GPIO_OUTPUT);
+ return (rc == 0 ? gpio_set_value(gpio, value) : rc);
+}
+
+/**
+ * @brief Convert a string to GPIO line. Used by `do_gpio()` from `cmd/gpio.c`
+ *
+ * @param str a GPIO name or line number
+ *
+ * @return GPIO line if ok, -1 on error
+ */
+int name_to_gpio(const char *str)
+{
+ int gpio = -1;
+
+ if (str)
+ {
+ if (isalpha(*str))
+ {
+ gpio = (toupper(*str) - 'A') << ASPEED_GPIO_PORT_SHIFT;
+
+ if (toupper(*str) == 'A' && toupper(*(str + 1)) >= 'A' &&
+ toupper(*(str + 1)) <= 'C')
+ {
+ str++;
+ gpio = (ASPEED_GPIO_PORT_AA + toupper(*str) - 'A')
+ << ASPEED_GPIO_PORT_SHIFT;
+ }
+
+ str++;
+ if (*str >= '0' && *str <= '7' && !*(str + 1))
+ {
+ gpio += *str - '0';
+ }
+ else
+ {
+ gpio = -1;
+ }
+ }
+ else if (isdigit(*str))
+ {
+ gpio = simple_strtoul(str, NULL, 0);
+ }
+ }
+
+ return gpio;
+}
+
+/**
+ * @return A GPIO direction in human readable format.
+ */
+static const char *ast_gpio_direction(unsigned gpio)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (regs)
+ {
+ int direction = AST_GPIO_READ(regs->base + AST_GPIO_DIRECTION,
+ AST_GPIO_SHIFT(gpio));
+ switch (direction)
+ {
+ case ASPEED_GPIO_INPUT:
+ return "input";
+ case ASPEED_GPIO_OUTPUT:
+ return "output";
+ default:
+ break;
+ }
+ }
+ return "error";
+}
+
+/**
+ * @return An interrupt trigger settings in human readable format.
+ */
+static const char *ast_gpio_trigger(unsigned gpio)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (regs)
+ {
+ unsigned shift = AST_GPIO_SHIFT(gpio);
+ unsigned trigger =
+ (AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_SENS0, shift) << 0) |
+ (AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_SENS1, shift) << 1) |
+ (AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_SENS2, shift) << 2);
+
+ switch (trigger)
+ {
+ case ASPEED_GPIO_FALLING_EDGE:
+ return "fall";
+ case ASPEED_GPIO_RISING_EDGE:
+ return "rise";
+ case ASPEED_GPIO_LOW_LEVEL:
+ return "low ";
+ case ASPEED_GPIO_HIGH_LEVEL:
+ return "high";
+ default:
+ return "both";
+ }
+ }
+ return "error";
+}
+
+/**
+ * @return An interrupt status in human readable format.
+ */
+static const char *ast_gpio_int_status(unsigned gpio)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (regs)
+ {
+ unsigned shift = AST_GPIO_SHIFT(gpio);
+ if (AST_GPIO_READ(regs->intcfg, shift))
+ {
+ return AST_GPIO_READ(regs->intcfg + AST_GPIO_INT_STATUS, shift)
+ ? "pending"
+ : "cleaned";
+ }
+ return "disabled";
+ }
+
+ return "error";
+}
+
+/**
+ * @return A debounce value in human readable format.
+ */
+static const char *ast_gpio_debounce(unsigned gpio)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (regs)
+ {
+ unsigned shift = AST_GPIO_SHIFT(gpio);
+ unsigned debounce =
+ (AST_GPIO_READ(regs->debounce + AST_GPIO_DEBOUNCE0, shift) << 0) |
+ (AST_GPIO_READ(regs->debounce + AST_GPIO_DEBOUNCE1, shift) << 1);
+ switch (debounce)
+ {
+ case ASPEED_GPIO_DEBOUNCE_NONE:
+ return "none";
+ case ASPEED_GPIO_DEBOUNCE_1:
+ return "timer1";
+ case ASPEED_GPIO_DEBOUNCE_2:
+ return "timer2";
+ case ASPEED_GPIO_DEBOUNCE_3:
+ return "timer3";
+ default:
+ break;
+ }
+ }
+
+ return "error";
+}
+
+/**
+ * @return A command source value in human readable format.
+ */
+static const char *ast_gpio_command_source(unsigned gpio)
+{
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (regs)
+ {
+ /* Used one bit per gpio port */
+ unsigned shift = AST_GPIO_SHIFT(gpio) - AST_GPIO_PIN(gpio);
+ unsigned cmdsrc =
+ (AST_GPIO_READ(regs->cmdsrc + AST_GPIO_CMD_SRC0, shift) << 0) |
+ (AST_GPIO_READ(regs->cmdsrc + AST_GPIO_CMD_SRC1, shift) << 1);
+
+ switch (cmdsrc)
+ {
+ /* The single place where these values are used is here. */
+ case 0x0:
+ return "ARM";
+ case 0x1:
+ return "LPC";
+ case 0x2:
+ return "CoCPU";
+ default:
+ return "Unknown";
+ }
+ }
+
+ return "error";
+}
+
+/**
+ * @brief Show all GPIO pins statuses. Used by `do_gpio()` in `cmd/gpio.c`
+ */
+void gpio_info(void)
+{
+ unsigned first = ASPEED_GPIO(A, 0);
+ unsigned last = ASPEED_GPIO(AC, 7);
+ for (unsigned gpio = first; gpio <= last; gpio++)
+ {
+ unsigned port = AST_GPIO_PORT(gpio);
+ unsigned pin = AST_GPIO_PIN(gpio);
+ unsigned shift = AST_GPIO_SHIFT(gpio);
+ ast_gpio_regs_t *regs = AST_GPIO_REGS(gpio);
+ if (!regs)
+ {
+ printf("gpio %u is invalid!\n", gpio);
+ continue;
+ }
+
+ printf("gpio %c%c%c line %3d: %s, int: %s, %s, deb: %s, src: %s, "
+ "val: %d/%d\n",
+ (port >= ASPEED_GPIO_PORT_AA ? 'A' : ' '),
+ ('A' + port % ASPEED_GPIO_PORT_AA), ('0' + pin), gpio,
+ ast_gpio_direction(gpio), ast_gpio_trigger(gpio),
+ ast_gpio_int_status(gpio), ast_gpio_debounce(gpio),
+ ast_gpio_command_source(gpio), gpio_get_value(gpio),
+ AST_GPIO_READ(regs->data, shift));
+ }
+}
--
2.25.4
@@ -0,0 +1,61 @@
From 8098310be5887bd5e80830f105b63ed59dc10421 Mon Sep 17 00:00:00 2001
From: Alexander Filippov <a.filippov@yadro.com>
Date: Fri, 22 May 2020 11:45:31 +0300
Subject: [PATCH] aspeed: add bmc position support
There are two Nicoles in one chassis in the Tatlin hardware.
The position is encoded by a pin, read by an MCU, and then translated
to the BMC via GPIO pin GPIOE1.
This reads the GPIO pin state and put is as a bootargs item.
Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
---
arch/arm/mach-aspeed/ast-late-init.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/arch/arm/mach-aspeed/ast-late-init.c b/arch/arm/mach-aspeed/ast-late-init.c
index 5646c0e882..7d36dc0d8a 100644
--- a/arch/arm/mach-aspeed/ast-late-init.c
+++ b/arch/arm/mach-aspeed/ast-late-init.c
@@ -7,6 +7,7 @@
#include <asm/arch/ast_scu.h>
#include <asm/arch/regs-scu.h>
+#include <asm/gpio.h>
#include <malloc.h>
static void update_bootargs_cmd(const char *key, const char *value)
@@ -106,9 +107,29 @@ static void set_reset_reason(void)
}
}
+static void set_bmc_position(void)
+{
+ unsigned gpio = ASPEED_GPIO(E, 1);
+
+ /* Init GPIO */
+ if (gpio_request(gpio, "bmcposition") == 0 &&
+ gpio_direction_input(gpio) == 0)
+ {
+ int position = gpio_get_value(gpio);
+ if (position >= 0)
+ {
+ printf("BMC Position: %d\n", position);
+ update_bootargs_cmd("bmcposition", position ? "1" : "0");
+ }
+ }
+
+ gpio_free(gpio);
+}
+
int board_late_init(void)
{
set_reset_reason();
+ set_bmc_position();
return 0;
}
--
2.25.4
@@ -0,0 +1,8 @@
FILESEXTRAPATHS:append := "${THISDIR}/files:"
SRC_URI:append = " \
file://0001-Add-system-reset-status-support.patch \
file://0002-config-ast-common-set-fieldmode-to-true.patch \
file://0003-aspeed-add-gpio-support.patch \
file://0004-aspeed-add-bmc-position-support.patch \
"
@@ -0,0 +1 @@
u-boot-aspeed_%.bbappend
@@ -0,0 +1,11 @@
[Match]
Name=eth0
KernelCommandLine=bmcposition=0
[Network]
VLAN=eth0.4004
DHCP=true
LinkLocalAddressing=yes
IPv6AcceptRA=false
Address=10.9.0.1/24
[DHCP]
ClientIdentifier=mac
@@ -0,0 +1,11 @@
[Match]
Name=eth0
KernelCommandLine=bmcposition=1
[Network]
VLAN=eth0.4004
DHCP=true
LinkLocalAddressing=yes
IPv6AcceptRA=false
Address=10.9.0.2/24
[DHCP]
ClientIdentifier=mac
@@ -0,0 +1,8 @@
[Match]
Name=eth0.4004
KernelCommandLine=bmcposition=0
[Network]
LinkLocalAddressing=yes
IPv6AcceptRA=true
DHCP=no
Address=fd59:4144:524f:5441:544c:494e:3:1/122
@@ -0,0 +1,8 @@
[Match]
Name=eth0.4004
KernelCommandLine=bmcposition=1
[Network]
LinkLocalAddressing=yes
IPv6AcceptRA=true
DHCP=no
Address=fd59:4144:524f:5441:544c:494e:3:2/122
@@ -0,0 +1,5 @@
[NetDev]
Name=eth0.4004
Kind=vlan
[VLAN]
Id=4004
@@ -0,0 +1,27 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI:append = " \
file://00-bmc-eth0.4004.0.network \
file://00-bmc-eth0.4004.1.network \
file://00-bmc-eth0.0.network \
file://00-bmc-eth0.1.network \
file://eth0.4004.netdev \
"
do_install:append() {
install -m 0644 \
${WORKDIR}/00-bmc-eth0.4004.0.network \
${WORKDIR}/00-bmc-eth0.4004.1.network \
${WORKDIR}/00-bmc-eth0.0.network \
${WORKDIR}/00-bmc-eth0.1.network \
${WORKDIR}/eth0.4004.netdev \
-D -t ${D}${sysconfdir}/systemd/network
}
FILES:${PN}:append = " \
${sysconfdir}/systemd/network/00-bmc-eth0.4004.0.network \
${sysconfdir}/systemd/network/00-bmc-eth0.4004.1.network \
${sysconfdir}/systemd/network/00-bmc-eth0.0.network \
${sysconfdir}/systemd/network/00-bmc-eth0.1.network \
${sysconfdir}/systemd/network/eth0.4004.netdev \
"
@@ -0,0 +1,131 @@
From b19111bb23044c9312d13e64dd1df2a9565f6b38 Mon Sep 17 00:00:00 2001
From: Artem Senichev <a.senichev@yadro.com>
Date: Wed, 12 Feb 2020 14:05:15 +0300
Subject: [PATCH] Add NCSI channel selector
NCSI channel number is selected depending on GPIO state of a pin
described in the device tree (gpio/nsci_cfg node).
Currently, this pin is controlled via MCU, and its state represents
Nicole's physical position inside a fabric.
Channel selector scheme:
* GPIO pin value is 0: channel 0;
* GPIO pin value is 1: channel 1;
* invalid configuration or error: channel 0.
After changing pin's state it is necessary to reboot the BMC to apply
new channel number.
Signed-off-by: Artem Senichev <a.senichev@yadro.com>
---
net/ncsi/ncsi-rsp.c | 80 ++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 79 insertions(+), 1 deletion(-)
diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c
index d876bd55f356..d211a7e64b14 100644
--- a/net/ncsi/ncsi-rsp.c
+++ b/net/ncsi/ncsi-rsp.c
@@ -9,6 +9,9 @@
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
+#include <linux/of.h>
+#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
#include <net/ncsi.h>
#include <net/net_namespace.h>
@@ -19,6 +22,81 @@
#include "ncsi-pkt.h"
#include "ncsi-netlink.h"
+/* NSCI channel number, used as default in case of errors. */
+#define NCSI_DEFAULT_CHANNEL 0
+
+/* Predicate for gpiochip_find() call. */
+static int device_match(struct gpio_chip* chip, void* data)
+{
+ const struct device_node *node = data;
+ return chip->of_node == node;
+}
+
+/**
+ * ncsi_select_channel() - Get channel number for NCSI.
+ * @dev: Network device.
+ *
+ * NCSI channel number is selected depending on GPIO state of a pin
+ * described in the device tree (gpio/nsci_cfg node).
+ *
+ * Return: channel number.
+ */
+static int ncsi_select_channel(const struct net_device* dev)
+{
+ static int channel_id = -1;
+ struct device_node* node = NULL;
+
+ while (channel_id < 0) {
+ struct gpio_chip* chip;
+ const struct gpio_desc* desc;
+ u32 pin;
+ int rc;
+
+ /* Read NCSI configuration node from device tree */
+ node = of_find_node_by_name(NULL, "ncsi_cfg");
+ if (!node) {
+ netdev_err(dev, "NCSI: Configuration node not found\n");
+ break;
+ }
+
+ /* Read GPIO pin configuration */
+ rc = of_property_read_u32_index(node, "gpios", 0, &pin);
+ if (rc) {
+ netdev_err(dev, "NCSI: GPIO configuration not found\n");
+ break;
+ }
+
+ /* Find GPIO chip */
+ chip = gpiochip_find(node->parent, device_match);
+ if (!chip) {
+ netdev_err(dev, "NCSI: GPIO chip not found\n");
+ break;
+ }
+
+ /* Read GPIO state */
+ desc = gpio_to_desc(chip->base + pin);
+ if (!desc) {
+ netdev_err(dev, "NCSI: Cannot get GPIO descriptor\n");
+ break;
+ }
+ channel_id = gpiod_get_value(desc);
+ if (channel_id < 0) {
+ netdev_err(dev, "NCSI: GPIO read error %d\n", channel_id);
+ }
+ break;
+ }
+
+ if (node) {
+ of_node_put(node);
+ }
+ if (channel_id < 0) {
+ channel_id = NCSI_DEFAULT_CHANNEL;
+ }
+ netdev_info(dev, "NCSI: Set channel %d\n", channel_id);
+
+ return channel_id;
+}
+
static int ncsi_validate_rsp_pkt(struct ncsi_request *nr,
unsigned short payload)
{
@@ -87,7 +165,7 @@ static int ncsi_rsp_handler_cis(struct ncsi_request *nr)
if (ndp->flags & NCSI_DEV_PROBED)
return -ENXIO;
- id = NCSI_CHANNEL_INDEX(rsp->rsp.common.channel);
+ id = ncsi_select_channel(ndp->ndev.dev);
nc = ncsi_add_channel(np, id);
}
--
2.25.0
@@ -0,0 +1,4 @@
FILESEXTRAPATHS:prepend:nicole := "${THISDIR}/${PN}:"
SRC_URI += "file://nicole.cfg \
file://0001-Add-NCSI-channel-selector.patch \
"
@@ -0,0 +1,25 @@
SUMMARY = "Nicole AVSBus control"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit obmc-phosphor-systemd
RDEPENDS:${PN} += "i2c-tools"
S = "${WORKDIR}"
SRC_URI += "file://avsbus-control.sh"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/avsbus-control.sh \
${D}${bindir}/avsbus-control.sh
}
TMPL= "avsbus-control@.service"
INSTFMT= "avsbus-control@{0}.service"
TGTFMT = "obmc-chassis-poweron@{0}.target"
FMT = "../${TMPL}:${TGTFMT}.requires/${INSTFMT}"
SYSTEMD_SERVICE:${PN} += "${TMPL}"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
@@ -0,0 +1,31 @@
#!/bin/sh -eu
override_avs_settings()
{
BUS=$1
i2cset -y "${BUS}" 0x44 0x00 0x00 b # VCS
i2cset -y "${BUS}" 0x44 0x24 0x044C w # VOUT_MAX 1100mV
i2cset -y "${BUS}" 0x44 0x40 0x0456 w # VOUT_OV_FAULT_LIMIT 1110mV
i2cset -y "${BUS}" 0x44 0x25 0x0438 w # VOUT_MARGING_HIGH 1080mV
i2cset -y "${BUS}" 0x44 0x26 0x03D4 w # VOUT_MARGING_LOW 980mV
i2cset -y "${BUS}" 0x44 0x44 0x024E w # VOUT_UV_FAULT_LIMIT 590mV
i2cset -y "${BUS}" 0x44 0x2B 0x0258 w # VOUT_MIN 600mV
i2cset -y "${BUS}" 0x44 0x00 0x01 b # VDD
i2cset -y "${BUS}" 0x44 0x24 0x044C w # VOUT_MAX 1100mV
i2cset -y "${BUS}" 0x44 0x40 0x0456 w # VOUT_OV_FAULT_LIMIT 1110mV
i2cset -y "${BUS}" 0x44 0x25 0x041A w # VOUT_MARGING_HIGH 1050mV
i2cset -y "${BUS}" 0x44 0x26 0x03B6 w # VOUT_MARGING_LOW 950mV
i2cset -y "${BUS}" 0x44 0x44 0x024E w # VOUT_UV_FAULT_LIMIT 590mV
i2cset -y "${BUS}" 0x44 0x2B 0x0258 w # VOUT_MIN 600mV
i2cset -y "${BUS}" 0x44 0x00 0xFF b # All pages (VCS & VDD)
i2cset -y "${BUS}" 0x44 0x01 0xB0 b # Enable
i2cset -y "${BUS}" 0x46 0x00 0x01 b # VDN
i2cset -y "${BUS}" 0x46 0x01 0xB0 b # Enable
}
override_avs_settings 4
override_avs_settings 5
@@ -0,0 +1,20 @@
[Unit]
Description=Enable the AVS bus on VRMs
Wants=obmc-host-start-pre@%i.target
Before=obmc-host-start-pre@%i.target
Wants=obmc-power-on@%i.target
After=obmc-power-on@%i.target
Wants=fsi-scan@%i.service
After=fsi-scan@%i.service
Conflicts=obmc-chassis-poweroff@%i.target
ConditionPathExists=!/run/openbmc/chassis@%i-on
[Service]
ExecStart=/usr/bin/avsbus-control.sh
SyslogIdentifier=avsbus-control.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=obmc-chassis-poweron@%i.target
@@ -0,0 +1,10 @@
RDEPENDS:${PN}:append = " \
obmc-yadro-backup \
obmc-yadro-lsinventory \
op-proc-control \
openpower-esel-parser \
phosphor-debug-collector \
phosphor-led-manager \
phosphor-objmgr \
phosphor-state-manager \
"
@@ -0,0 +1,35 @@
SUMMARY = "YAML configuration for Nicole"
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://nicole-ipmi-fru.yaml \
file://nicole-ipmi-fru-properties.yaml \
file://nicole-ipmi-inventory-sensors.yaml \
file://nicole-ipmi-sensors.yaml \
"
S = "${WORKDIR}"
do_install() {
install -m 0644 -D nicole-ipmi-fru-properties.yaml \
${D}${datadir}/${BPN}/ipmi-extra-properties.yaml
install -m 0644 -D nicole-ipmi-fru.yaml \
${D}${datadir}/${BPN}/ipmi-fru-read.yaml
install -m 0644 -D nicole-ipmi-inventory-sensors.yaml \
${D}${datadir}/${BPN}/ipmi-inventory-sensors.yaml
install -m 0644 -D nicole-ipmi-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"
@@ -0,0 +1,47 @@
/system: &DEFAULTS
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/motherboard:
<<: *DEFAULTS
/system/chassis/motherboard/cpu0:
<<: *DEFAULTS
/system/chassis/motherboard/cpu1:
<<: *DEFAULTS
/system/chassis/motherboard/dimm0:
<<: *DEFAULTS
/system/chassis/motherboard/dimm1:
<<: *DEFAULTS
/system/chassis/motherboard/dimm2:
<<: *DEFAULTS
/system/chassis/motherboard/dimm3:
<<: *DEFAULTS
/system/chassis/motherboard/dimm4:
<<: *DEFAULTS
/system/chassis/motherboard/dimm5:
<<: *DEFAULTS
/system/chassis/motherboard/dimm6:
<<: *DEFAULTS
/system/chassis/motherboard/dimm7:
<<: *DEFAULTS
/system/chassis/motherboard/dimm8:
<<: *DEFAULTS
/system/chassis/motherboard/dimm9:
<<: *DEFAULTS
/system/chassis/motherboard/dimm10:
<<: *DEFAULTS
/system/chassis/motherboard/dimm11:
<<: *DEFAULTS
/system/chassis/motherboard/dimm12:
<<: *DEFAULTS
/system/chassis/motherboard/dimm13:
<<: *DEFAULTS
/system/chassis/motherboard/dimm14:
<<: *DEFAULTS
/system/chassis/motherboard/dimm15:
<<: *DEFAULTS
/system/chassis/motherboard/opfw:
<<: *DEFAULTS
@@ -0,0 +1,165 @@
1:
/system/chassis/motherboard/cpu0: &CPU_DEFAULTS
entityID: 3
entityInstance: 1
interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: Custom Field 2
IPMIFruSection: Board
IPMIFruValueDelimiter: 58
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
2:
/system/chassis/motherboard/cpu1:
<<: *CPU_DEFAULTS
entityInstance: 2
3:
/system:
entityID: 7
entityInstance: 1
interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
Model:
IPMIFruProperty: Part Number
IPMIFruSection: Chassis
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Chassis
/system/chassis/motherboard:
entityID: 7
entityInstance: 1
interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
4:
/system/chassis/motherboard/dimm0: &DIMM_DEFAULTS
entityID: 32
entityInstance: 1
interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Product
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Product
Model:
IPMIFruProperty: Model Number
IPMIFruSection: Product
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Product
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Product
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: Version
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Product
5:
/system/chassis/motherboard/dimm1:
<<: *DIMM_DEFAULTS
entityInstance: 2
6:
/system/chassis/motherboard/dimm2:
<<: *DIMM_DEFAULTS
entityInstance: 3
7:
/system/chassis/motherboard/dimm3:
<<: *DIMM_DEFAULTS
entityInstance: 4
8:
/system/chassis/motherboard/dimm4:
<<: *DIMM_DEFAULTS
entityInstance: 5
9:
/system/chassis/motherboard/dimm5:
<<: *DIMM_DEFAULTS
entityInstance: 6
10:
/system/chassis/motherboard/dimm6:
<<: *DIMM_DEFAULTS
entityInstance: 7
11:
/system/chassis/motherboard/dimm7:
<<: *DIMM_DEFAULTS
entityInstance: 8
12:
/system/chassis/motherboard/dimm8:
<<: *DIMM_DEFAULTS
entityInstance: 9
13:
/system/chassis/motherboard/dimm9:
<<: *DIMM_DEFAULTS
entityInstance: 10
14:
/system/chassis/motherboard/dimm10:
<<: *DIMM_DEFAULTS
entityInstance: 11
15:
/system/chassis/motherboard/dimm11:
<<: *DIMM_DEFAULTS
entityInstance: 12
16:
/system/chassis/motherboard/dimm12:
<<: *DIMM_DEFAULTS
entityInstance: 13
17:
/system/chassis/motherboard/dimm13:
<<: *DIMM_DEFAULTS
entityInstance: 14
18:
/system/chassis/motherboard/dimm14:
<<: *DIMM_DEFAULTS
entityInstance: 15
19:
/system/chassis/motherboard/dimm15:
<<: *DIMM_DEFAULTS
entityInstance: 16
28:
/system/chassis/motherboard/opfw:
entityID: 34
entityInstance: 0
interfaces:
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Product
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: Version
IPMIFruSection: Product
@@ -0,0 +1,340 @@
/xyz/openbmc_project/inventory/system:
eventReadingType: 111
offset: 2
sensorID: 144
sensorType: 18
/xyz/openbmc_project/inventory/system/chassis/motherboard:
eventReadingType: 3
offset: 0
sensorID: 140
sensorType: 199
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0:
eventReadingType: 111
offset: 8
sensorID: 8
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core0:
eventReadingType: 111
offset: 8
sensorID: 43
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1:
eventReadingType: 111
offset: 8
sensorID: 44
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core10:
eventReadingType: 111
offset: 8
sensorID: 53
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core11:
eventReadingType: 111
offset: 8
sensorID: 54
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core12:
eventReadingType: 111
offset: 8
sensorID: 55
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core13:
eventReadingType: 111
offset: 8
sensorID: 56
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core14:
eventReadingType: 111
offset: 8
sensorID: 57
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core15:
eventReadingType: 111
offset: 8
sensorID: 58
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core16:
eventReadingType: 111
offset: 8
sensorID: 59
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core17:
eventReadingType: 111
offset: 8
sensorID: 60
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core18:
eventReadingType: 111
offset: 8
sensorID: 61
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core19:
eventReadingType: 111
offset: 8
sensorID: 62
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core2:
eventReadingType: 111
offset: 8
sensorID: 45
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core20:
eventReadingType: 111
offset: 8
sensorID: 63
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core21:
eventReadingType: 111
offset: 8
sensorID: 64
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core22:
eventReadingType: 111
offset: 8
sensorID: 65
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core23:
eventReadingType: 111
offset: 8
sensorID: 66
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core3:
eventReadingType: 111
offset: 8
sensorID: 46
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core4:
eventReadingType: 111
offset: 8
sensorID: 47
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core5:
eventReadingType: 111
offset: 8
sensorID: 48
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core6:
eventReadingType: 111
offset: 8
sensorID: 49
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core7:
eventReadingType: 111
offset: 8
sensorID: 50
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core8:
eventReadingType: 111
offset: 8
sensorID: 51
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core9:
eventReadingType: 111
offset: 8
sensorID: 52
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1:
eventReadingType: 111
offset: 8
sensorID: 9
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core0:
eventReadingType: 111
offset: 8
sensorID: 67
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core1:
eventReadingType: 111
offset: 8
sensorID: 68
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core10:
eventReadingType: 111
offset: 8
sensorID: 77
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core11:
eventReadingType: 111
offset: 8
sensorID: 78
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core12:
eventReadingType: 111
offset: 8
sensorID: 79
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core13:
eventReadingType: 111
offset: 8
sensorID: 80
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core14:
eventReadingType: 111
offset: 8
sensorID: 81
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core15:
eventReadingType: 111
offset: 8
sensorID: 82
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core16:
eventReadingType: 111
offset: 8
sensorID: 83
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core17:
eventReadingType: 111
offset: 8
sensorID: 84
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core18:
eventReadingType: 111
offset: 8
sensorID: 85
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core19:
eventReadingType: 111
offset: 8
sensorID: 86
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core2:
eventReadingType: 111
offset: 8
sensorID: 69
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core20:
eventReadingType: 111
offset: 8
sensorID: 87
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core21:
eventReadingType: 111
offset: 8
sensorID: 88
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core22:
eventReadingType: 111
offset: 8
sensorID: 89
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core23:
eventReadingType: 111
offset: 8
sensorID: 90
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core3:
eventReadingType: 111
offset: 8
sensorID: 70
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core4:
eventReadingType: 111
offset: 8
sensorID: 71
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core5:
eventReadingType: 111
offset: 8
sensorID: 72
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core6:
eventReadingType: 111
offset: 8
sensorID: 73
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core7:
eventReadingType: 111
offset: 8
sensorID: 74
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core8:
eventReadingType: 111
offset: 8
sensorID: 75
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core9:
eventReadingType: 111
offset: 8
sensorID: 76
sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0:
eventReadingType: 111
offset: 4
sensorID: 11
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1:
eventReadingType: 111
offset: 4
sensorID: 12
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10:
eventReadingType: 111
offset: 4
sensorID: 21
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11:
eventReadingType: 111
offset: 4
sensorID: 22
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12:
eventReadingType: 111
offset: 4
sensorID: 23
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13:
eventReadingType: 111
offset: 4
sensorID: 24
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14:
eventReadingType: 111
offset: 4
sensorID: 25
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15:
eventReadingType: 111
offset: 4
sensorID: 26
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2:
eventReadingType: 111
offset: 4
sensorID: 13
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3:
eventReadingType: 111
offset: 4
sensorID: 14
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4:
eventReadingType: 111
offset: 4
sensorID: 15
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5:
eventReadingType: 111
offset: 4
sensorID: 16
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6:
eventReadingType: 111
offset: 4
sensorID: 17
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7:
eventReadingType: 111
offset: 4
sensorID: 18
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8:
eventReadingType: 111
offset: 4
sensorID: 19
sensorType: 12
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9:
eventReadingType: 111
offset: 4
sensorID: 20
sensorType: 12
@@ -0,0 +1,762 @@
2:
entityID: 34
entityInstance: 1
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
sensorReadingType: 111
sensorType: 15
serviceInterface: org.freedesktop.DBus.Properties
3: &OCC_DEFAULTS
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: 7
serviceInterface: org.freedesktop.DBus.Properties
4:
<<: *OCC_DEFAULTS
entityInstance: 2
path: /org/open_power/control/occ1
8: &CPU_DEFAULTS
entityID: 3
entityInstance: 1
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
path: /system/chassis/motherboard/cpu0
readingType: assertion
sensorNamePattern: nameLeaf
sensorReadingType: 111
sensorType: 7
serviceInterface: xyz.openbmc_project.Inventory.Manager
9:
<<: *CPU_DEFAULTS
entityInstance: 2
path: /system/chassis/motherboard/cpu1
11: &DIMM_FUNC_DEFAULTS
entityID: 32
entityInstance: 1
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
path: /system/chassis/motherboard/dimm0
readingType: assertion
sensorNamePattern: nameLeaf
sensorReadingType: 111
sensorType: 12
serviceInterface: xyz.openbmc_project.Inventory.Manager
12:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 2
path: /system/chassis/motherboard/dimm1
13:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 3
path: /system/chassis/motherboard/dimm2
14:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 4
path: /system/chassis/motherboard/dimm3
15:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 5
path: /system/chassis/motherboard/dimm4
16:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 6
path: /system/chassis/motherboard/dimm5
17:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 7
path: /system/chassis/motherboard/dimm6
18:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 8
path: /system/chassis/motherboard/dimm7
19:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 9
path: /system/chassis/motherboard/dimm8
20:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 10
path: /system/chassis/motherboard/dimm9
21:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 11
path: /system/chassis/motherboard/dimm10
22:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 12
path: /system/chassis/motherboard/dimm11
23:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 13
path: /system/chassis/motherboard/dimm12
24:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 14
path: /system/chassis/motherboard/dimm13
25:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 15
path: /system/chassis/motherboard/dimm14
26:
<<: *DIMM_FUNC_DEFAULTS
entityInstance: 16
path: /system/chassis/motherboard/dimm15
27: &DIMM_TEMP_DEFAULTS
bExp: 0
entityID: 32
entityInstance: 17
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
255:
type: double
multiplierM: 5
mutability: Mutability::Write|Mutability::Read
offsetB: 0
path: /xyz/openbmc_project/sensors/temperature/dimm0_temp
rExp: -1
readingType: readingData
scale: 0
sensorNamePattern: nameLeaf
sensorReadingType: 1
sensorType: 1
serviceInterface: org.freedesktop.DBus.Properties
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
28:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 18
path: /xyz/openbmc_project/sensors/temperature/dimm1_temp
29:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 25
path: /xyz/openbmc_project/sensors/temperature/dimm2_temp
30:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 26
path: /xyz/openbmc_project/sensors/temperature/dimm3_temp
31:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 27
path: /xyz/openbmc_project/sensors/temperature/dimm4_temp
32:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 28
path: /xyz/openbmc_project/sensors/temperature/dimm5_temp
33:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 29
path: /xyz/openbmc_project/sensors/temperature/dimm6_temp
34:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 30
path: /xyz/openbmc_project/sensors/temperature/dimm7_temp
35:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 31
path: /xyz/openbmc_project/sensors/temperature/dimm8_temp
36:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 32
path: /xyz/openbmc_project/sensors/temperature/dimm9_temp
37:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 19
path: /xyz/openbmc_project/sensors/temperature/dimm10_temp
38:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 20
path: /xyz/openbmc_project/sensors/temperature/dimm11_temp
39:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 21
path: /xyz/openbmc_project/sensors/temperature/dimm12_temp
40:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 22
path: /xyz/openbmc_project/sensors/temperature/dimm13_temp
41:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 23
path: /xyz/openbmc_project/sensors/temperature/dimm14_temp
42:
<<: *DIMM_TEMP_DEFAULTS
entityInstance: 24
path: /xyz/openbmc_project/sensors/temperature/dimm15_temp
43: &CORE_FUNC_DEFAULTS
entityID: 208
entityInstance: 1
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
path: /system/chassis/motherboard/cpu0/core0
readingType: assertion
sensorNamePattern: nameParentLeaf
sensorReadingType: 111
sensorType: 7
serviceInterface: xyz.openbmc_project.Inventory.Manager
44:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 2
path: /system/chassis/motherboard/cpu0/core1
45:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 3
path: /system/chassis/motherboard/cpu0/core2
46:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 4
path: /system/chassis/motherboard/cpu0/core3
47:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 5
path: /system/chassis/motherboard/cpu0/core4
48:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 6
path: /system/chassis/motherboard/cpu0/core5
49:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 7
path: /system/chassis/motherboard/cpu0/core6
50:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 8
path: /system/chassis/motherboard/cpu0/core7
51:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 9
path: /system/chassis/motherboard/cpu0/core8
52:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 10
path: /system/chassis/motherboard/cpu0/core9
53:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 11
path: /system/chassis/motherboard/cpu0/core10
54:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 12
path: /system/chassis/motherboard/cpu0/core11
55:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 13
path: /system/chassis/motherboard/cpu0/core12
56:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 14
path: /system/chassis/motherboard/cpu0/core13
57:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 15
path: /system/chassis/motherboard/cpu0/core14
58:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 16
path: /system/chassis/motherboard/cpu0/core15
59:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 17
path: /system/chassis/motherboard/cpu0/core16
60:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 18
path: /system/chassis/motherboard/cpu0/core17
61:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 19
path: /system/chassis/motherboard/cpu0/core18
62:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 20
path: /system/chassis/motherboard/cpu0/core19
63:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 21
path: /system/chassis/motherboard/cpu0/core20
64:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 22
path: /system/chassis/motherboard/cpu0/core21
65:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 23
path: /system/chassis/motherboard/cpu0/core22
66:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 24
path: /system/chassis/motherboard/cpu0/core23
67:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 25
path: /system/chassis/motherboard/cpu1/core0
68:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 26
path: /system/chassis/motherboard/cpu1/core1
69:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 27
path: /system/chassis/motherboard/cpu1/core2
70:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 28
path: /system/chassis/motherboard/cpu1/core3
71:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 29
path: /system/chassis/motherboard/cpu1/core4
72:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 30
path: /system/chassis/motherboard/cpu1/core5
73:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 31
path: /system/chassis/motherboard/cpu1/core6
74:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 32
path: /system/chassis/motherboard/cpu1/core7
75:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 33
path: /system/chassis/motherboard/cpu1/core8
76:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 34
path: /system/chassis/motherboard/cpu1/core9
77:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 35
path: /system/chassis/motherboard/cpu1/core10
78:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 36
path: /system/chassis/motherboard/cpu1/core11
79:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 37
path: /system/chassis/motherboard/cpu1/core12
80:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 38
path: /system/chassis/motherboard/cpu1/core13
81:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 39
path: /system/chassis/motherboard/cpu1/core14
82:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 40
path: /system/chassis/motherboard/cpu1/core15
83:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 41
path: /system/chassis/motherboard/cpu1/core16
84:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 42
path: /system/chassis/motherboard/cpu1/core17
85:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 43
path: /system/chassis/motherboard/cpu1/core18
86:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 44
path: /system/chassis/motherboard/cpu1/core19
87:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 45
path: /system/chassis/motherboard/cpu1/core20
88:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 46
path: /system/chassis/motherboard/cpu1/core21
89:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 47
path: /system/chassis/motherboard/cpu1/core22
90:
<<: *CORE_FUNC_DEFAULTS
entityInstance: 48
path: /system/chassis/motherboard/cpu1/core23
91: &CORE_TEMP_DEFAULTS
bExp: 0
entityID: 208
entityInstance: 49
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
255:
type: double
multiplierM: 5
mutability: Mutability::Write|Mutability::Read
offsetB: 0
path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp
rExp: -1
readingType: readingData
scale: 0
sensorNamePattern: nameLeaf
sensorReadingType: 1
sensorType: 1
serviceInterface: org.freedesktop.DBus.Properties
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
92:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 50
path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp
93:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 51
path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp
94:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 52
path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp
95:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 53
path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp
96:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 54
path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp
97:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 55
path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp
98:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 56
path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp
99:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 57
path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp
100:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 58
path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp
101:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 59
path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp
102:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 60
path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp
103:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 61
path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp
104:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 62
path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp
105:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 63
path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp
106:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 64
path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp
107:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 65
path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp
108:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 66
path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp
109:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 67
path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp
110:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 68
path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp
111:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 69
path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp
112:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 70
path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp
113:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 71
path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp
114:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 72
path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp
115:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 73
path: /xyz/openbmc_project/sensors/temperature/p1_core0_temp
116:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 74
path: /xyz/openbmc_project/sensors/temperature/p1_core1_temp
117:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 75
path: /xyz/openbmc_project/sensors/temperature/p1_core2_temp
118:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 76
path: /xyz/openbmc_project/sensors/temperature/p1_core3_temp
119:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 77
path: /xyz/openbmc_project/sensors/temperature/p1_core4_temp
120:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 78
path: /xyz/openbmc_project/sensors/temperature/p1_core5_temp
121:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 79
path: /xyz/openbmc_project/sensors/temperature/p1_core6_temp
122:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 80
path: /xyz/openbmc_project/sensors/temperature/p1_core7_temp
123:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 81
path: /xyz/openbmc_project/sensors/temperature/p1_core8_temp
124:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 82
path: /xyz/openbmc_project/sensors/temperature/p1_core9_temp
125:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 83
path: /xyz/openbmc_project/sensors/temperature/p1_core10_temp
126:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 84
path: /xyz/openbmc_project/sensors/temperature/p1_core11_temp
127:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 85
path: /xyz/openbmc_project/sensors/temperature/p1_core12_temp
128:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 86
path: /xyz/openbmc_project/sensors/temperature/p1_core13_temp
129:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 87
path: /xyz/openbmc_project/sensors/temperature/p1_core14_temp
130:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 88
path: /xyz/openbmc_project/sensors/temperature/p1_core15_temp
131:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 89
path: /xyz/openbmc_project/sensors/temperature/p1_core16_temp
132:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 90
path: /xyz/openbmc_project/sensors/temperature/p1_core17_temp
133:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 91
path: /xyz/openbmc_project/sensors/temperature/p1_core18_temp
134:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 92
path: /xyz/openbmc_project/sensors/temperature/p1_core19_temp
135:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 93
path: /xyz/openbmc_project/sensors/temperature/p1_core20_temp
136:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 94
path: /xyz/openbmc_project/sensors/temperature/p1_core21_temp
137:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 95
path: /xyz/openbmc_project/sensors/temperature/p1_core22_temp
138:
<<: *CORE_TEMP_DEFAULTS
entityInstance: 96
path: /xyz/openbmc_project/sensors/temperature/p1_core23_temp
139:
entityID: 34
entityInstance: 2
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
sensorReadingType: 111
sensorType: 195
serviceInterface: org.freedesktop.DBus.Properties
145:
entityID: 35
entityInstance: 1
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
sensorReadingType: 111
sensorType: 31
serviceInterface: org.freedesktop.DBus.Properties
254:
sensorType: 2
path: /xyz/openbmc_project/sensors/voltage/vbat
sensorReadingType: 1
# This gives the measurement 1.800..3.585 volts with a step 0.007
multiplierM: 7
offsetB: 18
bExp: 2
rExp: -3
scale: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
mutability: Mutability::Read
readingType: readingData
serviceInterface: org.freedesktop.DBus.Properties
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
255:
type: double
@@ -0,0 +1,4 @@
lpc-address = 0x3f8
sirq = 4
local-tty = ttyS0
local-tty-baud = 115200
@@ -0,0 +1 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
@@ -0,0 +1 @@
PACKAGECONFIG:append = " verify_pnor_signature"
@@ -0,0 +1 @@
PACKAGECONFIG:append = " verify_signature"
@@ -0,0 +1,60 @@
From 53241d7be35fba23079504468090d770d4116831 Mon Sep 17 00:00:00 2001
From: Artem Senichev <a.senichev@yadro.com>
Date: Tue, 28 Jul 2020 17:38:17 +0300
Subject: [PATCH] Stop and send SRESET for one thread only
Fixes bugs preventing the host from creating a crash dump.
Stopping all threads leads to errors in skiboot:
[ 163.237293219,3] Could not stop thread 0:0:1: Thread is quiesced already.
If the kernel has xmon support, exiting the debugger causes the kernel
to hang:
[ 235.694220] watchdog: CPU 97 TB:187362511366, last heartbeat TB:159120095297 (55160ms ago)
[ 235.694276] watchdog: CPU 101 Hard LOCKUP
Sending SRESET to all threads causes kernel panic:
[ 50.495727] Kernel panic - not syncing: Unrecoverable nested System Reset
Signed-off-by: Artem Senichev <a.senichev@yadro.com>
---
nmi_interface.cpp | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/nmi_interface.cpp b/nmi_interface.cpp
index fcce451..d022d7e 100644
--- a/nmi_interface.cpp
+++ b/nmi_interface.cpp
@@ -38,7 +38,7 @@ void NMI::nMI()
using InternalFailure =
sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
- struct pdbg_target* target;
+ struct pdbg_target* target = nullptr;
pdbg_for_each_class_target("thread", target)
{
@@ -51,11 +51,19 @@ void NMI::nMI()
report<InternalFailure>();
return;
}
+ break;
}
- if (thread_sreset_all() < 0)
+ if (!target)
{
- log<level::ERR>("Failed to sreset all threads");
+ log<level::ERR>("Thread not found");
+ report<InternalFailure>();
+ return;
+ }
+
+ if (thread_sreset(target) < 0)
+ {
+ log<level::ERR>("Failed to sreset thread");
report<InternalFailure>();
}
}
--
2.27.0
@@ -0,0 +1,2 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-Stop-and-send-SRESET-for-one-thread-only.patch"
@@ -0,0 +1 @@
RDEPENDS:${PN}:append = " avsbus-control"
@@ -0,0 +1,7 @@
OBMC_IMAGE_EXTRA_INSTALL:append = " \
first-boot-set-hostname \
mboxd \
obmc-yadro-cli \
openpower-fru-vpd \
"
IMAGE_FEATURES:remove:nicole = "obmc-user-mgmt-ldap"
@@ -0,0 +1,3 @@
EXTRA_OECMAKE:append = " \
-DBMCWEB_ENABLE_MUTUAL_TLS_AUTHENTICATION=OFF \
"
@@ -0,0 +1,5 @@
DEPENDS:append = " nicole-yaml-config"
EXTRA_OECONF = " \
INVSENSOR_YAML_GEN=${STAGING_DIR_HOST}${datadir}/nicole-yaml-config/ipmi-inventory-sensors.yaml \
"
@@ -0,0 +1,21 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
inherit systemd
RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils}"
SYSTEMD_SERVICE:${PN} = "${BPN}.service"
SRC_URI:append = " \
file://${BPN}-set-device-id.sh \
file://${BPN}.service \
"
S = "${WORKDIR}"
do_install:append() {
install -d ${D}${bindir} ${D}${systemd_system_unitdir}
install ${BPN}-set-device-id.sh ${D}${bindir}/
install -m 0644 ${BPN}.service ${D}${systemd_system_unitdir}/
}
FILES:${PN}:append = " \
${bindir}/${BPN}-set-device-id.sh \
"
@@ -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" : "RESERVED",
"is_valid" : false,
"active_sessions" : 0,
"channel_info" : {
"medium_type" : "lan-802.3",
"protocol_type" : "ipmb-1.0",
"session_supported" : "multi-session",
"is_ipmi" : true
}
},
"3" : {
"name" : "RESERVED",
"is_valid" : false,
"active_sessions" : 0,
"channel_info" : {
"medium_type" : "reserved",
"protocol_type" : "na",
"session_supported" : "session-less",
"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" : "RESERVED",
"is_valid" : false,
"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" : true,
"active_sessions" : 0,
"channel_info" : {
"medium_type" : "ipmb",
"protocol_type" : "ipmb-1.0",
"session_supported" : "session-less",
"is_ipmi" : true
}
},
"15" : {
"name" : "SMS",
"is_valid" : true,
"active_sessions" : 0,
"channel_info" : {
"medium_type" : "system-interface",
"protocol_type" : "kcs",
"session_supported" : "session-less",
"is_ipmi" : true
}
}
}
@@ -0,0 +1,7 @@
{
"id": 0,
"revision": 1,
"addn_dev_support": 0,
"manuf_id": 49769,
"prod_id": 11
}
@@ -0,0 +1,5 @@
#!/bin/sh -eu
BMCPOS=$(awk -v RS=" " '/^bmcposition=/{print substr($0,13)}' /proc/cmdline)
sed -r "s/\"id\"\s*:\s*[0-9]+\s*,/\"id\": ${BMCPOS:-0},/" -i \
/usr/share/ipmi-providers/dev_id.json
@@ -0,0 +1,12 @@
[Unit]
Description=Set DeviceID for ipmi-host
Before=phosphor-ipmi-host.service
[Service]
Type=oneshot
TimeoutSec=0
RemainAfterExit=yes
ExecStart=/usr/bin/env phosphor-ipmi-config-set-device-id.sh
[Install]
RequiredBy=phosphor-ipmi-host.service
@@ -0,0 +1,4 @@
DEPENDS:append = " nicole-yaml-config"
IPMI_FRU_YAML="${STAGING_DIR_HOST}${datadir}/nicole-yaml-config/ipmi-fru-read.yaml"
IPMI_FRU_PROP_YAML="${STAGING_DIR_HOST}${datadir}/nicole-yaml-config/ipmi-extra-properties.yaml"
@@ -0,0 +1,7 @@
DEPENDS:append = " nicole-yaml-config"
EXTRA_OEMESON = " \
-Dsensor-yaml-gen=${STAGING_DIR_HOST}${datadir}/nicole-yaml-config/ipmi-sensors.yaml \
-Dinvsensor-yaml-gen=${STAGING_DIR_HOST}${datadir}/nicole-yaml-config/ipmi-inventory-sensors.yaml \
-Dfru-yaml-gen=${STAGING_DIR_HOST}${datadir}/nicole-yaml-config/ipmi-fru-read.yaml \
"
@@ -0,0 +1,18 @@
SUMMARY = "Phosphor LED Group Management for Nicole"
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"
S = "${WORKDIR}"
do_install() {
SRC=${S}
DEST=${D}${datadir}/phosphor-led-manager
install -D ${SRC}/led.yaml ${DEST}/led.yaml
}
@@ -0,0 +1,120 @@
#
# If the LED has a label in DTS like:
# label = "device:color:function";
# the D-Bus name looks like:
# device_function_color
#
bmc_booted:
platform_power_green:
Action: 'Blink'
Priority: 'On'
power_on:
platform_power_green:
Action: 'On'
Priority: 'On'
enclosure_identify:
platform_indicator_blue:
Action: 'Blink'
Priority: 'Blink'
enclosure_fault: &SYS_FAULT
platform_fault_red:
Action: 'Blink'
Priority: 'Blink'
enclosure_warning: &FRU_FAULT
platform_alarm_yellow:
Action: 'Blink'
Priority: 'Blink'
bmc_fault:
<<: *SYS_FAULT
motherboard_fault:
<<: *SYS_FAULT
system_fault:
<<: *SYS_FAULT
cpu0_fault:
<<: *FRU_FAULT
cpu1_fault:
<<: *FRU_FAULT
core0_fault:
<<: *FRU_FAULT
core1_fault:
<<: *FRU_FAULT
core2_fault:
<<: *FRU_FAULT
core3_fault:
<<: *FRU_FAULT
core4_fault:
<<: *FRU_FAULT
core5_fault:
<<: *FRU_FAULT
core6_fault:
<<: *FRU_FAULT
core7_fault:
<<: *FRU_FAULT
core8_fault:
<<: *FRU_FAULT
core9_fault:
<<: *FRU_FAULT
core10_fault:
<<: *FRU_FAULT
core11_fault:
<<: *FRU_FAULT
core12_fault:
<<: *FRU_FAULT
core13_fault:
<<: *FRU_FAULT
core14_fault:
<<: *FRU_FAULT
core15_fault:
<<: *FRU_FAULT
core16_fault:
<<: *FRU_FAULT
core17_fault:
<<: *FRU_FAULT
core18_fault:
<<: *FRU_FAULT
core19_fault:
<<: *FRU_FAULT
core20_fault:
<<: *FRU_FAULT
core21_fault:
<<: *FRU_FAULT
core22_fault:
<<: *FRU_FAULT
core23_fault:
<<: *FRU_FAULT
dimm0_fault:
<<: *FRU_FAULT
dimm1_fault:
<<: *FRU_FAULT
dimm2_fault:
<<: *FRU_FAULT
dimm3_fault:
<<: *FRU_FAULT
dimm4_fault:
<<: *FRU_FAULT
dimm5_fault:
<<: *FRU_FAULT
dimm6_fault:
<<: *FRU_FAULT
dimm7_fault:
<<: *FRU_FAULT
dimm8_fault:
<<: *FRU_FAULT
dimm9_fault:
<<: *FRU_FAULT
dimm10_fault:
<<: *FRU_FAULT
dimm11_fault:
<<: *FRU_FAULT
dimm12_fault:
<<: *FRU_FAULT
dimm13_fault:
<<: *FRU_FAULT
dimm14_fault:
<<: *FRU_FAULT
dimm15_fault:
<<: *FRU_FAULT
@@ -0,0 +1,23 @@
SUMMARY = "OpenPOWER eSEL parser"
DESCRIPTION = "Shared library and console utility for parsing eSEL."
HOMEPAGE = "https://github.com/YADRO-KNS/openpower-esel-parser"
PR = "r1"
PV = "1.0+git${SRCPV}"
inherit autotools
inherit pkgconfig
inherit perlnative
# License info
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
# Dependencies
DEPENDS += "autoconf-archive-native \
libxml-libxml-perl-native \
libxml-simple-perl-native"
# Source code repository
S = "${WORKDIR}/git"
SRC_URI = "gitsm://github.com/YADRO-KNS/openpower-esel-parser;branch=master;protocol=https"
SRCREV = "5bf636b0b8bd0d09928b1879aa480c60e4452e80"
@@ -0,0 +1 @@
MBOXD_FLASH_SIZE = "64M"
@@ -0,0 +1,3 @@
{
"eth0":"ethernet"
}
@@ -0,0 +1,10 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
PACKAGECONFIG:append = " sync-mac"
SRC_URI:append = " file://config.json "
FILES:${PN} += "${datadir}/network/*.json"
do_install:append() {
install -d ${D}${datadir}/network/
install -m 0644 ${WORKDIR}/config.json ${D}${datadir}/network/
}
@@ -0,0 +1,6 @@
- Instance: 0
SensorID: 0x03
SensorName: occ0
- Instance: 1
SensorID: 0x04
SensorName: occ1
@@ -0,0 +1,18 @@
SUMMARY = "Nicole OCC Control sensor IDs"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-occ-control
inherit native
PROVIDES += "virtual/openpower-occ-control-config-native"
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI += "file://occ_sensor.yaml"
S = "${WORKDIR}"
do_install() {
install -d ${YAML_DEST}/
install ${S}/occ_sensor.yaml ${YAML_DEST}/
}
@@ -0,0 +1,7 @@
RDEPENDS:${PN}-inventory:append = " openpower-occ-control"
RDEPENDS:${PN}-extras:append = " \
phosphor-hostlogger \
"
RDEPENDS:${PN}-software:append = " \
obmc-yadro-fwupdate \
"
@@ -0,0 +1,228 @@
MODE_temp1 = "label"
MODE_temp2 = "label"
MODE_temp3 = "label"
MODE_temp4 = "label"
MODE_temp5 = "label"
MODE_temp6 = "label"
MODE_temp7 = "label"
MODE_temp8 = "label"
MODE_temp9 = "label"
MODE_temp10 = "label"
MODE_temp11 = "label"
MODE_temp12 = "label"
MODE_temp13 = "label"
MODE_temp14 = "label"
MODE_temp15 = "label"
MODE_temp16 = "label"
MODE_temp17 = "label"
MODE_temp18 = "label"
MODE_temp19 = "label"
MODE_temp20 = "label"
MODE_temp21 = "label"
MODE_temp22 = "label"
MODE_temp23 = "label"
MODE_temp24 = "label"
MODE_temp25 = "label"
MODE_temp26 = "label"
MODE_temp27 = "label"
MODE_temp28 = "label"
MODE_temp29 = "label"
MODE_temp30 = "label"
MODE_temp31 = "label"
MODE_temp32 = "label"
LABEL_temp91 = "p0_core0_temp"
WARNHI_temp91 = "78000"
WARNLO_temp91 = "0"
CRITHI_temp91 = "83000"
CRITLO_temp91 = "0"
LABEL_temp92 = "p0_core1_temp"
WARNHI_temp92 = "78000"
WARNLO_temp92 = "0"
CRITHI_temp92 = "83000"
CRITLO_temp92 = "0"
LABEL_temp93 = "p0_core2_temp"
WARNHI_temp93 = "78000"
WARNLO_temp93 = "0"
CRITHI_temp93 = "83000"
CRITLO_temp93 = "0"
LABEL_temp94 = "p0_core3_temp"
WARNHI_temp94 = "78000"
WARNLO_temp94 = "0"
CRITHI_temp94 = "83000"
CRITLO_temp94 = "0"
LABEL_temp95 = "p0_core4_temp"
WARNHI_temp95 = "78000"
WARNLO_temp95 = "0"
CRITHI_temp95 = "83000"
CRITLO_temp95 = "0"
LABEL_temp96 = "p0_core5_temp"
WARNHI_temp96 = "78000"
WARNLO_temp96 = "0"
CRITHI_temp96 = "83000"
CRITLO_temp96 = "0"
LABEL_temp97 = "p0_core6_temp"
WARNHI_temp97 = "78000"
WARNLO_temp97 = "0"
CRITHI_temp97 = "83000"
CRITLO_temp97 = "0"
LABEL_temp98 = "p0_core7_temp"
WARNHI_temp98 = "78000"
WARNLO_temp98 = "0"
CRITHI_temp98 = "83000"
CRITLO_temp98 = "0"
LABEL_temp99 = "p0_core8_temp"
WARNHI_temp99 = "78000"
WARNLO_temp99 = "0"
CRITHI_temp99 = "83000"
CRITLO_temp99 = "0"
LABEL_temp100 = "p0_core9_temp"
WARNHI_temp100 = "78000"
WARNLO_temp100 = "0"
CRITHI_temp100 = "83000"
CRITLO_temp100 = "0"
LABEL_temp101 = "p0_core10_temp"
WARNHI_temp101 = "78000"
WARNLO_temp101 = "0"
CRITHI_temp101 = "83000"
CRITLO_temp101 = "0"
LABEL_temp102 = "p0_core11_temp"
WARNHI_temp102 = "78000"
WARNLO_temp102 = "0"
CRITHI_temp102 = "83000"
CRITLO_temp102 = "0"
LABEL_temp103 = "p0_core12_temp"
WARNHI_temp103 = "78000"
WARNLO_temp103 = "0"
CRITHI_temp103 = "83000"
CRITLO_temp103 = "0"
LABEL_temp104 = "p0_core13_temp"
WARNHI_temp104 = "78000"
WARNLO_temp104 = "0"
CRITHI_temp104 = "83000"
CRITLO_temp104 = "0"
LABEL_temp105 = "p0_core14_temp"
WARNHI_temp105 = "78000"
WARNLO_temp105 = "0"
CRITHI_temp105 = "83000"
CRITLO_temp105 = "0"
LABEL_temp106 = "p0_core15_temp"
WARNHI_temp106 = "78000"
WARNLO_temp106 = "0"
CRITHI_temp106 = "83000"
CRITLO_temp106 = "0"
LABEL_temp107 = "p0_core16_temp"
WARNHI_temp107 = "78000"
WARNLO_temp107 = "0"
CRITHI_temp107 = "83000"
CRITLO_temp107 = "0"
LABEL_temp108 = "p0_core17_temp"
WARNHI_temp108 = "78000"
WARNLO_temp108 = "0"
CRITHI_temp108 = "83000"
CRITLO_temp108 = "0"
LABEL_temp109 = "p0_core18_temp"
WARNHI_temp109 = "78000"
WARNLO_temp109 = "0"
CRITHI_temp109 = "83000"
CRITLO_temp109 = "0"
LABEL_temp110 = "p0_core19_temp"
WARNHI_temp110 = "78000"
WARNLO_temp110 = "0"
CRITHI_temp110 = "83000"
CRITLO_temp110 = "0"
LABEL_temp111 = "p0_core20_temp"
WARNHI_temp111 = "78000"
WARNLO_temp111 = "0"
CRITHI_temp111 = "83000"
CRITLO_temp111 = "0"
LABEL_temp112 = "p0_core21_temp"
WARNHI_temp112 = "78000"
WARNLO_temp112 = "0"
CRITHI_temp112 = "83000"
CRITLO_temp112 = "0"
LABEL_temp113 = "p0_core22_temp"
WARNHI_temp113 = "78000"
WARNLO_temp113 = "0"
CRITHI_temp113 = "83000"
CRITLO_temp113 = "0"
LABEL_temp114 = "p0_core23_temp"
WARNHI_temp114 = "78000"
WARNLO_temp114 = "0"
CRITHI_temp114 = "83000"
CRITLO_temp114 = "0"
LABEL_temp27 = "dimm0_temp"
WARNHI_temp27 = "78000"
WARNLO_temp27 = "0"
CRITHI_temp27 = "83000"
CRITLO_temp27 = "0"
LABEL_temp28 = "dimm1_temp"
WARNHI_temp28 = "78000"
WARNLO_temp28 = "0"
CRITHI_temp28 = "83000"
CRITLO_temp28 = "0"
LABEL_temp29 = "dimm2_temp"
WARNHI_temp29 = "78000"
WARNLO_temp29 = "0"
CRITHI_temp29 = "83000"
CRITLO_temp29 = "0"
LABEL_temp30 = "dimm3_temp"
WARNHI_temp30 = "78000"
WARNLO_temp30 = "0"
CRITHI_temp30 = "83000"
CRITLO_temp30 = "0"
LABEL_temp31 = "dimm4_temp"
WARNHI_temp31 = "78000"
WARNLO_temp31 = "0"
CRITHI_temp31 = "83000"
CRITLO_temp31 = "0"
LABEL_temp32 = "dimm5_temp"
WARNHI_temp32 = "78000"
WARNLO_temp32 = "0"
CRITHI_temp32 = "83000"
CRITLO_temp32 = "0"
LABEL_temp33 = "dimm6_temp"
WARNHI_temp33 = "78000"
WARNLO_temp33 = "0"
CRITHI_temp33 = "83000"
CRITLO_temp33 = "0"
LABEL_temp34 = "dimm7_temp"
WARNHI_temp34 = "78000"
WARNLO_temp34 = "0"
CRITHI_temp34 = "83000"
CRITLO_temp34 = "0"
LABEL_power2 = "p0_power"
LABEL_power3 = "p0_vdd_power"
LABEL_power4 = "p0_vdn_power"
@@ -0,0 +1,228 @@
MODE_temp1 = "label"
MODE_temp2 = "label"
MODE_temp3 = "label"
MODE_temp4 = "label"
MODE_temp5 = "label"
MODE_temp6 = "label"
MODE_temp7 = "label"
MODE_temp8 = "label"
MODE_temp9 = "label"
MODE_temp10 = "label"
MODE_temp11 = "label"
MODE_temp12 = "label"
MODE_temp13 = "label"
MODE_temp14 = "label"
MODE_temp15 = "label"
MODE_temp16 = "label"
MODE_temp17 = "label"
MODE_temp18 = "label"
MODE_temp19 = "label"
MODE_temp20 = "label"
MODE_temp21 = "label"
MODE_temp22 = "label"
MODE_temp23 = "label"
MODE_temp24 = "label"
MODE_temp25 = "label"
MODE_temp26 = "label"
MODE_temp27 = "label"
MODE_temp28 = "label"
MODE_temp29 = "label"
MODE_temp30 = "label"
MODE_temp31 = "label"
MODE_temp32 = "label"
LABEL_temp115 = "p1_core0_temp"
WARNHI_temp115 = "78000"
WARNLO_temp115 = "0"
CRITHI_temp115 = "83000"
CRITLO_temp115 = "0"
LABEL_temp116 = "p1_core1_temp"
WARNHI_temp116 = "78000"
WARNLO_temp116 = "0"
CRITHI_temp116 = "83000"
CRITLO_temp116 = "0"
LABEL_temp117 = "p1_core2_temp"
WARNHI_temp117 = "78000"
WARNLO_temp117 = "0"
CRITHI_temp117 = "83000"
CRITLO_temp117 = "0"
LABEL_temp118 = "p1_core3_temp"
WARNHI_temp118 = "78000"
WARNLO_temp118 = "0"
CRITHI_temp118 = "83000"
CRITLO_temp118 = "0"
LABEL_temp119 = "p1_core4_temp"
WARNHI_temp119 = "78000"
WARNLO_temp119 = "0"
CRITHI_temp119 = "83000"
CRITLO_temp119 = "0"
LABEL_temp120 = "p1_core5_temp"
WARNHI_temp120 = "78000"
WARNLO_temp120 = "0"
CRITHI_temp120 = "83000"
CRITLO_temp120 = "0"
LABEL_temp121 = "p1_core6_temp"
WARNHI_temp121 = "78000"
WARNLO_temp121 = "0"
CRITHI_temp121 = "83000"
CRITLO_temp121 = "0"
LABEL_temp122 = "p1_core7_temp"
WARNHI_temp122 = "78000"
WARNLO_temp122 = "0"
CRITHI_temp122 = "83000"
CRITLO_temp122 = "0"
LABEL_temp123 = "p1_core8_temp"
WARNHI_temp123 = "78000"
WARNLO_temp123 = "0"
CRITHI_temp123 = "83000"
CRITLO_temp123 = "0"
LABEL_temp124 = "p1_core9_temp"
WARNHI_temp124 = "78000"
WARNLO_temp124 = "0"
CRITHI_temp124 = "83000"
CRITLO_temp124 = "0"
LABEL_temp125 = "p1_core10_temp"
WARNHI_temp125 = "78000"
WARNLO_temp125 = "0"
CRITHI_temp125 = "83000"
CRITLO_temp125 = "0"
LABEL_temp126 = "p1_core11_temp"
WARNHI_temp126 = "78000"
WARNLO_temp126 = "0"
CRITHI_temp126 = "83000"
CRITLO_temp126 = "0"
LABEL_temp127 = "p1_core12_temp"
WARNHI_temp127 = "78000"
WARNLO_temp127 = "0"
CRITHI_temp127 = "83000"
CRITLO_temp127 = "0"
LABEL_temp128 = "p1_core13_temp"
WARNHI_temp128 = "78000"
WARNLO_temp128 = "0"
CRITHI_temp128 = "83000"
CRITLO_temp128 = "0"
LABEL_temp129 = "p1_core14_temp"
WARNHI_temp129 = "78000"
WARNLO_temp129 = "0"
CRITHI_temp129 = "83000"
CRITLO_temp129 = "0"
LABEL_temp130 = "p1_core15_temp"
WARNHI_temp130 = "78000"
WARNLO_temp130 = "0"
CRITHI_temp130 = "83000"
CRITLO_temp130 = "0"
LABEL_temp131 = "p1_core16_temp"
WARNHI_temp131 = "78000"
WARNLO_temp131 = "0"
CRITHI_temp131 = "83000"
CRITLO_temp131 = "0"
LABEL_temp132 = "p1_core17_temp"
WARNHI_temp132 = "78000"
WARNLO_temp132 = "0"
CRITHI_temp132 = "83000"
CRITLO_temp132 = "0"
LABEL_temp133 = "p1_core18_temp"
WARNHI_temp133 = "78000"
WARNLO_temp133 = "0"
CRITHI_temp133 = "83000"
CRITLO_temp133 = "0"
LABEL_temp134 = "p1_core19_temp"
WARNHI_temp134 = "78000"
WARNLO_temp134 = "0"
CRITHI_temp134 = "83000"
CRITLO_temp134 = "0"
LABEL_temp135 = "p1_core20_temp"
WARNHI_temp135 = "78000"
WARNLO_temp135 = "0"
CRITHI_temp135 = "83000"
CRITLO_temp135 = "0"
LABEL_temp136 = "p1_core21_temp"
WARNHI_temp136 = "78000"
WARNLO_temp136 = "0"
CRITHI_temp136 = "83000"
CRITLO_temp136 = "0"
LABEL_temp137 = "p1_core22_temp"
WARNHI_temp137 = "78000"
WARNLO_temp137 = "0"
CRITHI_temp137 = "83000"
CRITLO_temp137 = "0"
LABEL_temp138 = "p1_core23_temp"
WARNHI_temp138 = "78000"
WARNLO_temp138 = "0"
CRITHI_temp138 = "83000"
CRITLO_temp138 = "0"
LABEL_temp35 = "dimm8_temp"
WARNHI_temp35 = "78000"
WARNLO_temp35 = "0"
CRITHI_temp35 = "83000"
CRITLO_temp35 = "0"
LABEL_temp36 = "dimm9_temp"
WARNHI_temp36 = "78000"
WARNLO_temp36 = "0"
CRITHI_temp36 = "83000"
CRITLO_temp36 = "0"
LABEL_temp37 = "dimm10_temp"
WARNHI_temp37 = "78000"
WARNLO_temp37 = "0"
CRITHI_temp37 = "83000"
CRITLO_temp37 = "0"
LABEL_temp38 = "dimm11_temp"
WARNHI_temp38 = "78000"
WARNLO_temp38 = "0"
CRITHI_temp38 = "83000"
CRITLO_temp38 = "0"
LABEL_temp39 = "dimm12_temp"
WARNHI_temp39 = "78000"
WARNLO_temp39 = "0"
CRITHI_temp39 = "83000"
CRITLO_temp39 = "0"
LABEL_temp40 = "dimm13_temp"
WARNHI_temp40 = "78000"
WARNLO_temp40 = "0"
CRITHI_temp40 = "83000"
CRITLO_temp40 = "0"
LABEL_temp41 = "dimm14_temp"
WARNHI_temp41 = "78000"
WARNLO_temp41 = "0"
CRITHI_temp41 = "83000"
CRITLO_temp41 = "0"
LABEL_temp42 = "dimm15_temp"
WARNHI_temp42 = "78000"
WARNLO_temp42 = "0"
CRITHI_temp42 = "83000"
CRITLO_temp42 = "0"
LABEL_power2 = "p1_power"
LABEL_power3 = "p1_vdd_power"
LABEL_power4 = "p1_vdn_power"
@@ -0,0 +1,13 @@
LABEL_in1=vbat
CRITLO_in1 = "2000"
WARNLO_in1 = "2500"
WARNHI_in1 = "3400"
CRITHI_in1 = "3500"
GAIN_in1=2.25
# GPIOP2 needs to be pulled high for battery voltage reading
GPIOCHIP_in1=0
GPIO_in1=122
# Read it every day so it does not impact battery life
INTERVAL=86400000000
@@ -0,0 +1,17 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
EXTRA_OEMESON:append = " -Dnegative-errno-on-fail=true"
ITEMS = "iio-hwmon-battery.conf"
OCCS = " \
00--00--00--06/sbefifo1-dev0/occ-hwmon.1 \
00--00--00--0a/fsi-master/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2 \
"
OCCSFMT = "devices/platform/gpio-fsi/fsi-master/fsi0/slave@00--00/{0}.conf"
OCCITEMS = "${@compose_list(d, 'OCCSFMT', 'OCCS')}"
ENVS = "obmc/hwmon/{0}"
SYSTEMD_ENVIRONMENT_FILE:${PN}:append = " ${@compose_list(d, 'ENVS', 'ITEMS')}"
SYSTEMD_ENVIRONMENT_FILE:${PN}:append = " ${@compose_list(d, 'ENVS', 'OCCITEMS')}"
@@ -0,0 +1,37 @@
---
/xyz/openbmc_project/control/host0/boot/mailbox:
- Interface: xyz.openbmc_project.Control.Boot.Mailbox
Properties:
Supported:
Default: 'true'
IANAEnterpriseNumber:
# This is IBM's IANA Enterprise number expected by petitboot
Default: 2
Data:
# The mailbox must be no smaller that 5 blocks. That is 80 bytes.
# This array does NOT include the 3-byte IANA enterprise number.
# So the minimum is 77 bytes. 512 bytes look enough to accomodate
# all boot settings, yet not too big to waste space.
# 512 - 3 = 509
Default: >
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0}
@@ -0,0 +1,5 @@
/xyz/openbmc_project/time/sync_method:
- Interface: xyz.openbmc_project.Time.Synchronization
Properties:
TimeSyncMethod:
Default: Synchronization::Method::Manual
@@ -0,0 +1,5 @@
FILESEXTRAPATHS:prepend:nicole := "${THISDIR}/${PN}:"
SRC_URI:append:nicole = " \
file://bootmailbox.override.yml \
file://time-sync-method.override.yml \
"
@@ -0,0 +1,47 @@
{
"gpio_configs": {
"power_config": {
"power_good_in": "SYS_PWROK_BUFF",
"power_up_outs": [
{ "name": "SOFTWARE_PGOOD", "polarity": true},
{ "name": "BMC_POWER_UP", "polarity": true}
],
"reset_outs": [
]
}
},
"gpio_definitions": [
{
"name": "SOFTWARE_PGOOD",
"pin": "R1",
"direction": "out"
},
{
"name": "BMC_POWER_UP",
"pin": "D1",
"direction": "out"
},
{
"name": "SYS_PWROK_BUFF",
"pin": "D2",
"direction": "in"
},
{
"name": "CHECKSTOP",
"pin": "J2",
"direction": "falling"
},
{
"name": "POWER_BUTTON",
"pin": "O2",
"direction": "both"
},
{
"name": "ID_BTN",
"pin": "Q7",
"direction": "out"
}
]
}
@@ -0,0 +1 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
@@ -0,0 +1,2 @@
[Unit]
ConditionKernelCommandLine=resetreason=power
@@ -0,0 +1,5 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
DEPS_CFG = "resetreason.conf"
DEPS_TGT = "phosphor-discover-system-state@.service"
SYSTEMD_OVERRIDE:${PN}-discover:append = "${DEPS_CFG}:${DEPS_TGT}.d/${DEPS_CFG}"
@@ -0,0 +1,19 @@
SUMMARY = "Nicole Inventory config for openpower-vpd-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit native
SRC_URI += "file://inventory"
PROVIDES += "virtual/openpower-fru-inventory"
S = "${WORKDIR}"
do_install() {
DEST=${D}${inventory_datadir_native}
install -d ${DEST}
install inventory ${DEST}
}
@@ -0,0 +1,3 @@
FRUS=BMC,ETHERNET
PATHS=/system/chassis/bmc,/system/chassis/ethernet
EEPROM=/sys/bus/i2c/devices/0-0050/eeprom
@@ -0,0 +1,19 @@
SUMMARY = "FRU properties config for openpower-vpd-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit native
SRC_URI += "file://properties.yaml"
PROVIDES += "virtual/openpower-fru-properties"
S = "${WORKDIR}"
do_install() {
DEST=${D}${properties_datadir}
install -d ${DEST}
install properties.yaml ${DEST}/out.yaml
}
@@ -0,0 +1,7 @@
/system/chassis/bmc:
xyz.openbmc_project.Inventory.Item:
Present: 'true'
/system/chassis/ethernet:
xyz.openbmc_project.Inventory.Item:
Present: 'true'
@@ -0,0 +1,19 @@
SUMMARY = "Nicole VPD layout for openpower-fru-vpd"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit native
SRC_URI += "file://layout.yaml"
PROVIDES += "virtual/openpower-fru-vpd-layout"
S = "${WORKDIR}"
do_install() {
DEST=${D}${vpdlayout_datadir}
install -d ${DEST}
install layout.yaml ${DEST}
}
@@ -0,0 +1,14 @@
BMC:
xyz.openbmc_project.Inventory.Decorator.Asset:
OPFR,VP: PartNumber
OPFR,VS: SerialNumber
OPFR,VN: Manufacturer
OPFR,MB: BuildDate
OPFR,DR: Model
xyz.openbmc_project.Inventory.Item:
VINI,DR: PrettyName
xyz.openbmc_project.Inventory.Item.Bmc:
ETHERNET:
xyz.openbmc_project.Inventory.Item.NetworkInterface:
OPFR,B1: MACAddress
xyz.openbmc_project.Inventory.Item.Ethernet:

After

Width:  |  Height:  |  Size: 450 B

+2
View File
@@ -0,0 +1,2 @@
recipes-kernel - The kernel and generic applications/libraries with strong kernel dependencies
recipes-phosphor - Phosphor OpenBMC applications and configuration
+11
View File
@@ -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 += "vegman-layer"
BBFILE_PATTERN_vegman-layer := "^${LAYERDIR}/"
LAYERSERIES_COMPAT_vegman-layer := "langdale mickledore"
@@ -0,0 +1,40 @@
OVERRIDES .= ":vegman"
KMACHINE = "aspeed"
KERNEL_DEVICETREE = "${KMACHINE}-bmc-${MACHINE}.dtb"
UBOOT_MACHINE = "evb-ast2500_defconfig"
UBOOT_DEVICETREE = "ast2500-evb"
require conf/machine/include/ast2500.inc
include conf/machine/include/vegman-bsp.inc
require ${@bb.utils.contains('BSP_TYPE', 'vegman', '', 'conf/machine/include/obmc-bsp-common.inc', d)}
SERIAL_CONSOLES = "115200;ttyS3 115200;ttyS4"
FLASH_SIZE = "65536"
IMAGE_FEATURES += "allow-root-login"
MACHINE_FEATURES += " \
obmc-chassis-state-mgmt \
obmc-host-ipmi \
obmc-host-state-mgmt \
obmc-phosphor-chassis-mgmt \
obmc-phosphor-fan-mgmt \
obmc-phosphor-flash-mgmt \
"
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"
VIRTUAL-RUNTIME_obmc-sensors-hwmon ?= "dbus-sensors"
PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-yadro-apps"
PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-yadro-apps"
PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-yadro-apps"
PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-yadro-apps"
PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw ?= "phosphor-ipmi-kcs"
PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "vegman-led-manager-config-native"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-aspeed-sdk"
PREFERRED_PROVIDER_u-boot = "u-boot-aspeed-sdk"
PREFERRED_PROVIDER_u-boot-fw-utils = "u-boot-fw-utils-aspeed-sdk"
@@ -0,0 +1,5 @@
require conf/machine/include/vegman.inc
# Apply all the machine override from the VEGMAN Sx20, because
# the TATLIN.ARCHIVE.xS have an exactly same hardware as the VEGMAN Sx20
MACHINEOVERRIDES .= ":vegman-sx20"
KERNEL_DEVICETREE = "${KMACHINE}-bmc-vegman-sx20.dtb"
@@ -0,0 +1 @@
require conf/machine/include/vegman.inc
@@ -0,0 +1,2 @@
require conf/machine/include/vegman.inc
PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "rx20-led-manager-config-native"
@@ -0,0 +1 @@
require conf/machine/include/vegman.inc
@@ -0,0 +1,18 @@
# 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-phosphor \
##OEROOT##/meta-aspeed \
##OEROOT##/meta-yadro \
##OEROOT##/meta-yadro/meta-vegman \
"
@@ -0,0 +1,2 @@
Common targets are:
obmc-phosphor-image
@@ -0,0 +1,259 @@
#
# 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 ??= "vegman"
#
# 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 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 ?= " *"
#
# 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 \
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 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"
EXTRA_USERS_PARAMS:append:pn-obmc-phosphor-image = " \
useradd -g users -G priv-admin,web,redfish,ipmi -N admin; \
"
@@ -0,0 +1,46 @@
# ASPEED peripheral drivers
CONFIG_GPIO_ASPEED_SGPIO=y
CONFIG_ASPEED_LPC_SNOOP=y
CONFIG_ASPEED_UART_ROUTING=y
# Beeper
CONFIG_PWM=y
CONFIG_INPUT_PWM_BEEPER=y
# IPMB
CONFIG_IPMB_DEVICE_INTERFACE=y
# Ethernet
CONFIG_MICREL_PHY=y
CONFIG_NCSI_OEM_CMD_KEEP_PHY=y
# Sensors
CONFIG_SENSORS_MP2975=y
CONFIG_SENSORS_LM63=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_TMP401=y
# Other I2C periphery
CONFIG_GPIO_PCF857X=y
# FS
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_OF_ASPEED=y
CONFIG_EXFAT_FS=y
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
CONFIG_FAT_FS=y
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=49152
CONFIG_CIFS=y
CONFIG_CIFS_XATTR=y
CONFIG_AUTOFS4_FS=y
# Disable Power specific
CONFIG_FSI=n
CONFIG_SENSORS_OCC=n
CONFIG_SENSORS_OCC_P8_I2C=n
CONFIG_SENSORS_OCC_P9_SBE=n
@@ -0,0 +1,4 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI += "\
file://vegman.cfg \
"
@@ -0,0 +1,4 @@
{
"buses": [0, 3, 4, 5, 6, 8, 9, 10, 12]
}
@@ -0,0 +1,8 @@
FILESEXTRAPATHS:append := ":${THISDIR}/${PN}"
SRC_URI:append = " \
file://blacklist.json \
"
do_install:append() {
install -m 0444 ${WORKDIR}/blacklist.json -D -t ${D}${datadir}/entity-manager
}
@@ -0,0 +1,23 @@
SUMMARY = "YAML configuration for VEGMAN"
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://vegman-ipmi-sensors-static.yaml \
"
S = "${WORKDIR}"
do_install() {
install -m 0644 -D vegman-ipmi-sensors-static.yaml \
${D}${datadir}/${BPN}/ipmi-sensors-static.yaml
}
FILES:${PN}-dev = " \
${datadir}/${BPN}/ipmi-sensors-static.yaml \
"
ALLOW_EMPTY:${PN} = "1"
@@ -0,0 +1,17 @@
0x01:
entityID: 0x07
entityInstance: 1
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/enclosure_identify_blink
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
@@ -0,0 +1,3 @@
baud = 115200
local-tty = ttyS3
local-tty-baud = 115200
@@ -0,0 +1,14 @@
[Unit]
Description=Phosphor Console Muxer listening on device /dev/%I
BindsTo=dev-%i.device
After=dev-%i.device
[Service]
ExecStartPre=/usr/sbin/uart-remapping.sh init
ExecStart=obmc-console-server --config {sysconfdir}/obmc-console.conf %i
ExecStopPost=/usr/sbin/uart-remapping.sh reset
SyslogIdentifier=obmc-console-server
Restart=always
[Install]
WantedBy={SYSTEMD_DEFAULT_TARGET}
@@ -0,0 +1,33 @@
#!/bin/bash -eu
function usage()
{
echo "Usage: $(basename "$0") init|reset"
}
if [ "$#" -ne "1" ] ; then
usage
exit 1;
fi
cmd="${1}"
UART_ROUTING_PATH="/sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart-routing"
case "${cmd}" in
init)
echo -n "uart3" > ${UART_ROUTING_PATH}/uart1
echo -n "uart1" > ${UART_ROUTING_PATH}/uart3
echo -n "io1" > ${UART_ROUTING_PATH}/uart4
echo -n "uart4" > ${UART_ROUTING_PATH}/io1
;;
reset)
echo -n "io1" > ${UART_ROUTING_PATH}/uart1
echo -n "io3" > ${UART_ROUTING_PATH}/uart3
echo -n "io4" > ${UART_ROUTING_PATH}/uart4
echo -n "uart1" > ${UART_ROUTING_PATH}/io1
;;
*)
usage
exit 1;
;;
esac
@@ -0,0 +1,19 @@
FILESEXTRAPATHS:append := ":${THISDIR}/${PN}"
RDEPENDS:${PN} += "bash"
OBMC_CONSOLE_HOST_TTY = "ttyS2"
SRC_URI += " \
file://obmc-console@.service \
file://uart-remapping.sh \
"
inherit obmc-phosphor-systemd
SYSTEMD_SERVICE:${PN} += " \
${PN}@${OBMC_CONSOLE_HOST_TTY}.service \
"
do_install:append() {
rm -rf ${D}${nonarch_base_libdir}/udev/rules.d/80-obmc-console-uart.rules
install -m 0644 ${WORKDIR}/${PN}@.service -D -t ${D}${systemd_system_unitdir}
install -m 0755 ${WORKDIR}/uart-remapping.sh -D -t ${D}${sbindir}
}
@@ -0,0 +1 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

Some files were not shown because too many files have changed in this diff Show More