From 111b57c119533e0fc87cb654daecaa36b233b9e4 Mon Sep 17 00:00:00 2001 From: moyan_yyb Date: Wed, 3 Feb 2021 16:55:13 +0800 Subject: thor: initial machine creation Signed-off-by: yongbing yang Change-Id: Ic0248e729ac47d692c059648fcf60b297de2ae3d --- meta-alibaba/meta-thor/conf/bblayers.conf.sample | 27 ++ meta-alibaba/meta-thor/conf/conf-notes.txt | 2 + .../meta-thor/conf/distro/alibaba-openbmc.conf | 1 + meta-alibaba/meta-thor/conf/layer.conf | 9 + meta-alibaba/meta-thor/conf/local.conf.sample | 199 ++++++++++++++ meta-alibaba/meta-thor/conf/machine/thor.conf | 14 + .../recipes-bsp/linux/linux-aspeed/alibaba.cfg | 1 + .../linux/linux-aspeed/aspeed-alibaba-thor.dts | 292 +++++++++++++++++++++ .../recipes-bsp/linux/linux-aspeed_%.bbappend | 17 ++ 9 files changed, 562 insertions(+) create mode 100644 meta-alibaba/meta-thor/conf/bblayers.conf.sample create mode 100644 meta-alibaba/meta-thor/conf/conf-notes.txt create mode 100644 meta-alibaba/meta-thor/conf/distro/alibaba-openbmc.conf create mode 100644 meta-alibaba/meta-thor/conf/layer.conf create mode 100644 meta-alibaba/meta-thor/conf/local.conf.sample create mode 100644 meta-alibaba/meta-thor/conf/machine/thor.conf create mode 100644 meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/alibaba.cfg create mode 100644 meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/aspeed-alibaba-thor.dts create mode 100644 meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed_%.bbappend (limited to 'meta-alibaba/meta-thor') diff --git a/meta-alibaba/meta-thor/conf/bblayers.conf.sample b/meta-alibaba/meta-thor/conf/bblayers.conf.sample new file mode 100644 index 0000000000..50cc08f71e --- /dev/null +++ b/meta-alibaba/meta-thor/conf/bblayers.conf.sample @@ -0,0 +1,27 @@ +# 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-alibaba \ + ##OEROOT##/meta-alibaba/meta-thor \ + " +BBLAYERS_NON_REMOVABLE ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-openembedded/meta-oe \ + ##OEROOT##/meta-openembedded/meta-networking \ + ##OEROOT##/meta-openembedded/meta-perl \ + ##OEROOT##/meta-openembedded/meta-python \ + ##OEROOT##/meta-phosphor \ + ##OEROOT##/meta-aspeed \ + ##OEROOT##/meta-alibaba \ + ##OEROOT##/meta-alibaba/meta-thor \ + " diff --git a/meta-alibaba/meta-thor/conf/conf-notes.txt b/meta-alibaba/meta-thor/conf/conf-notes.txt new file mode 100644 index 0000000000..9b3c01a556 --- /dev/null +++ b/meta-alibaba/meta-thor/conf/conf-notes.txt @@ -0,0 +1,2 @@ +Common targets are: + obmc-phosphor-image diff --git a/meta-alibaba/meta-thor/conf/distro/alibaba-openbmc.conf b/meta-alibaba/meta-thor/conf/distro/alibaba-openbmc.conf new file mode 100644 index 0000000000..de15fbcc6b --- /dev/null +++ b/meta-alibaba/meta-thor/conf/distro/alibaba-openbmc.conf @@ -0,0 +1 @@ +require conf/distro/include/phosphor-base.inc diff --git a/meta-alibaba/meta-thor/conf/layer.conf b/meta-alibaba/meta-thor/conf/layer.conf new file mode 100644 index 0000000000..149bdf8fd9 --- /dev/null +++ b/meta-alibaba/meta-thor/conf/layer.conf @@ -0,0 +1,9 @@ +# 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 += "" +BBFILE_PATTERN := "^${LAYERDIR}/" +LAYERSERIES_COMPAT = "dunfell gatesgarth" diff --git a/meta-alibaba/meta-thor/conf/local.conf.sample b/meta-alibaba/meta-thor/conf/local.conf.sample new file mode 100644 index 0000000000..09c441fee1 --- /dev/null +++ b/meta-alibaba/meta-thor/conf/local.conf.sample @@ -0,0 +1,199 @@ +# +# This file is your local configuration file and is where all local user settings +# are placed. The comments in this file give some guide to the options a new user +# to the system might want to change but pretty much any configuration option can +# be set in this file. +# +# Lines starting with the '#' character are commented out and in some cases the +# default values are provided as comments to show people example syntax. Enabling +# the option is a question of removing the # character and making any change to the +# variable as required. +# +# Machine Selection +# +MACHINE ??= "template" +# +# 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 ?= "alibaba-openbmc" +# As an example of a subclass there is a "bleeding" edge policy configuration +# where many versions are set to the absolute latest code from the upstream +# source control systems. This is just mentioned here as an example, its not +# useful to most new users. +# DISTRO ?= "poky-bleeding" +# +# Package Management configuration +# +# This variable lists which packaging formats to enable. Multiple package backends +# can be enabled at once and the first item listed in the variable will be used +# to generate the root filesystems. +# Options are: +# - 'package_deb' for debian style deb files +# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) +# - 'package_rpm' for rpm style packages +# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" +# We default to rpm: +PACKAGE_CLASSES ?= "package_rpm" +# +# SDK/ADT target architecture +# +# This variable specifies the architecture to build SDK/ADT items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686 and x86_64 +#SDKMACHINE ?= "i686" +SANITY_TESTED_DISTROS_append ?= " *" +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, exmap, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES = "debug-tweaks" +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +# - 'image-mklibs' to reduce shared library files size for an image +# - 'image-prelink' in order to prelink the filesystem image +# - 'image-swab' to perform host system intrusion detection +# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink +# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended +USER_CLASSES ?= "buildstats image-mklibs image-prelink" +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. To +# enable this uncomment this line. See classes/testimage(-auto).bbclass for +# further details. +#TEST_IMAGE = "1" +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necessary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS = "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as http or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ +#file://.* file:///some/local/dir/sstate/PATH" +# +# Qemu configuration +# +# By default qemu will build with a builtin VNC server where graphical output can be +# seen. The two lines below enable the SDL backend too. This assumes there is a +# libsdl library available on your build system. +#PACKAGECONFIG_append_pn-qemu-native = " sdl" +#PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" +#ASSUME_PROVIDED += "libsdl-native" +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "1" diff --git a/meta-alibaba/meta-thor/conf/machine/thor.conf b/meta-alibaba/meta-thor/conf/machine/thor.conf new file mode 100644 index 0000000000..e20a2c741e --- /dev/null +++ b/meta-alibaba/meta-thor/conf/machine/thor.conf @@ -0,0 +1,14 @@ +KERNEL_DEVICETREE = "${KMACHINE}-alibaba-${MACHINE}.dtb" +KMACHINE = "aspeed" +require conf/machine/include/ast2500.inc + + +UBOOT_MACHINE = "ast_g5_phy_config" +FLASH_SIZE = "32768" + +# below contents will be gathered by macro 'MACHINE_FEATURES' which defined in phosphor-base.inc file +OBMC_MACHINE_FEATURES += "\ + " +VIRTUAL-RUNTIME_skeleton_workbook = "alibaba-ast2500-config" +PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-alibaba-apps" +PREFERRED_PROVIDER_virtual/obmc-tools-mgmt = "packagegroup-alibaba-apps" diff --git a/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/alibaba.cfg b/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/alibaba.cfg new file mode 100644 index 0000000000..174a3f2030 --- /dev/null +++ b/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/alibaba.cfg @@ -0,0 +1 @@ +CONFIG_DEVMEM=y diff --git a/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/aspeed-alibaba-thor.dts b/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/aspeed-alibaba-thor.dts new file mode 100644 index 0000000000..c05075d05b --- /dev/null +++ b/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed/aspeed-alibaba-thor.dts @@ -0,0 +1,292 @@ +// SPDX-License-Identifier: GPL-2.0+ +/dts-v1/; +#include "aspeed-g5.dtsi" +#include +/ { + model = "Alibaba AST2500 BMC"; + compatible = "alibaba,thor", "aspeed,ast2500"; + aliases { + serial4 = &uart5; + spi2 = &spi2; + }; + chosen { + stdout-path = &uart5; + bootargs = "console=tty0 console=ttyS4,115200 earlyprintk"; + }; + memory@80000000 { + device_type = "memory"; + reg = <0x80000000 0x20000000>; + }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + vga_memory: framebuffer@9f000000 { + no-map; + reg = <0x9f000000 0x01000000>; /* 16M */ + }; + lpc_memory: region@98000000 { + no-map; + reg = <0x98000000 0x02000000>; /* 32M */ + }; + pci_memory: region@9A000000 { + no-map; + reg = <0x9A000000 0x00010000>; /* 64K */ + }; + video_engine_memory: jpegbuffer { + size = <0x02800000>; /* 40M */ + alignment = <0x01000000>; + compatible = "shared-dma-pool"; + reusable; + }; + gfx_memory: framebuffer { + size = <0x01000000>; + alignment = <0x01000000>; + compatible = "shared-dma-pool"; + reusable; + }; + }; +}; +&fmc { + status = "okay"; + flash@0 { + status = "okay"; + m25p,fast-read; + label = "bmc"; + spi-max-frequency = <50000000>; + }; +}; +&spi1 { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi1_default>; + flash@0 { + status = "okay"; + m25p,fast-read; + label = "pnor"; + spi-max-frequency = <100000000>; + }; +}; +&spi2 { + compatible = "aspeed,spi-dev"; + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2ck_default + &pinctrl_spi2cs0_default + &pinctrl_spi2cs1_default + &pinctrl_spi2miso_default + &pinctrl_spi2mosi_default>; + flash@0 { + compatible = "rohm,dh2228fv"; + status = "okay"; + spi-max-frequency = <25000000>; + }; +}; +&espi { + status = "okay"; +}; +&kcs3 { + kcs_addr = <0xca2>; + status = "okay"; +}; +&lpc_ctrl { + status = "okay"; + memory-region = <&lpc_memory>; + flash = <&spi1>; +}; +&p2a { + status = "okay"; + memory-region = <&pci_memory>; +}; +&mbox { + status = "okay"; +}; +&uart1 { + /* Rear RS-232 connector */ + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_txd1_default + &pinctrl_rxd1_default + &pinctrl_nrts1_default + &pinctrl_ndtr1_default + &pinctrl_ndsr1_default + &pinctrl_ncts1_default + &pinctrl_ndcd1_default + &pinctrl_nri1_default>; +}; +&uart2 { + /* Rear RS-232 connector */ + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_txd2_default + &pinctrl_rxd2_default + &pinctrl_nrts2_default + &pinctrl_ndtr2_default + &pinctrl_ndsr2_default + &pinctrl_ncts2_default + &pinctrl_ndcd2_default + &pinctrl_nri2_default>; +}; +&uart4 { + status = "okay"; +}; +&uart5 { + status = "okay"; +}; +&mac0 { + status = "okay"; + use-ncsi; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rmii1_default>; +}; +&mac1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>; +}; +&adc { + status = "okay"; +}; +&i2c0 { + status = "okay"; +}; +&i2c1 { + status = "okay"; +}; +&i2c2 { + status = "okay"; +}; +&i2c3 { + status = "okay"; +}; +&i2c4 { + status = "okay"; +}; +&i2c5 { + status = "okay"; +}; +&i2c6 { + status = "okay"; +}; +&i2c7 { + status = "okay"; +}; +&i2c8 { + status = "okay"; +}; +&i2c9 { + status = "okay"; +}; +&i2c10 { + status = "okay"; +}; +&i2c11 { + status = "okay"; +}; +&i2c12 { + status = "okay"; +}; +&i2c13 { + status = "okay"; +}; +&vuart { + status = "disabled"; +}; +&gfx { + status = "okay"; +}; +&pinctrl { + aspeed,external-nodes = <&gfx &lhc>; +}; +&pwm_tacho { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm0_default + &pinctrl_pwm1_default + &pinctrl_pwm2_default + &pinctrl_pwm3_default + &pinctrl_pwm4_default + &pinctrl_pwm5_default + &pinctrl_pwm6_default + &pinctrl_pwm7_default>; + fan@0 { + reg = <0x00>; + aspeed,fan-tach-ch = /bits/ 8 <0x00 0x01>; + }; + fan@1 { + reg = <0x01>; + aspeed,fan-tach-ch = /bits/ 8 <0x02 0x03>; + }; + fan@2 { + reg = <0x02>; + aspeed,fan-tach-ch = /bits/ 8 <0x04 0x05>; + }; + fan@3 { + reg = <0x03>; + aspeed,fan-tach-ch = /bits/ 8 <0x06 0x07>; + }; + fan@4 { + reg = <0x04>; + aspeed,fan-tach-ch = /bits/ 8 <0x08 0x09>; + }; + fan@5 { + reg = <0x05>; + aspeed,fan-tach-ch = /bits/ 8 <0x0a 0x0b>; + }; + fan@6 { + reg = <0x06>; + aspeed,fan-tach-ch = /bits/ 8 <0x0c 0x0d>; + }; + fan@7 { + reg = <0x07>; + aspeed,fan-tach-ch = /bits/ 8 <0x0e 0x0f>; + }; +}; +&lpc_uart { + status = "okay"; +}; +&ibt { + status = "disabled"; +}; +&lpc_snoop { + status = "okay"; + snoop-ports = <0x80>; +}; +&sdmmc { + status = "okay"; +}; +&sdhci1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sd2_default>; +}; +/* + * Enable port A as device (via the virtual hub) and port B as + * host by default on the eval board. This can be easily changed + * by replacing the override below with &ehci0 { ... } to enable + * host on both ports. + */ +&vhub { + status = "okay"; +}; +&ehci1 { + status = "okay"; +}; +&uhci { + status = "okay"; +}; +&video { + status = "okay"; + memory-region = <&video_engine_memory>; +}; +&gfx { + status = "okay"; + memory-region = <&gfx_memory>; +}; +&peci0 { + status = "okay"; +}; +&rtc { + status = "okay"; +}; + diff --git a/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed_%.bbappend b/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed_%.bbappend new file mode 100644 index 0000000000..18de4ac111 --- /dev/null +++ b/meta-alibaba/meta-thor/recipes-bsp/linux/linux-aspeed_%.bbappend @@ -0,0 +1,17 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +KERNEL_VERSION_SANITY_SKIP="1" +SRC_URI += "\ + file://aspeed-alibaba-thor.dts \ + file://alibaba.cfg \ + " + +do_patch_append(){ + for DTB in "${KERNEL_DEVICETREE}"; do + DT=`basename ${DTB} .dtb` + if [ -r "${WORKDIR}/${DT}.dts" ]; then + echo "debug: ${STAGING_KERNEL_DIR}" + cp ${WORKDIR}/aspeed-alibaba-thor.dts \ + ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts + fi + done +} -- cgit v1.2.3