diff --git a/.oebuild/cross-tools/configs/config_aarch64 b/.oebuild/cross-tools/configs/config_aarch64 index 347ba1a221f152c7a986f5cbb4ae89ac7df8fc40..807d8fa97c645817f2c205a6ac65401da0754ec9 100644 --- a/.oebuild/cross-tools/configs/config_aarch64 +++ b/.oebuild/cross-tools/configs/config_aarch64 @@ -1026,7 +1026,7 @@ CT_ZLIB_PKG_NAME="zlib" # CT_ZLIB_SRC_RELEASE is not set # CT_ZLIB_SRC_DEVEL is not set CT_ZLIB_SRC_CUSTOM=y -CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.3.1" +CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.13" CT_ZLIB_PATCH_GLOBAL=y # CT_ZLIB_PATCH_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL is not set diff --git a/.oebuild/cross-tools/configs/config_aarch64-musl b/.oebuild/cross-tools/configs/config_aarch64-musl index 7fbea9ab3c8f9f0f1838bf2c2001b6279844967f..4d93a002a067408b84f0321b45794cdb40e9f2de 100644 --- a/.oebuild/cross-tools/configs/config_aarch64-musl +++ b/.oebuild/cross-tools/configs/config_aarch64-musl @@ -922,7 +922,7 @@ CT_ZLIB_PKG_NAME="zlib" # CT_ZLIB_SRC_RELEASE is not set # CT_ZLIB_SRC_DEVEL is not set CT_ZLIB_SRC_CUSTOM=y -CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.11" +CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.13" CT_ZLIB_PATCH_GLOBAL=y # CT_ZLIB_PATCH_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL is not set diff --git a/.oebuild/cross-tools/configs/config_arm32 b/.oebuild/cross-tools/configs/config_arm32 index a422d52f605cafe28c03273922a9504dee6f2c55..c5a60e5fadce7e190c9616aeb600c23b22c8e62d 100644 --- a/.oebuild/cross-tools/configs/config_arm32 +++ b/.oebuild/cross-tools/configs/config_arm32 @@ -1061,7 +1061,7 @@ CT_ZLIB_PKG_NAME="zlib" # CT_ZLIB_SRC_RELEASE is not set # CT_ZLIB_SRC_DEVEL is not set CT_ZLIB_SRC_CUSTOM=y -CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.3.1" +CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.13" CT_ZLIB_PATCH_GLOBAL=y # CT_ZLIB_PATCH_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL is not set diff --git a/.oebuild/cross-tools/configs/config_riscv64 b/.oebuild/cross-tools/configs/config_riscv64 index 0547dcb013ad55c27f21c398dc164db9774497d8..8cc7c11146feab3d33f5bf1a9e8455d3983906bb 100644 --- a/.oebuild/cross-tools/configs/config_riscv64 +++ b/.oebuild/cross-tools/configs/config_riscv64 @@ -998,7 +998,7 @@ CT_ZLIB_PKG_NAME="zlib" # CT_ZLIB_SRC_RELEASE is not set # CT_ZLIB_SRC_DEVEL is not set CT_ZLIB_SRC_CUSTOM=y -CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.3.1" +CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.13" CT_ZLIB_PATCH_GLOBAL=y # CT_ZLIB_PATCH_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL is not set diff --git a/.oebuild/cross-tools/configs/config_riscv64-musl b/.oebuild/cross-tools/configs/config_riscv64-musl new file mode 100644 index 0000000000000000000000000000000000000000..51767450094481e7693136ad5854b30c0265c64f --- /dev/null +++ b/.oebuild/cross-tools/configs/config_riscv64-musl @@ -0,0 +1,1052 @@ +# +# Automatically generated file; DO NOT EDIT. +# crosstool-NG 1.26.0 Configuration +# +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_cxx11=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_meson=y +CT_CONFIGURE_has_ninja=y +CT_CONFIGURE_has_rsync=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_make_4_0_or_newer=y +CT_CONFIGURE_has_make_4_4_or_newer=y +CT_CONFIGURE_has_libtool_2_4_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_65_or_newer=y +CT_CONFIGURE_has_autoreconf_2_65_or_newer=y +CT_CONFIGURE_has_automake_1_15_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_python_3_4_or_newer=y +CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_bison_3_0_4_or_newer=y +CT_CONFIGURE_has_python=y +CT_CONFIGURE_has_git=y +CT_CONFIGURE_has_md5sum=y +CT_CONFIGURE_has_sha1sum=y +CT_CONFIGURE_has_sha256sum=y +CT_CONFIGURE_has_sha512sum=y +CT_CONFIGURE_has_install_with_strip_program=y +CT_VERSION="1.26.0" +CT_VCHECK="" +CT_CONFIG_VERSION_ENV="4" +CT_CONFIG_VERSION_CURRENT="4" +CT_CONFIG_VERSION="4" +CT_MODULES=y + +# +# set open_source dir and x-tools dir, if you set CROSS_SOURCE, you should +# set like this: /xxx/open_source/. because the CROSS_SOURCE will be finanal +# /xxx/open_source/../open_source +# +OPENSOURCE_DIR="${CROSS_SOURCE}./open_source" +X_TOOLS_DIR="${HOME}/x-tools" + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +CT_EXPERIMENTAL=y +# CT_ALLOW_BUILD_AS_ROOT is not set +# CT_ENABLE_EXPERIMENTAL_BUNDLED_PATCHES is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +# CT_TARBALLS_BUILDROOT_LAYOUT is not set +CT_WORK_DIR="${CT_TOP_DIR}/.build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" +CT_PREFIX_DIR="${CT_PREFIX:-${X_TOOLS_DIR}}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_RM_RF_PREFIX_DIR=y +CT_REMOVE_DOCS=y +CT_INSTALL_LICENSES=y +CT_PREFIX_DIR_RO=y +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +# CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES is not set +# CT_TARBALL_RESULT is not set + +# +# Downloading +# +# CT_DOWNLOAD_AGENT_WGET is not set +CT_DOWNLOAD_AGENT_CURL=y +# CT_DOWNLOAD_AGENT_NONE is not set +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_CONNECT_TIMEOUT=10 +CT_DOWNLOAD_CURL_OPTIONS="--location --ftp-pasv --retry 3 --fail --silent" +# CT_ONLY_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_VERIFY_DOWNLOAD_DIGEST=y +CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y +# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set +CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512" +# CT_VERIFY_DOWNLOAD_SIGNATURE is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERRIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set +CT_PATCH_BUNDLED=y +# CT_PATCH_LOCAL is not set +# CT_PATCH_BUNDLED_LOCAL is not set +# CT_PATCH_LOCAL_BUNDLED is not set +# CT_PATCH_NONE is not set +CT_PATCH_ORDER="bundled" + +# +# Build behavior +# +CT_PARALLEL_JOBS=0 +CT_LOAD="" +CT_USE_PIPES=y +CT_EXTRA_CFLAGS_FOR_BUILD="" +CT_EXTRA_CXXFLAGS_FOR_BUILD="" +CT_EXTRA_LDFLAGS_FOR_BUILD="" +CT_EXTRA_CFLAGS_FOR_HOST="" +CT_EXTRA_LDFLAGS_FOR_HOST="" +# CT_CONFIG_SHELL_SH is not set +# CT_CONFIG_SHELL_ASH is not set +CT_CONFIG_SHELL_BASH=y +# CT_CONFIG_SHELL_CUSTOM is not set +CT_CONFIG_SHELL="${bash}" + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +CT_LOG_EXTRA=y +# CT_LOG_ALL is not set +# CT_LOG_DEBUG is not set +CT_LOG_LEVEL_MAX="EXTRA" +# CT_LOG_SEE_TOOLS_WARN is not set +CT_LOG_PROGRESS_BAR=y +CT_LOG_TO_FILE=y +CT_LOG_FILE_COMPRESS=y +# end of Paths and misc options + +# +# Target options +# +# CT_ARCH_ALPHA is not set +# CT_ARCH_ARC is not set +#CT_ARCH_ARM is not set +# CT_ARCH_AVR is not set +# CT_ARCH_BPF is not set +# CT_ARCH_C6X is not set +# CT_ARCH_LOONGARCH is not set +# CT_ARCH_M68K is not set +# CT_ARCH_MICROBLAZE is not set +# CT_ARCH_MIPS is not set +# CT_ARCH_MOXIE is not set +# CT_ARCH_MSP430 is not set +# CT_ARCH_NIOS2 is not set +# CT_ARCH_POWERPC is not set +# CT_ARCH_PRU is not set +CT_ARCH_RISCV=y +# CT_ARCH_S390 is not set +# CT_ARCH_SH is not set +# CT_ARCH_SPARC is not set +# CT_ARCH_X86 is not set +# CT_ARCH_XTENSA is not set +CT_ARCH="riscv" +CT_ARCH_CHOICE_KSYM="RISCV" +CT_ARCH_TUNE="" +CT_ARCH_RISCV_SHOW=y + +# +# Options for riscv +# +CT_ARCH_RISCV_PKG_KSYM="" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR C6X M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC PRU RISCV S390 SH SPARC X86 XTENSA" +CT_ARCH_SUFFIX="" +# CT_OMIT_TARGET_VENDOR is not set + +# +# Generic target options +# +# CT_MULTILIB is not set +# CT_DEMULTILIB is not set +CT_ARCH_SUPPORTS_BOTH_MMU=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_LIBSANITIZER=y +CT_ARCH_SUPPORTS_32=y +CT_ARCH_SUPPORTS_64=y +CT_ARCH_DEFAULT_32=y +CT_ARCH_BITNESS=64 +# CT_ARCH_32 is not set +CT_ARCH_64=y + +# +# Target optimisations +# +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_ABI=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_ARCH="rv64gc" +CT_ARCH_ABI="" +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" +# end of Target options + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_FORCE_SYSROOT=y +CT_USE_SYSROOT=y +CT_SYSROOT_NAME="sysroot" +CT_SYSROOT_DIR_PREFIX="" +CT_WANTS_STATIC_LINK=y +CT_WANTS_STATIC_LINK_CXX=y +# CT_STATIC_TOOLCHAIN is not set +CT_SHOW_CT_VERSION=y +CT_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="openeuler" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Misc options +# +# CT_TOOLCHAIN_ENABLE_NLS is not set +# end of Toolchain options + +# +# Operating System +# +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +# CT_KERNEL_BARE_METAL is not set +CT_KERNEL_LINUX=y +CT_KERNEL="linux" +CT_KERNEL_CHOICE_KSYM="LINUX" +CT_KERNEL_LINUX_SHOW=y + +# +# Options for linux +# +CT_KERNEL_LINUX_PKG_KSYM="LINUX" +CT_LINUX_DIR_NAME="linux" +CT_LINUX_USE_WWW_KERNEL_ORG=y +# CT_LINUX_USE_ORACLE is not set +CT_LINUX_USE="LINUX" +CT_LINUX_PKG_NAME="linux" +# CT_LINUX_SRC_RELEASE is not set +# CT_LINUX_SRC_DEVEL is not set +CT_LINUX_SRC_CUSTOM=y +CT_LINUX_CUSTOM_LOCATION="${OPENSOURCE_DIR}/kernel" +CT_LINUX_PATCH_GLOBAL=y +# CT_LINUX_PATCH_BUNDLED is not set +# CT_LINUX_PATCH_LOCAL is not set +# CT_LINUX_PATCH_BUNDLED_LOCAL is not set +# CT_LINUX_PATCH_LOCAL_BUNDLED is not set +# CT_LINUX_PATCH_NONE is not set +CT_LINUX_PATCH_ORDER="global" +# CT_LINUX_VERY_NEW is not set +# CT_LINUX_V_6_4 is not set +# CT_LINUX_V_6_3 is not set +# CT_LINUX_V_6_2 is not set +# CT_LINUX_V_6_1 is not set +# CT_LINUX_V_6_0 is not set +# CT_LINUX_V_5_19 is not set +# CT_LINUX_V_5_18 is not set +# CT_LINUX_V_5_17 is not set +# CT_LINUX_V_5_16 is not set +# CT_LINUX_V_5_15 is not set +# CT_LINUX_V_5_14 is not set +# CT_LINUX_V_5_13 is not set +# CT_LINUX_V_5_12 is not set +# CT_LINUX_V_5_11 is not set +CT_LINUX_V_5_10=y +# CT_LINUX_V_5_9 is not set +# CT_LINUX_V_5_8 is not set +# CT_LINUX_V_5_7 is not set +# CT_LINUX_V_5_4 is not set +# CT_LINUX_V_5_3 is not set +# CT_LINUX_V_5_2 is not set +# CT_LINUX_V_5_1 is not set +# CT_LINUX_V_5_0 is not set +# CT_LINUX_V_4_20 is not set +# CT_LINUX_V_4_19 is not set +# CT_LINUX_V_4_18 is not set +# CT_LINUX_V_4_17 is not set +# CT_LINUX_V_4_16 is not set +# CT_LINUX_V_4_15 is not set +# CT_LINUX_V_4_14 is not set +# CT_LINUX_V_4_13 is not set +# CT_LINUX_V_4_12 is not set +# CT_LINUX_V_4_11 is not set +# CT_LINUX_V_4_10 is not set +# CT_LINUX_V_4_9 is not set +# CT_LINUX_V_4_4 is not set +# CT_LINUX_V_4_1 is not set +# CT_LINUX_V_3_16 is not set +# CT_LINUX_V_3_13 is not set +# CT_LINUX_V_3_12 is not set +# CT_LINUX_V_3_10 is not set +# CT_LINUX_V_3_4 is not set +# CT_LINUX_V_3_2 is not set +CT_LINUX_VERSION="5.10.185" +CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})" +CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign" +CT_LINUX_5_19_or_older=y +CT_LINUX_older_than_5_19=y +CT_LINUX_5_12_or_older=y +CT_LINUX_older_than_5_12=y +CT_LINUX_later_than_5_5=y +CT_LINUX_5_5_or_later=y +CT_LINUX_later_than_5_3=y +CT_LINUX_5_3_or_later=y +CT_LINUX_later_than_4_8=y +CT_LINUX_4_8_or_later=y +CT_LINUX_later_than_3_7=y +CT_LINUX_3_7_or_later=y +CT_LINUX_later_than_3_2=y +CT_LINUX_3_2_or_later=y +CT_LINUX_REQUIRE_3_2_or_later=y +CT_KERNEL_DEP_RSYNC=y +CT_KERNEL_LINUX_VERBOSITY_0=y +# CT_KERNEL_LINUX_VERBOSITY_1 is not set +# CT_KERNEL_LINUX_VERBOSITY_2 is not set +CT_KERNEL_LINUX_VERBOSE_LEVEL=0 +CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS" + +# +# Common kernel options +# +CT_SHARED_LIBS=y +# end of Operating System + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS_BINUTILS=y +CT_BINUTILS="binutils" +CT_BINUTILS_CHOICE_KSYM="BINUTILS" +CT_BINUTILS_BINUTILS_SHOW=y + +# +# Options for binutils +# +CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS" +CT_BINUTILS_DIR_NAME="binutils" +CT_BINUTILS_USE_GNU=y +# CT_BINUTILS_USE_LINARO is not set +# CT_BINUTILS_USE_ORACLE is not set +CT_BINUTILS_USE="BINUTILS" +CT_BINUTILS_PKG_NAME="binutils" +# CT_BINUTILS_SRC_RELEASE is not set +# CT_BINUTILS_SRC_DEVEL is not set +CT_BINUTILS_SRC_CUSTOM=y +CT_BINUTILS_CUSTOM_LOCATION="${OPENSOURCE_DIR}/binutils/binutils-2.41" +CT_BINUTILS_PATCH_GLOBAL=y +# CT_BINUTILS_PATCH_BUNDLED is not set +# CT_BINUTILS_PATCH_LOCAL is not set +# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set +# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set +# CT_BINUTILS_PATCH_NONE is not set +CT_BINUTILS_PATCH_ORDER="global" +CT_BINUTILS_VERY_NEW=y +# CT_BINUTILS_V_2_40 is not set +# CT_BINUTILS_V_2_39 is not set +# CT_BINUTILS_V_2_38 is not set +# CT_BINUTILS_V_2_37 is not set +# CT_BINUTILS_V_2_36 is not set +# CT_BINUTILS_V_2_35 is not set +# CT_BINUTILS_V_2_34 is not set +# CT_BINUTILS_V_2_33 is not set +# CT_BINUTILS_V_2_32 is not set +# CT_BINUTILS_V_2_31 is not set +# CT_BINUTILS_V_2_30 is not set +# CT_BINUTILS_V_2_29 is not set +# CT_BINUTILS_V_2_28 is not set +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +CT_BINUTILS_VERSION="new" +CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" +CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_39=y +CT_BINUTILS_2_39_or_later=y +CT_BINUTILS_later_than_2_30=y +CT_BINUTILS_2_30_or_later=y +CT_BINUTILS_later_than_2_27=y +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_later_than_2_26=y +CT_BINUTILS_2_26_or_later=y + +# +# GNU binutils +# +CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y +CT_BINUTILS_LINKER_LD=y +CT_BINUTILS_LINKERS_LIST="ld" +CT_BINUTILS_LINKER_DEFAULT="bfd" +# CT_BINUTILS_PLUGINS is not set +CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +# CT_BINUTILS_FOR_TARGET is not set +CT_ALL_BINUTILS_CHOICES="BINUTILS" +# end of Binary utilities + + +# +# C-library +# +# CT_LIBC_GLIBC is not set +CT_LIBC_MUSL=y +# CT_LIBC_UCLIBC_NG is not set +CT_LIBC="musl" +CT_LIBC_CHOICE_KSYM="MUSL" +CT_THREADS="musl" +CT_LIBC_MUSL_SHOW=y + +# +# Options for musl +# +CT_LIBC_MUSL_PKG_KSYM="MUSL" +CT_MUSL_DIR_NAME="musl" +CT_MUSL_PKG_NAME="musl" +# CT_MUSL_SRC_RELEASE is not set +# CT_MUSL_SRC_DEVEL is not set +CT_MUSL_SRC_CUSTOM=y +CT_MUSL_CUSTOM_LOCATION="${OPENSOURCE_DIR}/musl/musl-1.2.4" +CT_MUSL_PATCH_GLOBAL=y +# CT_MUSL_PATCH_BUNDLED is not set +# CT_MUSL_PATCH_LOCAL is not set +# CT_MUSL_PATCH_BUNDLED_LOCAL is not set +# CT_MUSL_PATCH_LOCAL_BUNDLED is not set +# CT_MUSL_PATCH_NONE is not set +CT_MUSL_PATCH_ORDER="global" +# CT_MUSL_VERY_NEW is not set +CT_MUSL_V_1_2_4=y +# CT_MUSL_V_1_2_2 is not set +# CT_MUSL_V_1_2_1 is not set +# CT_MUSL_V_1_1_24 is not set +# CT_MUSL_V_1_1_23 is not set +# CT_MUSL_V_1_1_22 is not set +# CT_MUSL_V_1_1_21 is not set +# CT_MUSL_V_1_1_20 is not set +# CT_MUSL_V_1_1_19 is not set +# CT_MUSL_V_1_1_18 is not set +# CT_MUSL_V_1_1_17 is not set +# CT_MUSL_V_1_1_16 is not set +CT_MUSL_VERSION="1.2.4" +CT_MUSL_MIRRORS="http://www.musl-libc.org/releases" +CT_MUSL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MUSL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MUSL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_MUSL_SIGNATURE_FORMAT="packed/.asc" +CT_MUSL_DEP_KERNEL_HEADERS_VERSION=y +CT_MUSL_DEP_BINUTILS=y +CT_MUSL_DEP_GCC=y +CT_MUSL_DEP_PYTHON=y +CT_THREADS="nptl" +CT_MUSL_BUILD_SSP=y +CT_MUSL_HAS_LIBIDN_ADDON=y + +CT_MUSL_NO_SPARC_V8=y +CT_MUSL_HAS_OBSOLETE_LIBCRYPT=y +CT_MUSL_EXTRA_CONFIG_ARRAY="--enable-crypt" +CT_MUSL_CONFIGPARMS="rtlddir=/lib64/lp64d" +CT_MUSL_ENABLE_DEBUG=y +CT_MUSL_EXTRA_CFLAGS="" +# CT_LIBC_MUSL_DEBUG is not set + +CT_MUSL_OLDEST_ABI="" +CT_MUSL_FORCE_UNWIND=y +# CT_GLIBC_LOCALES is not set +# CT_GLIBC_KERNEL_VERSION_NONE is not set +CT_MUSL_KERNEL_VERSION_AS_HEADERS=y + +CT_MUSL_MIN_KERNEL="5.10.185" +CT_GMUSL_SSP_DEFAULT=y + +CT_MUSL_ENABLE_WERROR=y + + +# CT_LIBC_MUSL_WARNINGS is not set +# CT_LIBC_MUSL_OPTIMIZE_NONE is not set +CT_LIBC_MUSL_OPTIMIZE_AUTO=y +# CT_LIBC_MUSL_OPTIMIZE_SPEED is not set +# CT_LIBC_MUSL_OPTIMIZE_SIZE is not set +CT_LIBC_MUSL_OPTIMIZE="auto" +CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE UCLIBC_NG" +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y + +# +# Common C library options +# +CT_THREADS_NATIVE=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y +# end of C-library + +# +# C compiler +# +CT_CC_CORE_NEEDED=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_D=y +CT_CC_SUPPORT_JIT=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y +CT_CC_GCC=y +CT_CC="gcc" +CT_CC_CHOICE_KSYM="GCC" +CT_CC_GCC_SHOW=y + +# +# Options for gcc +# +CT_CC_GCC_PKG_KSYM="GCC" +CT_GCC_DIR_NAME="gcc" +CT_GCC_USE_GNU=y +# CT_GCC_USE_LINARO is not set +# CT_GCC_USE_ORACLE is not set +CT_GCC_USE="GCC" +CT_GCC_PKG_NAME="gcc" +# CT_GCC_SRC_RELEASE is not set +# CT_GCC_SRC_DEVEL is not set +CT_GCC_SRC_CUSTOM=y +CT_GCC_CUSTOM_LOCATION="${OPENSOURCE_DIR}/gcc/gcc-12.3.0" +CT_GCC_PATCH_GLOBAL=y +# CT_GCC_PATCH_BUNDLED is not set +# CT_GCC_PATCH_LOCAL is not set +# CT_GCC_PATCH_BUNDLED_LOCAL is not set +# CT_GCC_PATCH_LOCAL_BUNDLED is not set +# CT_GCC_PATCH_NONE is not set +CT_GCC_PATCH_ORDER="global" +# CT_GCC_VERY_NEW is not set +# CT_GCC_V_13 is not set +CT_GCC_V_12=y +# CT_GCC_V_11 is not set +# CT_GCC_V_10 is not set +# CT_GCC_V_9 is not set +# CT_GCC_V_8 is not set +# CT_GCC_V_7 is not set +CT_GCC_VERSION="12.3.0" +CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" +CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_13_or_older=y +CT_GCC_older_than_13=y +CT_GCC_later_than_12=y +CT_GCC_12_or_later=y +CT_GCC_later_than_11=y +CT_GCC_11_or_later=y +CT_GCC_later_than_10=y +CT_GCC_10_or_later=y +CT_GCC_later_than_9=y +CT_GCC_9_or_later=y +CT_GCC_later_than_8=y +CT_GCC_8_or_later=y +CT_GCC_later_than_7=y +CT_GCC_7_or_later=y +CT_GCC_REQUIRE_7_or_later=y +CT_GCC_later_than_6=y +CT_GCC_6_or_later=y +CT_GCC_REQUIRE_6_or_later=y +CT_GCC_later_than_5=y +CT_GCC_5_or_later=y +CT_GCC_REQUIRE_5_or_later=y +CT_GCC_later_than_4_9=y +CT_GCC_4_9_or_later=y +CT_GCC_REQUIRE_4_9_or_later=y +CT_CC_GCC_HAS_LIBMPX=y +CT_CC_GCC_ENABLE_CXX_FLAGS="" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="" +CT_CC_GCC_EXTRA_CONFIG_ARRAY=" --disable-multilib --with-abi=lp64d --with-gnu-as --with-gnu-ld --enable-c99 --enable-shared --enable-poison-system-directories --enable-symvers=gnu --disable-bootstrap --disable-libstdcxx-dual-abi --enable-default-pie --with-toolexeclibdir=\"${CT_PREFIX_DIR}/${CT_TARGET}/sysroot/lib64/lp64d/\"" +CT_CC_GCC_STATIC_LIBSTDCXX=y +# CT_CC_GCC_SYSTEM_ZLIB is not set +CT_CC_GCC_CONFIG_TLS=m + +# +# Optimisation features +# +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y +CT_CC_GCC_LTO_ZSTD=m + +# +# Settings for libraries running on target +# +# CT_CC_GCC_ENABLE_DEFAULT_PIE is not set +CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y +# CT_CC_GCC_LIBMUDFLAP is not set +# CT_CC_GCC_LIBGOMP is not set +# CT_CC_GCC_LIBSSP is not set +# CT_CC_GCC_LIBQUADMATH is not set +# CT_CC_GCC_LIBSANITIZER is not set +CT_CC_GCC_LIBSTDCXX_VERBOSE=m + +# +# Misc. obscure options. +# +CT_CC_CXA_ATEXIT=y +CT_CC_GCC_TM_CLONE_REGISTRY=m +# CT_CC_GCC_DISABLE_PCH is not set +CT_CC_GCC_SJLJ_EXCEPTIONS=m +CT_CC_GCC_LDBL_128=m +# CT_CC_GCC_BUILD_ID is not set +CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y +# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set +# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set +# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set +CT_CC_GCC_LNK_HASH_STYLE="" +CT_CC_GCC_DEC_FLOATS_AUTO=y +# CT_CC_GCC_DEC_FLOATS_BID is not set +# CT_CC_GCC_DEC_FLOATS_DPD is not set +# CT_CC_GCC_DEC_FLOATS_NO is not set +CT_CC_GCC_DEC_FLOATS="" +CT_ALL_CC_CHOICES="GCC" + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +CT_CC_LANG_FORTRAN=y +# CT_CC_LANG_JIT is not set +# CT_CC_LANG_ADA is not set +# CT_CC_LANG_D is not set +# CT_CC_LANG_OBJC is not set +# CT_CC_LANG_OBJCXX is not set +# CT_CC_LANG_GOLANG is not set +CT_CC_LANG_OTHERS="" +# end of C compiler + +# +# Debug facilities +# +# CT_DEBUG_DUMA is not set +CT_DEBUG_GDB=y +CT_DEBUG_GDB_PKG_KSYM="GDB" +CT_GDB_DIR_NAME="gdb" +CT_GDB_PKG_NAME="gdb" +# CT_GDB_SRC_RELEASE is not set +# CT_GDB_SRC_DEVEL is not set +CT_GDB_SRC_CUSTOM=y +CT_GDB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/gdb/gdb-14.1" +CT_GDB_PATCH_GLOBAL=y +# CT_GDB_PATCH_BUNDLED is not set +# CT_GDB_PATCH_LOCAL is not set +# CT_GDB_PATCH_BUNDLED_LOCAL is not set +# CT_GDB_PATCH_LOCAL_BUNDLED is not set +# CT_GDB_PATCH_NONE is not set +CT_GDB_PATCH_ORDER="global" +CT_GDB_VERY_NEW=y +# CT_GDB_V_13 is not set +# CT_GDB_V_12 is not set +# CT_GDB_V_11 is not set +# CT_GDB_V_10 is not set +# CT_GDB_V_9 is not set +# CT_GDB_V_8_3 is not set +CT_GDB_VERSION="new" +CT_GDB_MIRRORS="$(CT_Mirrors GNU gdb) $(CT_Mirrors sourceware gdb/releases)" +CT_GDB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GDB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GDB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GDB_SIGNATURE_FORMAT="" +CT_GDB_later_than_13=y +CT_GDB_13_or_later=y +CT_GDB_later_than_12=y +CT_GDB_12_or_later=y +CT_GDB_later_than_11=y +CT_GDB_11_or_later=y +CT_GDB_later_than_10=y +CT_GDB_10_or_later=y +CT_GDB_later_than_8_3=y +CT_GDB_8_3_or_later=y +CT_GDB_CROSS=y +# CT_GDB_CROSS_STATIC is not set +# CT_GDB_CROSS_SIM is not set +# CT_GDB_CROSS_PYTHON is not set +CT_GDB_CROSS_EXTRA_CONFIG_ARRAY="" +# CT_GDB_NATIVE is not set +# CT_GDB_GDBSERVER is not set + +CT_GDB_GDBSERVER_TOPLEVEL=y +# CT_DEBUG_LTRACE is not set +# CT_DEBUG_STRACE is not set +CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE" +# end of Debug facilities + +# +# Companion libraries +# +# CT_COMPLIBS_CHECK is not set +# CT_COMP_LIBS_CLOOG is not set +CT_COMP_LIBS_EXPAT=y +CT_COMP_LIBS_EXPAT_PKG_KSYM="EXPAT" +CT_EXPAT_DIR_NAME="expat" +CT_EXPAT_PKG_NAME="expat" +# CT_EXPAT_SRC_RELEASE is not set +# CT_EXPAT_SRC_DEVEL is not set +CT_EXPAT_SRC_CUSTOM=y +CT_EXPAT_CUSTOM_LOCATION="${OPENSOURCE_DIR}/expat/expat-2.5.0" +CT_EXPAT_PATCH_GLOBAL=y +# CT_EXPAT_PATCH_BUNDLED is not set +# CT_EXPAT_PATCH_LOCAL is not set +# CT_EXPAT_PATCH_BUNDLED_LOCAL is not set +# CT_EXPAT_PATCH_LOCAL_BUNDLED is not set +# CT_EXPAT_PATCH_NONE is not set +CT_EXPAT_PATCH_ORDER="global" +# CT_EXPAT_VERY_NEW is not set +CT_EXPAT_V_2_5=y +CT_EXPAT_VERSION="2.5.0" +CT_EXPAT_MIRRORS="http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION} https://github.com/libexpat/libexpat/releases/download/R_${CT_EXPAT_VERSION//./_}" +CT_EXPAT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_EXPAT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_EXPAT_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2 .tar.gz" +CT_EXPAT_SIGNATURE_FORMAT="" +CT_COMP_LIBS_GETTEXT=y +CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT" +CT_GETTEXT_DIR_NAME="gettext" +CT_GETTEXT_PKG_NAME="gettext" +# CT_GETTEXT_SRC_RELEASE is not set +# CT_GETTEXT_SRC_DEVEL is not set +CT_GETTEXT_SRC_CUSTOM=y +CT_GETTEXT_CUSTOM_LOCATION="${OPENSOURCE_DIR}/gettext/gettext-0.22" +CT_GETTEXT_PATCH_GLOBAL=y +# CT_GETTEXT_PATCH_BUNDLED is not set +# CT_GETTEXT_PATCH_LOCAL is not set +# CT_GETTEXT_PATCH_BUNDLED_LOCAL is not set +# CT_GETTEXT_PATCH_LOCAL_BUNDLED is not set +# CT_GETTEXT_PATCH_NONE is not set +CT_GETTEXT_PATCH_ORDER="global" +CT_GETTEXT_VERY_NEW=y +# CT_GETTEXT_V_0_21 is not set +# CT_GETTEXT_V_0_20_1 is not set +# CT_GETTEXT_V_0_19_8_1 is not set +CT_GETTEXT_VERSION="new" +CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)" +CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig" +CT_GETTEXT_later_than_0_21=y +CT_GETTEXT_0_21_or_later=y +CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y + +# +# This version of gettext is not compatible with uClibc-NG. Select +# + +# +# a different version if uClibc-NG is used on the target or (in a +# + +# +# Canadian cross build) on the host. +# +CT_COMP_LIBS_GMP=y +CT_COMP_LIBS_GMP_PKG_KSYM="GMP" +CT_GMP_DIR_NAME="gmp" +CT_GMP_PKG_NAME="gmp" +# CT_GMP_SRC_RELEASE is not set +# CT_GMP_SRC_DEVEL is not set +CT_GMP_SRC_CUSTOM=y +CT_GMP_CUSTOM_LOCATION="${OPENSOURCE_DIR}/gmp/gmp-6.3.0" +CT_GMP_PATCH_GLOBAL=y +# CT_GMP_PATCH_BUNDLED is not set +# CT_GMP_PATCH_LOCAL is not set +# CT_GMP_PATCH_BUNDLED_LOCAL is not set +# CT_GMP_PATCH_LOCAL_BUNDLED is not set +# CT_GMP_PATCH_NONE is not set +CT_GMP_PATCH_ORDER="global" +# CT_GMP_VERY_NEW is not set +CT_GMP_V_6_2=y +# CT_GMP_V_6_1 is not set +CT_GMP_VERSION="6.2.1" +CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)" +CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" +CT_GMP_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_ISL=y +CT_COMP_LIBS_ISL_PKG_KSYM="ISL" +CT_ISL_DIR_NAME="isl" +CT_ISL_PKG_NAME="isl" +# CT_ISL_SRC_RELEASE is not set +# CT_ISL_SRC_DEVEL is not set +CT_ISL_SRC_CUSTOM=y +CT_ISL_CUSTOM_LOCATION="${OPENSOURCE_DIR}/isl/isl-0.24" +CT_ISL_PATCH_GLOBAL=y +# CT_ISL_PATCH_BUNDLED is not set +# CT_ISL_PATCH_LOCAL is not set +# CT_ISL_PATCH_BUNDLED_LOCAL is not set +# CT_ISL_PATCH_LOCAL_BUNDLED is not set +# CT_ISL_PATCH_NONE is not set +CT_ISL_PATCH_ORDER="global" +# CT_ISL_VERY_NEW is not set +# CT_ISL_V_0_26 is not set +# CT_ISL_V_0_25 is not set +# CT_ISL_V_0_24 is not set +# CT_ISL_V_0_23 is not set +# CT_ISL_V_0_22 is not set +# CT_ISL_V_0_21 is not set +# CT_ISL_V_0_20 is not set +# CT_ISL_V_0_19 is not set +# CT_ISL_V_0_18 is not set +# CT_ISL_V_0_17 is not set +CT_ISL_V_0_16=y +# CT_ISL_V_0_15 is not set +CT_ISL_VERSION="0.16.1" +CT_ISL_MIRRORS="https://libisl.sourceforge.io" +CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_ISL_SIGNATURE_FORMAT="" +CT_ISL_0_18_or_older=y +CT_ISL_older_than_0_18=y +CT_ISL_later_than_0_15=y +CT_ISL_0_15_or_later=y +# CT_COMP_LIBS_LIBELF is not set +CT_COMP_LIBS_LIBICONV=y +CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV" +CT_LIBICONV_DIR_NAME="libiconv" +CT_LIBICONV_PKG_NAME="libiconv" +# CT_LIBICONV_SRC_RELEASE is not set +# CT_LIBICONV_SRC_DEVEL is not set +CT_LIBICONV_SRC_CUSTOM=y +CT_LIBICONV_CUSTOM_LOCATION="${OPENSOURCE_DIR}/libiconv/libiconv-1.16" +CT_LIBICONV_PATCH_GLOBAL=y +# CT_LIBICONV_PATCH_BUNDLED is not set +# CT_LIBICONV_PATCH_LOCAL is not set +# CT_LIBICONV_PATCH_BUNDLED_LOCAL is not set +# CT_LIBICONV_PATCH_LOCAL_BUNDLED is not set +# CT_LIBICONV_PATCH_NONE is not set +CT_LIBICONV_PATCH_ORDER="global" +# CT_LIBICONV_VERY_NEW is not set +CT_LIBICONV_V_1_16=y +# CT_LIBICONV_V_1_15 is not set +CT_LIBICONV_VERSION="1.16" +CT_LIBICONV_MIRRORS="$(CT_Mirrors GNU libiconv)" +CT_LIBICONV_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LIBICONV_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LIBICONV_ARCHIVE_FORMATS=".tar.gz" +CT_LIBICONV_SIGNATURE_FORMAT="packed/.sig" +CT_COMP_LIBS_MPC=y +CT_COMP_LIBS_MPC_PKG_KSYM="MPC" +CT_MPC_DIR_NAME="mpc" +CT_MPC_PKG_NAME="mpc" +# CT_MPC_SRC_RELEASE is not set +# CT_MPC_SRC_DEVEL is not set +CT_MPC_SRC_CUSTOM=y +CT_MPC_CUSTOM_LOCATION="${OPENSOURCE_DIR}/libmpc/mpc-1.3.1" +CT_MPC_PATCH_GLOBAL=y +# CT_MPC_PATCH_BUNDLED is not set +# CT_MPC_PATCH_LOCAL is not set +# CT_MPC_PATCH_BUNDLED_LOCAL is not set +# CT_MPC_PATCH_LOCAL_BUNDLED is not set +# CT_MPC_PATCH_NONE is not set +CT_MPC_PATCH_ORDER="global" +CT_MPC_VERY_NEW=y +# CT_MPC_V_1_2 is not set +CT_MPC_VERSION="new" +CT_MPC_MIRRORS="https://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" +CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_FORMATS=".tar.gz" +CT_MPC_SIGNATURE_FORMAT="packed/.sig" +CT_MPC_later_than_1_1_0=y +CT_MPC_1_1_0_or_later=y +CT_COMP_LIBS_MPFR=y +CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR" +CT_MPFR_DIR_NAME="mpfr" +CT_MPFR_PKG_NAME="mpfr" +# CT_MPFR_SRC_RELEASE is not set +# CT_MPFR_SRC_DEVEL is not set +CT_MPFR_SRC_CUSTOM=y +CT_MPFR_CUSTOM_LOCATION="${OPENSOURCE_DIR}/mpfr/mpfr-4.2.1" +CT_MPFR_PATCH_GLOBAL=y +# CT_MPFR_PATCH_BUNDLED is not set +# CT_MPFR_PATCH_LOCAL is not set +# CT_MPFR_PATCH_BUNDLED_LOCAL is not set +# CT_MPFR_PATCH_LOCAL_BUNDLED is not set +# CT_MPFR_PATCH_NONE is not set +CT_MPFR_PATCH_ORDER="global" +CT_MPFR_VERY_NEW=y +# CT_MPFR_V_4_2 is not set +CT_MPFR_VERSION="new" +CT_MPFR_MIRRORS="https://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)" +CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" +CT_MPFR_SIGNATURE_FORMAT="packed/.asc" +CT_MPFR_later_than_4_0_0=y +CT_MPFR_4_0_0_or_later=y +CT_COMP_LIBS_NCURSES=y +CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES" +CT_NCURSES_DIR_NAME="ncurses" +CT_NCURSES_PKG_NAME="ncurses" +# CT_NCURSES_SRC_RELEASE is not set +# CT_NCURSES_SRC_DEVEL is not set +CT_NCURSES_SRC_CUSTOM=y +CT_NCURSES_CUSTOM_LOCATION="${OPENSOURCE_DIR}/ncurses/ncurses-6.4" +CT_NCURSES_PATCH_GLOBAL=y +# CT_NCURSES_PATCH_BUNDLED is not set +# CT_NCURSES_PATCH_LOCAL is not set +# CT_NCURSES_PATCH_BUNDLED_LOCAL is not set +# CT_NCURSES_PATCH_LOCAL_BUNDLED is not set +# CT_NCURSES_PATCH_NONE is not set +CT_NCURSES_PATCH_ORDER="global" +# CT_NCURSES_VERY_NEW is not set +CT_NCURSES_V_6_4=y +# CT_NCURSES_V_6_2 is not set +# CT_NCURSES_V_6_1 is not set +# CT_NCURSES_V_6_0 is not set +CT_NCURSES_VERSION="6.4" +CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)" +CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_FORMATS=".tar.gz" +CT_NCURSES_SIGNATURE_FORMAT="packed/.sig" +CT_NCURSES_NEW_ABI=y +CT_NCURSES_HOST_CONFIG_ARGS="" +CT_NCURSES_HOST_DISABLE_DB=y +CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100" +CT_NCURSES_TARGET_CONFIG_ARGS="" +# CT_NCURSES_TARGET_DISABLE_DB is not set +CT_NCURSES_TARGET_FALLBACKS="" +CT_COMP_LIBS_ZLIB=y +CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB" +CT_ZLIB_DIR_NAME="zlib" +CT_ZLIB_PKG_NAME="zlib" +# CT_ZLIB_SRC_RELEASE is not set +# CT_ZLIB_SRC_DEVEL is not set +CT_ZLIB_SRC_CUSTOM=y +CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.13" +CT_ZLIB_PATCH_GLOBAL=y +# CT_ZLIB_PATCH_BUNDLED is not set +# CT_ZLIB_PATCH_LOCAL is not set +# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set +# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set +# CT_ZLIB_PATCH_NONE is not set +CT_ZLIB_PATCH_ORDER="global" +# CT_ZLIB_VERY_NEW is not set +CT_ZLIB_V_1_2_13=y +CT_ZLIB_VERSION="1.2.13" +CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" +CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" +CT_COMP_LIBS_ZSTD=y +CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD" +CT_ZSTD_DIR_NAME="zstd" +CT_ZSTD_PKG_NAME="zstd" +# CT_ZSTD_SRC_RELEASE is not set +# CT_ZSTD_SRC_DEVEL is not set +CT_ZSTD_SRC_CUSTOM=y +CT_ZSTD_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zstd/zstd-1.5.5" +CT_ZSTD_PATCH_GLOBAL=y +# CT_ZSTD_PATCH_BUNDLED is not set +# CT_ZSTD_PATCH_LOCAL is not set +# CT_ZSTD_PATCH_BUNDLED_LOCAL is not set +# CT_ZSTD_PATCH_LOCAL_BUNDLED is not set +# CT_ZSTD_PATCH_NONE is not set +CT_ZSTD_PATCH_ORDER="global" +# CT_ZSTD_VERY_NEW is not set +CT_ZSTD_V_1_5_5=y +# CT_ZSTD_V_1_5_2 is not set +CT_ZSTD_VERSION="1.5.5" +CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/" +CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZSTD_ARCHIVE_FORMATS=".tar.gz" +CT_ZSTD_SIGNATURE_FORMAT="packed/.sig" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD" +CT_LIBICONV_NEEDED=y +CT_GETTEXT_NEEDED=y +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_EXPAT_NEEDED=y +CT_NCURSES_NEEDED=y +CT_ZLIB_NEEDED=y +CT_ZSTD_NEEDED=y +CT_LIBICONV=y +CT_GETTEXT=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_EXPAT=y +CT_NCURSES=y +CT_ZLIB=y +CT_ZSTD=y +# end of Companion libraries + +# +# Companion tools +# +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_AUTOCONF is not set +# CT_COMP_TOOLS_AUTOMAKE is not set +# CT_COMP_TOOLS_BISON is not set +# CT_COMP_TOOLS_DTC is not set +# CT_COMP_TOOLS_LIBTOOL is not set +# CT_COMP_TOOLS_M4 is not set +# CT_COMP_TOOLS_MAKE is not set +CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" +# end of Companion tools + +# +# Test suite +# +# CT_TEST_SUITE_GCC is not set +# end of Test suite diff --git a/.oebuild/cross-tools/configs/config_x86_64 b/.oebuild/cross-tools/configs/config_x86_64 index 8966c323af0e7d14b7afd70d1e4703ab7c34249d..568baf8a094bc35aa62e04a221a5d1272ff11d76 100644 --- a/.oebuild/cross-tools/configs/config_x86_64 +++ b/.oebuild/cross-tools/configs/config_x86_64 @@ -1020,7 +1020,7 @@ CT_ZLIB_PKG_NAME="zlib" # CT_ZLIB_SRC_RELEASE is not set # CT_ZLIB_SRC_DEVEL is not set CT_ZLIB_SRC_CUSTOM=y -CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.3.1" +CT_ZLIB_CUSTOM_LOCATION="${OPENSOURCE_DIR}/zlib/zlib-1.2.13" CT_ZLIB_PATCH_GLOBAL=y # CT_ZLIB_PATCH_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL is not set diff --git a/.oebuild/dockerfile/openeuler-container/Dockerfile b/.oebuild/dockerfile/openeuler-container/Dockerfile index 666bdb418b6bef79d8454f1d290f674716019f9d..2c3ebebdbdb52479fbaef417c45c4fce942a40ea 100644 --- a/.oebuild/dockerfile/openeuler-container/Dockerfile +++ b/.oebuild/dockerfile/openeuler-container/Dockerfile @@ -1,4 +1,4 @@ -FROM openeuler/openeuler:23.09 +FROM hub.oepkgs.net/openeuler/openeuler:24.03 # RUN sed -i "s#http://repo.openeuler.org#https://repo.huaweicloud.com/openeuler#g" /etc/yum.repos.d/openEuler.repo @@ -73,20 +73,19 @@ RUN wget ${openeuler_repo}/releases/download/${toolchain_version}/1_openeuler_gc && wget ${openeuler_repo}/releases/download/${toolchain_version}/2_openeuler_gcc_riscv64.tar.gz \ && wget ${openeuler_repo}/releases/download/${toolchain_version}/3_openeuler_gcc_riscv64.tar.gz \ && wget ${openeuler_repo}/releases/download/${toolchain_version}/merge_data.sh \ - && bash ./merge_data.sh -# deal aarch64 toolchain -RUN tar xzvf openeuler_gcc_arm64le.tar.gz && \ - rm -rf openeuler_gcc_arm64le.tar.gz -# deal x86_64 toolchain -RUN tar xzvf openeuler_gcc_x86_64.tar.gz && \ - rm -rf openeuler_gcc_x86_64.tar.gz -# deal arm toolchain -RUN tar xzvf openeuler_gcc_arm32le.tar.gz && \ - rm -rf openeuler_gcc_arm32le.tar.gz -# deal riscv64 toolchain -RUN tar xzvf openeuler_gcc_riscv64.tar.gz && \ - rm -rf openeuler_gcc_riscv64.tar.gz -RUN rm -rf merge_data.sh + && bash ./merge_data.sh \ + && tar xzvf openeuler_gcc_arm64le.tar.gz \ + && rm -rf openeuler_gcc_arm64le.tar.gz \ + && tar xzvf openeuler_gcc_x86_64.tar.gz \ + && rm -rf openeuler_gcc_x86_64.tar.gz \ + && tar xzvf openeuler_gcc_arm32le.tar.gz \ + && rm -rf openeuler_gcc_arm32le.tar.gz \ + && tar xzvf openeuler_gcc_riscv64.tar.gz \ + && rm -rf openeuler_gcc_riscv64.tar.gz \ + && rm -rf merge_data.sh + +# give write authority to gcc +RUN chmod u+w -R ./* WORKDIR /usr1/openeuler # download llvm toolchain and install it @@ -101,10 +100,10 @@ RUN wget ${openeuler_repo}/releases/download/${llvm_toolchain_version}/1_clang-l && wget ${openeuler_repo}/releases/download/${llvm_toolchain_version}/8_clang-llvm-17.0.6.tar.gz \ && wget ${openeuler_repo}/releases/download/${llvm_toolchain_version}/9_clang-llvm-17.0.6.tar.gz \ && wget ${openeuler_repo}/releases/download/${llvm_toolchain_version}/merge_data.sh \ - && bash ./merge_data.sh - -RUN tar zxf clang-llvm-17.0.6.tar.gz -RUN sudo mv clang-llvm-17.0.6 llvm && sudo rm -rf clang-llvm-17.0.6.tar.gz merge_data.sh + && bash ./merge_data.sh \ + && tar zxf clang-llvm-17.0.6.tar.gz \ + && sudo mv clang-llvm-17.0.6 llvm \ + && sudo rm -rf clang-llvm-17.0.6.tar.gz merge_data.sh RUN sudo chmod -R 777 /opt/buildtools/nativesdk/sysroots/x86_64-openeulersdk-linux/var/ diff --git a/.oebuild/dockerfile/openeuler-container/Dockerfile_CI b/.oebuild/dockerfile/openeuler-container/Dockerfile_CI index 707c4ab607472bbe9c4cd45393b56416506ec741..0687f8df84cb115620ca31b1455f6f09b88cf7a2 100644 --- a/.oebuild/dockerfile/openeuler-container/Dockerfile_CI +++ b/.oebuild/dockerfile/openeuler-container/Dockerfile_CI @@ -1,7 +1,7 @@ # base image FROM swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest -ARG VERSION=4.3 +ARG VERSION=4.13 ARG user=jenkins ARG group=jenkins #must to be 1001 for adapt disk mount in jenkins'job @@ -41,7 +41,7 @@ pip install PyYaml python-git requests python-jenkins paramiko json2table \ gitlint sphinx_tabs sphinx_multiversion sphinx-rtd-theme Sphinx==5.1.1 \ pyyaml pygit gitpython -i https://pypi.tuna.tsinghua.edu.cn/simple -RUN pip install oebuild==0.1 +RUN pip install oebuild==0.1.0.2 VOLUME /home/${user}/.jenkins VOLUME ${AGENT_WORKDIR} diff --git a/.oebuild/features/openeuler-mcs.yaml b/.oebuild/features/openeuler-mcs.yaml index 50ed92fd549b218a803d26183c84d5679ae72355..e3221c57eff3717fbbdee6fa21b6a3bb7dfcb7c3 100644 --- a/.oebuild/features/openeuler-mcs.yaml +++ b/.oebuild/features/openeuler-mcs.yaml @@ -1,6 +1,6 @@ type: feature -support: qemu-aarch64|raspberrypi4-64|hi3093|ok3568|x86-64 +support: qemu-aarch64|raspberrypi4-64|hi3093|ok3568|kp920|x86-64 layers: - yocto-meta-openeuler/rtos/meta-openeuler-rtos diff --git a/.oebuild/features/xen.yaml b/.oebuild/features/xen.yaml new file mode 100644 index 0000000000000000000000000000000000000000..548089db5fc17710ffd89c69353467f4a770aa17 --- /dev/null +++ b/.oebuild/features/xen.yaml @@ -0,0 +1,6 @@ +type: feature + +support: qemu-aarch64|raspberrypi4-64 + +local_conf: | + DISTRO_FEATURES:append = " xen" diff --git a/.oebuild/manifest.yaml b/.oebuild/manifest.yaml index e3fd78bb2b7dad64b65469522eb62cf81fb22c02..7c7ed20b41b9ed5604ad4b615a4e772c8b6d6508 100644 --- a/.oebuild/manifest.yaml +++ b/.oebuild/manifest.yaml @@ -26,7 +26,10 @@ manifest_list: version: 54d35b3952d5811592370b7ee9fcb8ed0f46526e HiEuler-driver: remote_url: https://gitee.com/HiEuler/hardware_driver.git - version: fe390ae40d79c4932f0ead12d35a97b0c3f9c666 + version: 1bc3074c1d51011e7648243549af36223d497fe3 + HiEdge-driver: + remote_url: https://gitee.com/HiEuler/hiedge_driver.git + version: 0a87fac88ab30e0f5673a40440a9468fd1a97dae Jailhouse: remote_url: https://gitee.com/src-openeuler/Jailhouse.git version: 5fc52fe2d58fd3fd929d97d1f10dbf7b49cdb53e @@ -569,7 +572,7 @@ manifest_list: version: 5badf7493b1ef104bc833e1b2243bafe7ca01721 kernel-5.10: remote_url: https://gitee.com/openeuler/kernel.git - version: d8e3bcbbecf8a817454c3bc203c03372108d38dd + version: 468397bfef1bf44e12e73e2a30941798385ee269 kernel-5.10-tag-rpi: remote_url: https://gitee.com/openeuler/kernel.git version: d8e3bcbbecf8a817454c3bc203c03372108d38dd @@ -579,6 +582,9 @@ manifest_list: kernel-5.10-tag928: remote_url: https://gitee.com/openeuler/kernel.git version: b88a0de017d1685cc7e2c623d6ccccde546d8405 + kernel-5.10-tag626: + remote_url: https://gitee.com/openeuler/kernel.git + version: d8e3bcbbecf8a817454c3bc203c03372108d38dd kernel-6.6: remote_url: https://gitee.com/openeuler/kernel.git version: 4da472bba5924d1d422b595ae7497935ee678de0 @@ -735,6 +741,12 @@ manifest_list: libglu: remote_url: https://gitee.com/src-openeuler/mesa-libGLU.git version: 3cd50132c28c1b19dd4d6a76e03d31c0827bc9cf + libopus: + remote_url: https://gitee.com/src-openeuler/opus.git + version: dd9289a265d51de9f34b8fd5736feaeb467aaa84 + third_party_openh264: + remote_url: https://gitee.com/openharmony/third_party_openh264.git + version: c6aa372c16fddab4203dce3c67a81fb8f7b6eb94 libgpg-error: remote_url: https://gitee.com/src-openeuler/libgpg-error.git version: 7ca7f66089027ef1d932be6e224dfdac83cfef3a @@ -1037,7 +1049,7 @@ manifest_list: version: 42e783e24b0a018f81bb6c838ca7532862528a07 oee_archive: remote_url: https://gitee.com/openeuler/oee_archive.git - version: 6ddce35662576b12266aedc9c9f92fffaa7c7622 + version: 590fc58dde5ea174ec687850d46732b032aaa6c3 ompl: remote_url: https://gitee.com/src-openeuler/ompl.git version: 42759f06c9a8d712a5ba86f1f3b22a569ec81232 @@ -1188,9 +1200,15 @@ manifest_list: python-cmd2: remote_url: https://gitee.com/src-openeuler/python-cmd2.git version: 25157cd4e8525a74c0f41f9e5c05704858f95e79 + python-coloredlogs: + remote_url: https://gitee.com/src-openeuler/python-coloredlogs.git + version: 8526e9308cf764225090ef1ed9f333d30a7815cb python-dateutil: remote_url: https://gitee.com/src-openeuler/python-dateutil.git version: 80e646f088b5e3ef3333aa4c09b7b740c0c06763 + python-distlib: + remote_url: https://gitee.com/src-openeuler/python-distlib.git + version: 49f95e6713a820826986503ae3e03e52685c822a python-docopt: remote_url: https://gitee.com/src-openeuler/python-docopt.git version: 6de180c379485aa23cdb01054e27c0852ad0ec43 @@ -1602,6 +1620,9 @@ manifest_list: src-kernel-5.10-tag928: remote_url: https://gitee.com/src-openeuler/kernel.git version: df4bedc9b7a3ae34a31276342a0a7bdd6196d24d + src-kernel-5.10-tag626: + remote_url: https://gitee.com/src-openeuler/kernel.git + version: 2b551a79823e85abfb57b79fd3a1a286a5399e5c src-kernel-5.10-tag-rockchip: remote_url: https://gitee.com/src-openeuler/kernel.git version: 27403d59696af85f0720587473da610cace11187 @@ -1782,6 +1803,9 @@ manifest_list: xcb-util-wm: remote_url: https://gitee.com/src-openeuler/xcb-util-wm.git version: 510a0590e1f7b6d109d8db58bb65ad18fdf360d5 + xen: + remote_url: https://gitee.com/src-openeuler/Xen.git + version: 82ac86330f369e4eab8ba47c45a1c737d7520ddb xerces-c: remote_url: https://gitee.com/src-openeuler/xerces-c.git version: ec2aab0a2ce4b1b3358ff908e2b4ac509424f2ef @@ -2124,3 +2148,25 @@ manifest_list: libvpx: remote_url: https://gitee.com/src-openeuler/libvpx.git version: 0ac414f4f38419207a874f79ce6075335eb19b6d + jsoncpp: + remote_url: https://gitee.com/src-openeuler/jsoncpp.git + version: 6c4e6d6ec49e75f9345b11d37cfd607ea1bb7ae2 + libvarlink: + remote_url: https://gitee.com/src-openeuler/libvarlink.git + version: 4e8682d0644a4d9c08dd4b35bc7028d6c3a71a9a + gsettings-desktop-schemas: + remote_url: https://gitee.com/src-openeuler/gsettings-desktop-schemas.git + version: 1619512b526bf265de3cf9ade80d1201ac6ed4d4 + flatbuffers: + remote_url: https://gitee.com/src-openeuler/flatbuffers.git + version: 482e2ea3dc95339111ce48e1f4ae1ac646ad07b3 + tensorflow: + remote_url: https://gitee.com/src-openeuler/tensorflow.git + version: 887c706f000886f4e44f5855474ef2b24ccd1596 + ComputeLibrary: + remote_url: https://gitee.com/src-openeuler/ComputeLibrary.git + version: 88d32a1e37776d64bdeafe64173b50b73524c135 + armnn: + remote_url: https://gitee.com/src-openeuler/armnn.git + version: 64676572e789604efd056143200b6e4677fb64fc + diff --git a/.oebuild/platform/hiedge1.yaml b/.oebuild/platform/hiedge1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..82df0e9610348e5a5336a809fa0b2d4722b041cd --- /dev/null +++ b/.oebuild/platform/hiedge1.yaml @@ -0,0 +1,10 @@ +type: platform + +machine: hiedge1 + +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 + +layers: + - yocto-meta-openeuler/bsp/meta-hisilicon + - yocto-meta-openembedded/meta-multimedia + diff --git a/.oebuild/platform/kp920.yaml b/.oebuild/platform/kp920.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fb9b1e5e293a490c84fea269187dde166811107c --- /dev/null +++ b/.oebuild/platform/kp920.yaml @@ -0,0 +1,8 @@ +type: platform + +machine: kp920 + +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 + +layers: + - yocto-meta-openeuler/bsp/meta-kunpeng diff --git a/.oebuild/samples/aarch64/hieulerpi1-ros-native.yaml b/.oebuild/samples/aarch64/hieulerpi1-ros-native.yaml new file mode 100644 index 0000000000000000000000000000000000000000..24cb53a95769cbe25cca1c92c5b490976e114923 --- /dev/null +++ b/.oebuild/samples/aarch64/hieulerpi1-ros-native.yaml @@ -0,0 +1,31 @@ +build_in: docker +machine: hieulerpi1 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-ros +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " ros " + + OPENEULER_PREBUILT_TOOLS_ENABLE = "no" + +layers: +- yocto-meta-openeuler/bsp/meta-hisilicon +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-ros/meta-ros-common +- yocto-meta-ros/meta-ros2 +- yocto-meta-ros/meta-ros2-humble +- yocto-meta-openembedded/meta-multimedia +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/hieulerpi1-ros.yaml b/.oebuild/samples/aarch64/hieulerpi1-ros.yaml new file mode 100644 index 0000000000000000000000000000000000000000..490080e7fb2e75fa64ab7142d0487939d081afdc --- /dev/null +++ b/.oebuild/samples/aarch64/hieulerpi1-ros.yaml @@ -0,0 +1,29 @@ +build_in: docker +machine: hieulerpi1 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-ros +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " ros " + +layers: +- yocto-meta-openeuler/bsp/meta-hisilicon +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-ros/meta-ros-common +- yocto-meta-ros/meta-ros2 +- yocto-meta-ros/meta-ros2-humble +- yocto-meta-openembedded/meta-multimedia +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/hieulerpi1-rt-hmi-native.yaml b/.oebuild/samples/aarch64/hieulerpi1-rt-hmi-native.yaml new file mode 100644 index 0000000000000000000000000000000000000000..99f9e92da5c73bdf2d03bdb6b09da58d85245ec7 --- /dev/null +++ b/.oebuild/samples/aarch64/hieulerpi1-rt-hmi-native.yaml @@ -0,0 +1,35 @@ +build_in: docker +machine: hieulerpi1 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + + OPENEULER_PREBUILT_TOOLS_ENABLE = "no" + +layers: +- yocto-meta-openeuler/bsp/meta-hisilicon +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/hieulerpi1-tiny.yaml b/.oebuild/samples/aarch64/hieulerpi1-tiny.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d569ffcae6b781acc8514b3bf656581eb240f3e7 --- /dev/null +++ b/.oebuild/samples/aarch64/hieulerpi1-tiny.yaml @@ -0,0 +1,21 @@ +build_in: docker +machine: hieulerpi1 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + +layers: +- yocto-meta-openeuler/bsp/meta-hisilicon +- yocto-meta-openembedded/meta-multimedia +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image-tiny diff --git a/.oebuild/samples/aarch64/hieulerpi1.yaml b/.oebuild/samples/aarch64/hieulerpi1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3ccc883178dfc6b1225f5963ba965ec643f5f875 --- /dev/null +++ b/.oebuild/samples/aarch64/hieulerpi1.yaml @@ -0,0 +1,22 @@ +build_in: docker +machine: hieulerpi1 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + +layers: +- yocto-meta-openeuler/bsp/meta-hisilicon +- yocto-meta-openembedded/meta-multimedia +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/ok3568.yaml b/.oebuild/samples/aarch64/ok3568.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a5f5804cb126f57074de640c4eb6d498761e8d73 --- /dev/null +++ b/.oebuild/samples/aarch64/ok3568.yaml @@ -0,0 +1,22 @@ +build_in: docker +machine: ok3568 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-rockchip +local_conf: | + PREFERRED_PROVIDER_virtual/kernel ?= "linux-openeuler" + +layers: +- yocto-meta-rockchip +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/ok3588.yaml b/.oebuild/samples/aarch64/ok3588.yaml new file mode 100644 index 0000000000000000000000000000000000000000..09151ffe30df9569c0958f474eedb8a0e7684620 --- /dev/null +++ b/.oebuild/samples/aarch64/ok3588.yaml @@ -0,0 +1,22 @@ +build_in: docker +machine: ok3588 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-rockchip +local_conf: |- + PREFERRED_PROVIDER_virtual/kernel ?= "linux-openeuler" + +layers: +- yocto-meta-rockchip +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk \ No newline at end of file diff --git a/.oebuild/samples/aarch64/qemu-aarch64-kernel6-llvm.yaml b/.oebuild/samples/aarch64/qemu-aarch64-kernel6-llvm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..04ca9ba60771e343a22b3aae0baffa8d37463875 --- /dev/null +++ b/.oebuild/samples/aarch64/qemu-aarch64-kernel6-llvm.yaml @@ -0,0 +1,29 @@ +build_in: docker +machine: qemu-aarch64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " kernel6 " + PREFERRED_VERSION_linux-openeuler ?= "6.6%" + PREFERRED_VERSION_linux-openeuler-rt ?= "6.6%" + + DISTRO_FEATURES:append = " clang ld-is-lld" + DISTRO_FEATURES_NATIVE:append = " clang " + EXTERNAL_TOOLCHAIN_CLANG_BIN = "${EXTERNAL_TOOLCHAIN_LLVM}/bin" + +layers: +- yocto-meta-openeuler/meta-clang +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/qemu-aarch64-kernel6.yaml b/.oebuild/samples/aarch64/qemu-aarch64-kernel6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f9e8c59f05a98e3cecc0cda29c2dbb2bc083dbf4 --- /dev/null +++ b/.oebuild/samples/aarch64/qemu-aarch64-kernel6.yaml @@ -0,0 +1,24 @@ +build_in: docker +machine: qemu-aarch64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " kernel6 " + PREFERRED_VERSION_linux-openeuler ?= "6.6%" + PREFERRED_VERSION_linux-openeuler-rt ?= "6.6%" + +layers: [] +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/qemu-aarch64-llvm.yaml b/.oebuild/samples/aarch64/qemu-aarch64-llvm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..52d46d91c3a12bc30c7c257a1558cba98d8ef907 --- /dev/null +++ b/.oebuild/samples/aarch64/qemu-aarch64-llvm.yaml @@ -0,0 +1,23 @@ +build_in: docker +machine: qemu-aarch64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: |+ + DISTRO_FEATURES:append = " clang ld-is-lld" + DISTRO_FEATURES_NATIVE:append = " clang " + EXTERNAL_TOOLCHAIN_CLANG_BIN = "${EXTERNAL_TOOLCHAIN_LLVM}/bin" + +layers: +- yocto-meta-openeuler/meta-clang +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk \ No newline at end of file diff --git a/.oebuild/samples/aarch64/qemu-aarch64-native.yaml b/.oebuild/samples/aarch64/qemu-aarch64-native.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d5982a5b11fb5f5b3f2be6af84371cf50ee001f9 --- /dev/null +++ b/.oebuild/samples/aarch64/qemu-aarch64-native.yaml @@ -0,0 +1,20 @@ +build_in: docker +machine: qemu-aarch64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: | + OPENEULER_PREBUILT_TOOLS_ENABLE = "no" + +layers: [] +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/qemu-aarch64-ros-mcs.yaml b/.oebuild/samples/aarch64/qemu-aarch64-ros-mcs.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5c855c63127a70c8eb6a55ae0368d6e6506f24c8 --- /dev/null +++ b/.oebuild/samples/aarch64/qemu-aarch64-ros-mcs.yaml @@ -0,0 +1,32 @@ +build_in: docker +machine: qemu-aarch64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-ros +- Jailhouse +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + MCS_FEATURES ?= "openamp" + DISTRO_FEATURES:append = " mcs" + + DISTRO_FEATURES:append = " ros " + +layers: +- yocto-meta-ros/meta-ros-common +- yocto-meta-ros/meta-ros2 +- yocto-meta-ros/meta-ros2-humble +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-openeuler/rtos/meta-openeuler-rtos +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk \ No newline at end of file diff --git a/.oebuild/samples/aarch64/qemu-aarch64.yaml b/.oebuild/samples/aarch64/qemu-aarch64.yaml new file mode 100644 index 0000000000000000000000000000000000000000..15845985a998f27d129a80a33d2f465978e7e4f4 --- /dev/null +++ b/.oebuild/samples/aarch64/qemu-aarch64.yaml @@ -0,0 +1,20 @@ +build_in: docker +machine: qemu-aarch64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + +layers: [] +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64-kernel6-llvm.yaml b/.oebuild/samples/aarch64/raspberrypi4-64-kernel6-llvm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6471b91844446aa11e9acff486c01543bebe447e --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64-kernel6-llvm.yaml @@ -0,0 +1,31 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " kernel6 " + PREFERRED_VERSION_linux-openeuler ?= "6.6%" + PREFERRED_VERSION_linux-openeuler-rt ?= "6.6%" + + DISTRO_FEATURES:append = " clang ld-is-lld" + DISTRO_FEATURES_NATIVE:append = " clang " + EXTERNAL_TOOLCHAIN_CLANG_BIN = "${EXTERNAL_TOOLCHAIN_LLVM}/bin" + +layers: +- yocto-meta-raspberrypi +- yocto-meta-openeuler/meta-clang +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64-kernel6-rt-hmi.yaml b/.oebuild/samples/aarch64/raspberrypi4-64-kernel6-rt-hmi.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bee60a6d867ddc2e592e771f7e8667236e722660 --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64-kernel6-rt-hmi.yaml @@ -0,0 +1,39 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + + DISTRO_FEATURES:append = " kernel6 " + PREFERRED_VERSION_linux-openeuler ?= "6.6%" + PREFERRED_VERSION_linux-openeuler-rt ?= "6.6%" + +layers: +- yocto-meta-raspberrypi +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64-kernel6.yaml b/.oebuild/samples/aarch64/raspberrypi4-64-kernel6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2235a0afca5ba5a1f208820c9e2fe92d56532463 --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64-kernel6.yaml @@ -0,0 +1,26 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " kernel6 " + PREFERRED_VERSION_linux-openeuler ?= "6.6%" + PREFERRED_VERSION_linux-openeuler-rt ?= "6.6%" + +layers: +- yocto-meta-raspberrypi +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64-llvm.yaml b/.oebuild/samples/aarch64/raspberrypi4-64-llvm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b965817c4f77703c5cd15189b2aa150ddea5ed97 --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64-llvm.yaml @@ -0,0 +1,27 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " clang ld-is-lld" + DISTRO_FEATURES_NATIVE:append = " clang " + EXTERNAL_TOOLCHAIN_CLANG_BIN = "${EXTERNAL_TOOLCHAIN_LLVM}/bin" + +layers: +- yocto-meta-raspberrypi +- yocto-meta-openeuler/meta-clang +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64-rt-hmi-native.yaml b/.oebuild/samples/aarch64/raspberrypi4-64-rt-hmi-native.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b48b5471aa4a212f8cd01ee26aa5e6c6d6918cd7 --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64-rt-hmi-native.yaml @@ -0,0 +1,35 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + + OPENEULER_PREBUILT_TOOLS_ENABLE = "no" + +layers: +- yocto-meta-raspberrypi +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64-rt-hmi.yaml b/.oebuild/samples/aarch64/raspberrypi4-64-rt-hmi.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2cf8e814a164ee8721daba7b9c8d7e01fe57cbc2 --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64-rt-hmi.yaml @@ -0,0 +1,35 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " isulad " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + +layers: +- yocto-meta-raspberrypi +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/aarch64/raspberrypi4-64.yaml b/.oebuild/samples/aarch64/raspberrypi4-64.yaml new file mode 100644 index 0000000000000000000000000000000000000000..df1cf58fa3e6c2c15d030bb7df2f427d8aebca38 --- /dev/null +++ b/.oebuild/samples/aarch64/raspberrypi4-64.yaml @@ -0,0 +1,22 @@ +build_in: docker +machine: raspberrypi4-64 +toolchain_type: EXTERNAL_TOOLCHAIN:aarch64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-raspberrypi +local_conf: |+ + DISTRO_FEATURES:append = " isulad " + +layers: +- yocto-meta-raspberrypi +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk \ No newline at end of file diff --git a/.oebuild/samples/rpi4_jailhouse_hmi_img.yaml b/.oebuild/samples/aarch64/rpi4_jailhouse_hmi_img.yaml similarity index 100% rename from .oebuild/samples/rpi4_jailhouse_hmi_img.yaml rename to .oebuild/samples/aarch64/rpi4_jailhouse_hmi_img.yaml diff --git a/.oebuild/samples/rpi4_jailhouse_tiny_img.yaml b/.oebuild/samples/aarch64/rpi4_jailhouse_tiny_img.yaml similarity index 100% rename from .oebuild/samples/rpi4_jailhouse_tiny_img.yaml rename to .oebuild/samples/aarch64/rpi4_jailhouse_tiny_img.yaml diff --git a/.oebuild/samples/arm32/qemu-arm.yaml b/.oebuild/samples/arm32/qemu-arm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5671910e52a515c949b040946bee6fcb7a4aca53 --- /dev/null +++ b/.oebuild/samples/arm32/qemu-arm.yaml @@ -0,0 +1,18 @@ +build_in: docker +machine: qemu-arm +toolchain_type: EXTERNAL_TOOLCHAIN:arm +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: | +layers: [] +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/riscv64/qemu-riscv64.yaml b/.oebuild/samples/riscv64/qemu-riscv64.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b88c43238f03f828204b669bde424b03699a8aac --- /dev/null +++ b/.oebuild/samples/riscv64/qemu-riscv64.yaml @@ -0,0 +1,18 @@ +build_in: docker +machine: qemu-riscv64 +toolchain_type: EXTERNAL_TOOLCHAIN:riscv64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: | +layers: [] +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/prebuilt_tool.yaml b/.oebuild/samples/x86-64/prebuilt_tool.yaml similarity index 100% rename from .oebuild/samples/prebuilt_tool.yaml rename to .oebuild/samples/x86-64/prebuilt_tool.yaml diff --git a/.oebuild/samples/x86-64/x86-64-kernel6-rt-hmi-ros-mcs.yaml b/.oebuild/samples/x86-64/x86-64-kernel6-rt-hmi-ros-mcs.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2685c98bf3a0a909f43e82be36d9593e7fbf68bf --- /dev/null +++ b/.oebuild/samples/x86-64/x86-64-kernel6-rt-hmi-ros-mcs.yaml @@ -0,0 +1,47 @@ +build_in: docker +machine: generic-x86-64 +toolchain_type: EXTERNAL_TOOLCHAIN:x86-64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-ros +- Jailhouse +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + + MCS_FEATURES ?= "openamp" + DISTRO_FEATURES:append = " mcs" + + DISTRO_FEATURES:append = " kernel6 " + PREFERRED_VERSION_linux-openeuler ?= "6.6%" + PREFERRED_VERSION_linux-openeuler-rt ?= "6.6%" + + DISTRO_FEATURES:append = " ros " + +layers: +- yocto-meta-ros/meta-ros-common +- yocto-meta-ros/meta-ros2 +- yocto-meta-ros/meta-ros2-humble +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-openeuler/rtos/meta-openeuler-rtos +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/x86-64/x86-64-rt-hmi-ros-mcs-native-native.yaml b/.oebuild/samples/x86-64/x86-64-rt-hmi-ros-mcs-native-native.yaml new file mode 100644 index 0000000000000000000000000000000000000000..26e3fb8213f1926ec096654824d93e832130eb78 --- /dev/null +++ b/.oebuild/samples/x86-64/x86-64-rt-hmi-ros-mcs-native-native.yaml @@ -0,0 +1,45 @@ +build_in: docker +machine: generic-x86-64 +toolchain_type: EXTERNAL_TOOLCHAIN:x86-64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-ros +- Jailhouse +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + + MCS_FEATURES ?= "openamp" + DISTRO_FEATURES:append = " mcs" + + DISTRO_FEATURES:append = " ros " + + OPENEULER_PREBUILT_TOOLS_ENABLE = "no" + +layers: +- yocto-meta-ros/meta-ros-common +- yocto-meta-ros/meta-ros2 +- yocto-meta-ros/meta-ros2-humble +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-openeuler/rtos/meta-openeuler-rtos +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/x86-64/x86-64-rt-hmi-ros-mcs.yaml b/.oebuild/samples/x86-64/x86-64-rt-hmi-ros-mcs.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e37010f4ebb6cc68768b4aa13a4d40901ba5df41 --- /dev/null +++ b/.oebuild/samples/x86-64/x86-64-rt-hmi-ros-mcs.yaml @@ -0,0 +1,43 @@ +build_in: docker +machine: generic-x86-64 +toolchain_type: EXTERNAL_TOOLCHAIN:x86-64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +- yocto-meta-ros +- Jailhouse +- yocto-meta-qt5 +local_conf: |+ + PREFERRED_PROVIDER_virtual/kernel = "linux-openeuler-rt" + DISTRO_FEATURES:append = " preempt-rt " + + DISTRO_FEATURES:append = " hmi " + DISTRO_FEATURES:append = " opengl" + OPENEULER_DEFAULT_DISTRO_FEATURES:append = " x11" + DISTRO_FEATURES:append = " wayland" + IMAGE_FEATURES:append = " weston" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " + + MCS_FEATURES ?= "openamp" + DISTRO_FEATURES:append = " mcs" + + DISTRO_FEATURES:append = " ros " + +layers: +- yocto-meta-ros/meta-ros-common +- yocto-meta-ros/meta-ros2 +- yocto-meta-ros/meta-ros2-humble +- yocto-meta-openembedded/meta-multimedia +- yocto-meta-openeuler/rtos/meta-openeuler-rtos +- yocto-meta-openembedded/meta-oe +- yocto-meta-qt5 +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/samples/x86-64/x86-64.yaml b/.oebuild/samples/x86-64/x86-64.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d893314b051fda0b300a8dc86783c89688420ce2 --- /dev/null +++ b/.oebuild/samples/x86-64/x86-64.yaml @@ -0,0 +1,18 @@ +build_in: docker +machine: generic-x86-64 +toolchain_type: EXTERNAL_TOOLCHAIN:x86-64 +no_layer: false +repos: +- yocto-poky +- yocto-meta-openembedded +local_conf: | +layers: [] +docker_param: + image: swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest + parameters: -itd --network host --cap-add NET_ADMIN + volumns: + - /dev/net/tun:/dev/net/tun + command: bash +bitbake_cmds: +- bitbake openeuler-image +- bitbake openeuler-image -c do_populate_sdk diff --git a/.oebuild/workflows/build_common.groovy b/.oebuild/workflows/build_common.groovy index 8710e98d043d8f0d7362c87ebec4e01f83b4a201..bcb424cdf9a4c8b83333d201144077bb9e03288b 100644 --- a/.oebuild/workflows/build_common.groovy +++ b/.oebuild/workflows/build_common.groovy @@ -1,32 +1,61 @@ STAGES_RES = [] +OEBUILD_DIR = "/home/jenkins/oebuild_workspace" +AGENT = "/home/jenkins/agent" +LOG_DIR = "openeuler/logs" +YOCTO_NAME = "yocto-meta-openeuler" def downloadEmbeddedCI(String remote_url, String branch){ sh 'rm -rf embedded-ci' sh "git clone ${remote_url} -b ${branch} -v embedded-ci --depth=1" } -def downloadYoctoWithBranch(String workspace, String namespace, String repo, String branch, Integer deepth){ +def downloadYoctoWithBranch(String workspace, String repo_remote, String branch, Integer deepth){ sh """ python3 main.py clone_repo \ -w ${workspace} \ - -r https://gitee.com/${namespace}/${repo} \ - -p ${repo} \ + -r ${repo_remote} \ + -p ${YOCTO_NAME} \ -v ${branch} \ -dp ${deepth} """ } -def downloadYoctoWithPr(String workspace, String namespace, String repo, Integer prnum, Integer deepth){ +def downloadYoctoWithPr(String workspace, String repo_remote, Integer prnum, Integer deepth){ sh """ python3 main.py clone_repo \ -w ${workspace} \ - -r https://gitee.com/${namespace}/${repo} \ - -p ${repo} \ + -r ${repo_remote} \ + -p ${YOCTO_NAME} \ -pr ${prnum} \ -dp ${deepth} """ } +def split_build(String build_images, String parallel_str_num){ + def build_list = [:] + def parallel_num = parallel_str_num.toInteger() + def image_list = build_images.replace("\n", " ").split(" ") + def int_num = (image_list.size() / parallel_num).toInteger() + int_num = int_num + (image_list.size() % parallel_num > 0 ? 1 : 0) + def build_index = 0 + def build_item = "" + def tmp_num = 0 + for(int i = 0; i < image_list.size(); i++){ + build_item = build_item + " " + image_list[i] + tmp_num = tmp_num + 1 + if(tmp_num >= int_num){ + build_list[build_index] = build_item.trim() + build_index = build_index + 1 + build_item = "" + tmp_num = 0 + } + } + if(build_item != ""){ + build_list[build_index] = build_item.trim() + } + return build_list +} + def formatRes(String name, String action, String check_res, String log_path){ return sh (script: """ python3 main.py serial \ @@ -50,9 +79,16 @@ def getRandomStr(){ } def mkdirOpeneulerLog(){ - def logdir = "openeuler/log" - sh "mkdir -p ${logdir}" - return logdir + dir(AGENT){ + sh "mkdir -p ${LOG_DIR}" + } +} + +def artifactsLogs(){ + dir(AGENT){ + sh "ls -al ${LOG_DIR}" + archiveArtifacts artifacts: "${LOG_DIR}/*.log", fingerprint: true + } } def getNowDatetime(){ @@ -61,15 +97,26 @@ def getNowDatetime(){ """, returnStdout: true).trim() } +def uploadTarImageWithKey(String remote_ip, String remote_dir, String username, String remote_key, String local_dir){ + sh """ + timestamp=`basename ${local_dir}` + dir_name=`dirname ${local_dir}` + cd \${dir_name} + tar zcf \${timestamp}.tar.gz \${timestamp} + ssh -i ${remote_key} -o 'StrictHostKeyChecking no' ${username}@${remote_ip} "mkdir -p ${remote_dir}" + scp -i ${remote_key} -o 'StrictHostKeyChecking no' \${timestamp}.tar.gz ${username}@${remote_ip}:${remote_dir} + """ +} + def uploadImageWithKey(String remote_ip, String remote_dir, String username, String remote_key, String local_dir){ sh """ python3 main.py put_to_dst \ -t 0 \ - -ld ${local_dir} \ - -dd ${remote_dir} \ - -i ${remote_ip} \ - -u ${username} \ - -k ${remote_key} \ + -ld $local_dir \ + -dd $remote_dir \ + -i $remote_ip \ + -u $username \ + -k $remote_key \ -sign \ -d """ @@ -84,55 +131,92 @@ def putSStateCacheToDst(String local_dir, String dst_dir){ """ } -def handleAfterBuildImage(String stage_name, String arch, Integer build_res_code, String log_dir, String random_str, String image_date){ +def uploadLogWithKey(String remote_ip, String remote_dir, String username, String remote_key, String local_path){ + sh """ + scp -i ${remote_key} -o 'StrictHostKeyChecking no' ${local_path} ${username}@${remote_ip}:${remote_dir} + """ +} + +def handleLog(log_file){ + log_path = "${LOG_DIR}/${log_file}" + if (env.isUploadLog != null && env.isUploadLog == "true"){ + withCredentials([ + file(credentialsId: openEulerLogRemoteKey, variable: 'openEulerLogKey') + ]){ + def local_log_path = "${AGENT}/${log_path}" + uploadLogWithKey(openEulerLogRemoteIP, + openEulerLogRemoteDir, + openEulerLogRemoteUser, + openEulerLogKey, + local_log_path) + } + log_path = "${openEulerLogRemoteUrl}/${log_file}" + }else{ + log_path = "artifact/${log_path}" + } + return log_path +} + +def handleAfterBuildImage(String image_name, String arch, Integer build_res_code, String random_str, String image_date){ def build_res = "failed" def test_res = "failed" def test_res_code = 1 if (build_res_code == 0){ build_res = "success" - if (putToRemote == true){ + if (env.isUploadImg != null && env.isUploadImg == "true"){ // put the image to remote server - def remote_dir = remoteDir+"/${arch}/${stage_name}" - def local_dir = "${oebuildDir}/build/${stage_name}/output/${image_date}/" - uploadImageWithKey(remoteIP, remote_dir, remoteUname, remoteKey, local_dir) + def remote_dir = openEulerImgRemoteDir+"/${arch}/${image_name}" + def local_dir = "${OEBUILD_DIR}/build/${image_name}/output/${image_date}/" + withCredentials([ + file(credentialsId: env.openEulerImgRemoteKey, variable: 'openEulerImgKey') + ]){ + uploadTarImageWithKey(openEulerImgRemoteIP, + remote_dir, + openEulerImgRemoteUser, + openEulerImgKey, + local_dir) + } } - if (saveSstateCache == true){ + if (env.isSaveCache != null && env.isSaveCache == "true"){ // put sstate-cache to share disk // Due to the current sstate-cache containing soft links pointing to files in // sstate_origin_dir, we first copy it to a temporary folder (during copying, // soft links are defaulted to copy the actual files they point to), then delete // the source folder, and finally perform an mv operation. - def sstate_local_dir = "${oebuildDir}/build/${stage_name}/sstate-cache" - def sstate_dst_dir = "${shareDir}/${ciBranch}/sstate-cache/${stage_name}-temp" + def sstate_local_dir = "${OEBUILD_DIR}/build/${image_name}/sstate-cache" + def sstate_dst_dir = "${shareDir}/${ciBranch}/sstate-cache/${image_name}-temp" putSStateCacheToDst(sstate_local_dir, sstate_dst_dir) - def sstate_origin_dir = "${shareDir}/${ciBranch}/sstate-cache/${stage_name}" - sh (script: """ + def sstate_origin_dir = "${shareDir}/${ciBranch}/sstate-cache/${image_name}" + sh """ rm -rf ${sstate_origin_dir} mv ${sstate_dst_dir} ${sstate_origin_dir} """ - ) } - // Test the build artifacts of the QEMU image and x86 image. - if(stage_name.contains("qemu") && stage_name.contains("x86-64") && !stage_name.contains("riscv")){ - test_res_code = sh (script: """ - python3 main.py utest \ - -target openeuler_image \ - -a ${arch} \ - -td ${oebuildDir}/build/${stage_name} \ - -tm ${mugenRemote} \ - -tb ${mugenBranch} > ${log_dir}/Test-${stage_name}-${random_str}.log - """, returnStatus: true) - if (test_res_code == 0){ - test_res = "success" + if (env.isTest != null && env.isTest == "true"){ + // Test the build artifacts of the QEMU image and x86 image. + if(image_name.contains("qemu") && image_name.contains("x86-64") && !image_name.contains("riscv")){ + test_res_code = sh (script: """ + python3 main.py utest \ + -target openeuler_image \ + -a ${arch} \ + -td ${OEBUILD_DIR}/build/${image_name} \ + -tm ${mugenRemote} \ + -tb ${mugenBranch} > ${AGENT}/${LOG_DIR}/Test-${image_name}-${random_str}.log + """, returnStatus: true) + if (test_res_code == 0){ + test_res = "success" + } + log_file = "Test-${image_name}-${random_str}.log" + log_path = handleLog(log_file) + STAGES_RES.push(formatRes(image_name, "test", test_res, log_path)) } } } - // Check the assignment - archiveArtifacts "${log_dir}/*.log" - STAGES_RES.push(formatRes(stage_name, "build", build_res, "artifact/${log_dir}/Build-${stage_name}-${random_str}.log")) - if (build_res_code == 0 && (stage_name.contains("qemu") && stage_name.contains("x86-64") && !stage_name.contains("riscv"))){ - STAGES_RES.push(formatRes(stage_name, "test", test_res, "artifact/${log_dir}/Test-${stage_name}-${random_str}.log")) - } + + // if need to upload log to remote + log_file = "Build-${image_name}-${random_str}.log" + log_path = handleLog(log_file) + STAGES_RES.push(formatRes(image_name, "build", build_res, log_path)) } def prepareSrcCode(workspace){ @@ -149,466 +233,145 @@ def prepareSrcCode(workspace){ """ } -// dynamic invoke build image function -def dynamicBuild(image_name, image_date, log_dir, random_str){ - image_name = image_name.replace("-", "_") - "build_${image_name}"(image_date, log_dir, random_str) -} - -// Perform the compilation check for the ok3588 image. -def build_ok3588(image_date, log_dir, random_str){ - def stage_name = "ok3588" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p ok3588 \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the ok3568 image. -def build_ok3568(image_date, log_dir, random_str){ - def stage_name = "ok3568" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p ok3568 \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the qemu-aarch64-ros-mcs image. -def build_qemu_aarch64_ros_mcs(image_date, log_dir, random_str){ - def stage_name = "qemu-aarch64-ros-mcs" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p qemu-aarch64 \ - -f "openeuler-ros;openeuler-mcs;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the qemu-aarch64-llvm image. -def build_qemu_aarch64_llvm(image_date, log_dir, random_str){ - def stage_name = "qemu-aarch64-llvm" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p qemu-aarch64 \ - -f "clang" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the raspberrypi4-64-llvm image. -def build_raspberrypi4_64_llvm(image_date, log_dir, random_str){ - def stage_name = "raspberrypi4-64-llvm" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p raspberrypi4-64 \ - -f "clang;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the qemu-aarch64-kernel6 image. -def build_qemu_aarch64_kernel6(image_date, log_dir, random_str){ - def stage_name = "qemu-aarch64-kernel6" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p qemu-aarch64 \ - -f "kernel6;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the raspberrypi4-64 image. -def build_raspberrypi4_64(image_date, log_dir, random_str){ - def stage_name = "raspberrypi4-64" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p raspberrypi4-64 \ - -f "openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the raspberrypi4-64-kernel6 image. -def build_raspberrypi4_64_kernel6(image_date, log_dir, random_str){ - def stage_name = "raspberrypi4-64-kernel6" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p raspberrypi4-64 \ - -f "kernel6;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the qemu-aarch64-kernel6-llvm image. -def build_qemu_aarch64_kernel6_llvm(image_date, log_dir, random_str){ - def stage_name = "qemu-aarch64-kernel6-llvm" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p qemu-aarch64 \ - -f "kernel6;clang;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d $stage_name > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the raspberrypi4-64-kernel6-llvm image. -def build_raspberrypi4_64_kernel6_llvm(image_date, log_dir, random_str){ - def stage_name = "raspberrypi4-64-kernel6-llvm" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p raspberrypi4-64 \ - -f "kernel6;clang;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the raspberrypi4-64-rt-hmi image. -def build_raspberrypi4_64_rt_hmi(image_date, log_dir, random_str){ - def stage_name = "raspberrypi4-64-rt-hmi" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p raspberrypi4-64 \ - -f "openeuler-rt;hmi;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the raspberrypi4-64-kernel6-rt-hmi image. -def build_raspberrypi4_64_kernel6_rt_hmi(image_date, log_dir, random_str){ - def stage_name = "raspberrypi4-64-kernel6-rt-hmi" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p raspberrypi4-64 \ - -f "openeuler-rt;hmi;kernel6;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the hieulerpi1 image. -def build_hieulerpi1(image_date, log_dir, random_str){ - def stage_name = "hieulerpi1" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p hieulerpi1 \ - -f "openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date}} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the hieulerpi1-tiny image. -def build_hieulerpi1_tiny(image_date, log_dir, random_str){ - def stage_name = "hieulerpi1-tiny" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p hieulerpi1 \ - -i "openeuler-image-tiny" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the hieulerpi1-ros image. -def build_hieulerpi1_ros(image_date, log_dir, random_str){ - def stage_name = "hieulerpi1-ros" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p hieulerpi1 \ - -f "openeuler-ros;openeuler-container" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the qemu-arm image. -def build_qemu_arm(image_date, log_dir, random_str){ - def stage_name = "qemu-arm" - def arch = "arm" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm32le \ - -p qemu-arm \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the qemu-riscv64 image. -def build_qemu_riscv64(image_date, log_dir, random_str){ - def stage_name = "qemu-riscv64" - def arch = "riscv64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_riscv64 \ - -p qemu-riscv64 \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) -} - -//Perform the compilation check for the x86-64-rt-hmi-ros-mcs image. -def build_x86_64_rt_hmi_ros_mcs(image_date, log_dir, random_str){ - def stage_name = "x86-64-rt-hmi-ros-mcs" - def arch = "x86-64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_x86_64 \ - -p x86-64 \ - -f "openeuler-rt;hmi;openeuler-ros;openeuler-mcs" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) +def translateCompileToHost(yocto_dir, arch, image_name, image_date){ + def compileContent = readYaml file: "${yocto_dir}/.oebuild/samples/${arch}/${image_name}.yaml" + compileContent.build_in = "host" + if (arch == "aarch64"){ + compileContent.toolchain_dir = "/usr1/openeuler/gcc/openeuler_gcc_arm64le" + } + if (arch == "arm32"){ + compileContent.toolchain_dir = "/usr1/openeuler/gcc/openeuler_gcc_arm32le" + } + if (arch == "riscv64"){ + compileContent.toolchain_dir = "/usr1/openeuler/gcc/openeuler_gcc_riscv64" + } + if (arch == "x86-64"){ + compileContent.toolchain_dir = "/usr1/openeuler/gcc/openeuler_gcc_x86_64" + } + compileContent.local_conf += """ +DATETIME = "${image_date}" + """ + samples_dir = "/home/jenkins/agent/samples/${arch}" + sh "mkdir -p ${samples_dir}" + writeYaml file: "${samples_dir}/${image_name}.yaml", data: compileContent + return "${samples_dir}/${image_name}.yaml" } -//Perform the compilation check for the x86-64-kernel6-rt-hmi-ros-mcs image. -def build_x86_64_kernel6_rt_hmi_ros_mcs(image_date, log_dir, random_str){ - def stage_name = "x86-64-kernel6-rt-hmi-ros-mcs" - def arch = "x86-64" +// dynamic invoke build image function +def dynamicBuild(yocto_dir, arch, image_name, image_date, random_str){ + compile_path = translateCompileToHost(yocto_dir, arch, image_name, image_date) + // prepare oebuild build environment def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_x86_64 \ - -p x86-64 \ - -f "kernel6;openeuler-rt;hmi;openeuler-ros;openeuler-mcs" \ - -i "openeuler-image;openeuler-image -c do_populate_sdk" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log + oebuild init ${OEBUILD_DIR} + cd ${OEBUILD_DIR} + mkdir -p build + ln -sf ${yocto_dir} src/yocto-meta-openeuler + oebuild ${compile_path} > ${AGENT}/${LOG_DIR}/Build-${image_name}-${random_str}.log """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) + handleAfterBuildImage(image_name, arch, task_res_code, random_str, image_date) // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) + deleteBuildDir(OEBUILD_DIR + "/build/" + image_name) } -//Perform the compilation check for the qemu-aarch64 image. -def build_qemu_aarch64(image_date, log_dir, random_str){ - def stage_name = "qemu-aarch64" - def arch = "aarch64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_arm64le \ - -p qemu-aarch64 \ - -f "openeuler-container" \ - -i "openeuler-image" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) +def buildTask(String build_imgs, String image_date){ + dir('/home/jenkins/agent'){ + sh "mkdir -p embedded-ci" + sh "mkdir -p yocto-meta-openeuler" + } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } + dir('/home/jenkins/agent/embedded-ci'){ + prepareSrcCode("/home/jenkins") + def random_str = getRandomStr() + mkdirOpeneulerLog() + for (image_name in build_imgs.split()){ + println "build ${image_name} ..." + image_split = image_name.split("/") + yocto_dir = "/home/jenkins/agent/yocto-meta-openeuler" + dynamicBuild(yocto_dir, image_split[0], image_split[1], image_date, random_str) + } + artifactsLogs() + } } -//Perform the compilation check for the x86-64 image. -def build_x86_64(image_date, log_dir, random_str){ - def stage_name = "x86-64" - def arch = "x86-64" - def task_res_code = sh (script: """ - python3 main.py build \ - -c /home/jenkins/agent/yocto-meta-openeuler \ - -target openeuler_image \ - -a ${arch} \ - -t /usr1/openeuler/gcc/openeuler_gcc_x86_64 \ - -p x86-64 \ - -i "openeuler-image" \ - -oe "\\-\\-no_layer" \ - -dt ${image_date} \ - -d ${stage_name} > ${log_dir}/Build-${stage_name}-${random_str}.log - """, returnStatus: true) - handleAfterBuildImage(stage_name, arch, task_res_code, log_dir, random_str, image_date) - // delete build directory - deleteBuildDir(oebuildDir + "/build/" + stage_name) +def get_remote_images(base_url) { + def code = """ +import requests +import subprocess +try: + from bs4 import BeautifulSoup +except ModuleNotFoundError: + subprocess.call(args="pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple", + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + shell=True) + subprocess.call(args="pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple", + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + shell=True) + from bs4 import BeautifulSoup +import re + +def get_pre_text(url, typ): + res = [] + content = requests.get(url) + resHTML = content.text + soup = BeautifulSoup(resHTML, 'lxml') + for item in soup.pre.children: + for dir_name in item.text.split(" "): + if typ == "dir" and dir_name.endswith("/") and not dir_name.startswith("."): + res.append(dir_name) + continue + if typ == "gz" and dir_name.endswith(".tar.gz") and not dir_name.startswith("."): + res.append(dir_name) + return res + +# get image list +base_url = "$base_url" +image_list = get_pre_text(base_url, "dir") +target_list = [] +for image in image_list: + time_list = get_pre_text(base_url + "/" + image, "gz") + tmp_times = [] + for time_name in time_list: + match = re.search("^[0-9]{14}(.tar.gz)\$", time_name) + if match: + tmp_times.append(time_name.replace(".tar.gz", "")) + tmp_times.sort(reverse=True) + if len(tmp_times) > 0: + target_list.append(image + tmp_times[0]) + +print(" ".join(target_list)) +""" + +file_name = getRandomStr() +writeFile file: file_name, text: code, encoding: "UTF-8" +return sh (script: """ + python3 ${file_name} +""", returnStdout: true).trim() +} + +def remote_address_exists(base_url){ + def code = """ +import requests + +content = requests.get("$base_url") +if content.status_code == 200: + print("yes") +else: + print("no") +""" + +file_name = getRandomStr() +writeFile file: file_name, text: code, encoding: "UTF-8" +return sh (script: """ + python3 ${file_name} +""", returnStdout: true).trim() } return this diff --git a/.oebuild/workflows/init_env.groovy b/.oebuild/workflows/init_env.groovy new file mode 100644 index 0000000000000000000000000000000000000000..ddb23f112195b90e5f48d1c55a9278d01b0ece4f --- /dev/null +++ b/.oebuild/workflows/init_env.groovy @@ -0,0 +1,104 @@ +def init_environment(){ + // set embedded + if (env.embeddedRemote == null || env.embeddedRemote == ""){ + env.embeddedRemote = "https://gitee.com/openeuler/embedded-ci.git" + } + if (env.embeddedBranch == null || env.embeddedBranch == ""){ + env.embeddedBranch = "master" + } + // set build repo + if (env.yoctoRemote == null || env.yoctoRemote == ""){ + env.yoctoRemote = "https://gitee.com/openeuler/yocto-meta-openeuler.git" + } + if (env.yoctoBranch == null || env.yoctoBranch == ""){ + env.yoctoBranch = "master" + } + // set test mugen + if (env.isTest == null || env.isTest == ""){ + env.isTest = "false" + } + if (env.mugenRemote == null || env.mugenRemote == ""){ + env.mugenRemote = "https://gitee.com/openeuler/mugen.git" + } + if (env.mugenBranch == null || env.mugenBranch == ""){ + env.mugenBranch = "master" + } + // set remote log + if (env.isUploadLog == null || env.isUploadLog == ""){ + env.isUploadLog = "false" + } + if (env.openEulerLogRemoteIP == null || env.openEulerLogRemoteIP == ""){ + env.openEulerLogRemoteIP = "43.136.114.130" + } + if (env.openEulerLogRemoteUser == null || env.openEulerLogRemoteUser == ""){ + env.openEulerLogRemoteUser = "openeuler" + } + if (env.openEulerLogRemoteKey == null || env.openEulerLogRemoteKey == ""){ + env.openEulerLogRemoteKey = "openEulerEmbeddedRemoteKey" + } + if (env.openEulerLogRemoteDir == null || env.openEulerLogRemoteDir == ""){ + env.openEulerLogRemoteDir = "/var/www/html/openeuler-log" + } + if (env.openEulerLogRemoteUrl == null || env.openEulerLogRemoteUrl == ""){ + env.openEulerLogRemoteUrl = "http://43.136.114.130/openeuler-log" + } + // set remote image + if (env.isUploadImg == null || env.isUploadImg == ""){ + env.isUploadImg = "false" + } + if (env.openEulerImgRemoteIP == null || env.openEulerImgRemoteIP == ""){ + env.openEulerImgRemoteIP = "43.136.114.130" + } + if (env.openEulerImgRemoteUser == null || env.openEulerImgRemoteUser == ""){ + env.openEulerImgRemoteUser = "openeuler" + } + if (env.openEulerImgRemoteKey == null || env.openEulerImgRemoteKey == ""){ + env.openEulerImgRemoteKey = "openEulerEmbeddedRemoteKey" + } + if (env.openEulerImgRemoteDir == null || env.openEulerImgRemoteDir == ""){ + env.openEulerImgRemoteDir = "/var/www/html/openeuler-ci/master" + } + // set comment + if (env.isComment == null || env.isComment == ""){ + env.isComment = "false" + } + if (env.giteeId == null || env.giteeId == ""){ + env.giteeId = "gitee-api-token" + } + if (env.commentNameSpace == null || env.commentNameSpace == ""){ + env.commentNameSpace = "openeuler" + } + if (env.commentRepo == null || env.commentRepo == ""){ + env.commentRepo = "yocto-embedded-tools" + } + if (env.commentRepoBranch == null || env.commentRepoBranch == ""){ + env.commentRepoBranch = "master" + } + // set other + if (env.isSaveCache == null || env.isSaveCache == ""){ + env.isSaveCache = "false" + } + if (env.shareDir == null || env.shareDir == ""){ + env.shareDir = "/home/jenkins/ccache" + } + if (env.ciBranch == null || env.ciBranch == ""){ + env.ciBranch = "master" + } + if (env.parallelNum == null || env.parallelNum == ""){ + env.parallelNum = "5" + } + if (env.buildImages == null || env.buildImages == ""){ + env.buildImages = "aarch64/qemu-aarch64 aarch64/hieulerpi1 arm32/qemu-arm riscv/qemu-riscv54 x86-64/x86-64" + } + if (env.baseImgUrl == null || env.baseImgUrl == ""){ + env.baseImgUrl = "http://43.136.114.130/openeuler-ci/master" + } + if (env.targetImgUrl == null || env.targetImgUrl == ""){ + env.targetImgUrl = "http://121.36.84.172/dailybuild/EBS-openEuler-Mainline/EBS-openEuler-Mainline/embedded_img" + } + if (env.archList == null || env.archList == ""){ + env.archList = "aarch64 arm32 x86-64 riscv64" + } +} + +return this diff --git a/.oebuild/workflows/jenkinsfile_ci b/.oebuild/workflows/jenkinsfile_ci index 43bdb213092aef403720d703bb9f89c2d5716788..29e5ba8f052912f875d7539392334823ff86604b 100644 --- a/.oebuild/workflows/jenkinsfile_ci +++ b/.oebuild/workflows/jenkinsfile_ci @@ -1,190 +1,124 @@ def BUILD_COM def IMAGE_DATE = "" +def BUILD_IMGS pipeline { - agent { node "${node}" } + agent any environment { PATH = "/home/jenkins/.local/bin:${env.PATH}" } stages { stage("init task"){ + agent { node "${node}" } steps{ script{ BUILD_COM = load '.oebuild/workflows/build_common.groovy' + IMAGE_DATE = BUILD_COM.getNowDatetime() + INIT_ENV = load '.oebuild/workflows/init_env.groovy' + INIT_ENV.init_environment() + BUILD_IMGS = BUILD_COM.split_build(env.buildImages, env.parallelNum) } dir('/home/jenkins/agent'){ script{ BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) - IMAGE_DATE = BUILD_COM.getNowDatetime() } } + dir('/home/jenkins/agent/embedded-ci'){ + script{ + BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", yoctoRemote, yoctoBranch, 1) + } + } + dir('/home/jenkins/agent/embedded-ci'){ + stash(name: "embedded-ci") + } + // the stash will not include .git, so mv .git to .git_bak + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + sh "mv .git .git_bak" + stash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } } } stage("build task"){ - parallel { + parallel{ stage("group1"){ - agent { node "${node}" } + agent { node "$node" } + when { expression { BUILD_IMGS.size() >= 1 } } steps { - dir('/home/jenkins/agent'){ - script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) - } - } - dir('/home/jenkins/agent/embedded-ci'){ - script{ - withCredentials([ - file(credentialsId: remoteID, variable: 'remoteKey') - ]){ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) - BUILD_COM.prepareSrcCode("/home/jenkins") - def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() - - for (image_name in group1.split()){ - println "build ${image_name} ..." - BUILD_COM.dynamicBuild(image_name, IMAGE_DATE, log_dir, random_str) - } - } - } + script{ + BUILD_COM.buildTask(BUILD_IMGS[0], IMAGE_DATE) } } } stage("group2"){ - agent { node "${node}" } + agent { node "$node" } + when { expression { BUILD_IMGS.size() >= 2 } } steps { - dir('/home/jenkins/agent'){ - script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) - } - } - dir('/home/jenkins/agent/embedded-ci'){ - script{ - withCredentials([ - file(credentialsId: remoteID, variable: 'remoteKey') - ]){ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) - BUILD_COM.prepareSrcCode("/home/jenkins") - def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() - - for (image_name in group2.split()){ - println "build ${image_name} ..." - BUILD_COM.dynamicBuild(image_name, IMAGE_DATE, log_dir, random_str) - } - } - } + script{ + BUILD_COM.buildTask(BUILD_IMGS[1], IMAGE_DATE) } } } stage("group3"){ - agent { node "${node}" } + agent { node "$node" } + when { expression { BUILD_IMGS.size() >= 3 } } steps { - dir('/home/jenkins/agent'){ - script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) - } - } - dir('/home/jenkins/agent/embedded-ci'){ - script{ - withCredentials([ - file(credentialsId: remoteID, variable: 'remoteKey') - ]){ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) - BUILD_COM.prepareSrcCode("/home/jenkins") - def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() - - for (image_name in group3.split()){ - println "build ${image_name} ..." - BUILD_COM.dynamicBuild(image_name, IMAGE_DATE, log_dir, random_str) - } - } - } + script{ + BUILD_COM.buildTask(BUILD_IMGS[2], IMAGE_DATE) } } } stage("group4"){ - agent { node "${node}" } + agent { node "$node" } + when { expression { BUILD_IMGS.size() >= 4 } } steps { - dir('/home/jenkins/agent'){ - script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) - } - } - dir('/home/jenkins/agent/embedded-ci'){ - script{ - withCredentials([ - file(credentialsId: remoteID, variable: 'remoteKey') - ]){ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) - BUILD_COM.prepareSrcCode("/home/jenkins") - def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() - - for (image_name in group4.split()){ - println "build ${image_name} ..." - BUILD_COM.dynamicBuild(image_name, IMAGE_DATE, log_dir, random_str) - } - } - } + script{ + BUILD_COM.buildTask(BUILD_IMGS[3], IMAGE_DATE) } } } stage("group5"){ - agent { node "${node}" } + agent { node "$node" } + when { expression { BUILD_IMGS.size() >= 5 } } steps { - dir('/home/jenkins/agent'){ - script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) - } - } - dir('/home/jenkins/agent/embedded-ci'){ - script{ - withCredentials([ - file(credentialsId: remoteID, variable: 'remoteKey') - ]){ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) - BUILD_COM.prepareSrcCode("/home/jenkins") - def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() - - for (image_name in group5.split()){ - println "build ${image_name} ..." - BUILD_COM.dynamicBuild(image_name, IMAGE_DATE, log_dir, random_str) - } - } - } + script{ + BUILD_COM.buildTask(BUILD_IMGS[4], IMAGE_DATE) } } } } } - } - post { - always { - dir('/home/jenkins/agent/embedded-ci'){ - script{ - withCredentials([ - string(credentialsId: "${giteeId}", variable: 'GITEETOKEN') - ]){ - def chks = "" - for (int i = 0; i < BUILD_COM.STAGES_RES.size(); ++i) { - chks = "${chks} -chk ${BUILD_COM.STAGES_RES[i]}" + stage("comment"){ + agent { node "${node}" } + when { + expression { env.isComment != null && env.isComment == "true" } + } + steps { + dir('/home/jenkins/agent'){ + script{ + sh "mkdir embedded-ci" + } + } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + script{ + withCredentials([ + string(credentialsId: "${giteeId}", variable: 'GITEETOKEN') + ]){ + def chks = "" + for (int i = 0; i < BUILD_COM.STAGES_RES.size(); ++i) { + chks = "${chks} -chk ${BUILD_COM.STAGES_RES[i]}" + } + sh """ + python3 main.py comment \ + -m ci \ + -o ${commentNameSpace} \ + -p ${commentRepo} \ + -b ${commentRepoBranch} \ + -gt ${GITEETOKEN} \ + ${chks} + """ } - sh """ - python3 main.py comment \ - -m ci \ - -o ${repoNamespace} \ - -p ${commentRepoName} \ - -b ${ciBranch} \ - -gt ${GITEETOKEN} \ - ${chks} - """ } } } diff --git a/.oebuild/workflows/jenkinsfile_ci_input b/.oebuild/workflows/jenkinsfile_ci_input index ea876da9a536c8bcde0c0d86103bc4d82a3f8187..988ebc6d718bd968eab0ed03775f5ac6ff81f902 100644 --- a/.oebuild/workflows/jenkinsfile_ci_input +++ b/.oebuild/workflows/jenkinsfile_ci_input @@ -30,14 +30,15 @@ pipeline { withCredentials([ file(credentialsId: remoteID, variable: 'remoteKey') ]){ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) BUILD_COM.prepareSrcCode("/home/jenkins") def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() + BUILD_COM.mkdirOpeneulerLog() println "build ${imageName} ..." - BUILD_COM.dynamicBuild(imageName, IMAGE_DATE, log_dir, random_str) + image_split = imageName.split("/") + yocto_dir = "/home/jenkins/agent/yocto-meta-openeuler" + BUILD_COM.dynamicBuild(yocto_dir, image_split[0], image_split[1], IMAGE_DATE, log_dir, random_str) + BUILD_COM.artifactsLogs() } } } diff --git a/.oebuild/workflows/jenkinsfile_gate b/.oebuild/workflows/jenkinsfile_gate index cee9a7dc45051e06846aad9d64bc607fa21269ba..fbe6c39e6f0e2b0f1654f016e091d55e08c1eb3e 100644 --- a/.oebuild/workflows/jenkinsfile_gate +++ b/.oebuild/workflows/jenkinsfile_gate @@ -58,13 +58,26 @@ pipeline { PATH = "/home/jenkins/.local/bin:${env.PATH}" } stages { - stage("clone embedded-ci"){ + stage("clone embedded yocto"){ steps{ dir('/home/jenkins/agent'){ script{ downloadEmbeddedCI() } } + dir('/home/jenkins/agent/embedded-ci'){ + // 下载yocto源码 + downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), Integer.parseInt(commitCount)) + + } + dir('/home/jenkins/agent/embedded-ci'){ + stash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + sh "mv .git .git_bak" + stash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } } } stage("pre") { @@ -103,8 +116,6 @@ pipeline { dir('/home/jenkins/agent/embedded-ci'){ script{ withCredentials([string(credentialsId: "${giteeId}", variable: 'GITEETOKEN')]){ - // 下载yocto源码 - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), Integer.parseInt(commitCount)) def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() // 执行commit检查 @@ -179,14 +190,20 @@ pipeline { steps{ dir('/home/jenkins/agent'){ script{ - downloadEmbeddedCI() + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ // 执行docs编译 - // 下载yocto源码 - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), 1) def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() // 执行文档编译检查 @@ -219,14 +236,20 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - downloadEmbeddedCI() + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ // 执行qemu_aarch64编译 - // 下载yocto源码 - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), 1) prepare_srccode("/home/jenkins") def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() @@ -266,14 +289,20 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - downloadEmbeddedCI() + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ // 执行qemu_aarch64编译 - // 下载yocto源码 - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), 1) prepare_srccode("/home/jenkins") def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() @@ -313,14 +342,20 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - downloadEmbeddedCI() + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ // 执行qemu_arm编译 - // 下载yocto源码 - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), 1) prepare_srccode("/home/jenkins") def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() @@ -360,16 +395,22 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - downloadEmbeddedCI() + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ // 执行qemu_arm编译 - // 下载yocto源码 def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), 1) prepare_srccode("/home/jenkins") // 执行镜像编译检查 def task_res_code = sh (script: """ @@ -407,14 +448,20 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - downloadEmbeddedCI() + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ // 执行hieulerpi1编译 - // 下载yocto源码 - downloadYoctoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), 1) prepare_srccode("/home/jenkins") def randomStr = getRandomStr() def logDir = mkdirOpeneulerLog() @@ -452,26 +499,26 @@ pipeline { dir('/home/jenkins/agent/embedded-ci'){ script{ withCredentials([ - string(credentialsId: "${giteeId}", variable: 'GITEETOKEN'), - usernamePassword(credentialsId: "${jenkinsId}", usernameVariable: 'JUSER',passwordVariable: 'JPASSWD')]){ - if (currentBuild.result != 'ABORTED') { - def chks = "" - for (int i = 0; i < STAGES_RES.size(); ++i) { - chks = "${chks} -chk ${STAGES_RES[i]}" - } - - def duration_time = System.currentTimeMillis() - currentBuild.startTimeInMillis - sh """ - python3 main.py comment \ - -m gate \ - -o $giteeTargetNamespace \ - -p $giteeRepoName \ - -pr $giteePullRequestid \ - -gt $GITEETOKEN \ - -dt $duration_time \ - $chks - """ + string(credentialsId: "${giteeId}", variable: 'GITEETOKEN'), + usernamePassword(credentialsId: "${jenkinsId}", usernameVariable: 'JUSER',passwordVariable: 'JPASSWD')]){ + if (currentBuild.result != 'ABORTED') { + def chks = "" + for (int i = 0; i < STAGES_RES.size(); ++i) { + chks = "${chks} -chk ${STAGES_RES[i]}" } + + def duration_time = System.currentTimeMillis() - currentBuild.startTimeInMillis + sh """ + python3 main.py comment \ + -m gate \ + -o $giteeTargetNamespace \ + -p $giteeRepoName \ + -pr $giteePullRequestid \ + -gt $GITEETOKEN \ + -dt $duration_time \ + $chks + """ + } } } } diff --git a/.oebuild/workflows/jenkinsfile_gate_cache b/.oebuild/workflows/jenkinsfile_gate_cache index 9c06774eb391f10fa74e19021ad02293fce407fb..bc28c0a00e96166773969928b2e960ea6c4a3d07 100644 --- a/.oebuild/workflows/jenkinsfile_gate_cache +++ b/.oebuild/workflows/jenkinsfile_gate_cache @@ -19,6 +19,20 @@ pipeline { BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) } } + dir('/home/jenkins/agent/embedded-ci'){ + script{ + //下载yocto-meta-openeuler代码 + BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) + } + } + dir('/home/jenkins/agent/embedded-ci'){ + stash(name: 'embedded-ci') + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + sh "mv .git .git_bak" + stash(name: 'yocto-meta-openeuler') + sh "mv .git_bak .git" + } } } stage("build task"){ @@ -28,18 +42,28 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) BUILD_COM.prepareSrcCode("/home/jenkins") def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() + BUILD_COM.mkdirOpeneulerLog() - BUILD_COM.build_qemu_aarch64(IMAGE_DATE, log_dir, random_str) + image_name = "aarch64/qemu-aarch64" + image_split = image_name.split("/") + yocto_dir = "/home/jenkins/agent/yocto-meta-openeuler" + BUILD_COM.dynamicBuild(yocto_dir, image_split[0], image_split[1], IMAGE_DATE, log_dir, random_str) + BUILD_COM.artifactsLogs() } } } @@ -49,19 +73,29 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) BUILD_COM.prepareSrcCode("/home/jenkins") def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() + BUILD_COM.mkdirOpeneulerLog() // 执行qemu-arm镜像编译检查 - BUILD_COM.build_qemu_arm(IMAGE_DATE, log_dir, random_str) + image_name = "arm32/qemu-arm" + image_split = image_name.split("/") + yocto_dir = "/home/jenkins/agent/yocto-meta-openeuler" + BUILD_COM.dynamicBuild(yocto_dir, image_split[0], image_split[1], IMAGE_DATE, log_dir, random_str) + BUILD_COM.artifactsLogs() } } } @@ -71,19 +105,29 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) BUILD_COM.prepareSrcCode("/home/jenkins") def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() + BUILD_COM.mkdirOpeneulerLog() // 执行x86-64镜像编译检查 - BUILD_COM.build_x86_64(IMAGE_DATE, log_dir, random_str) + image_name = "x86-64/x86-64" + image_split = image_name.split("/") + yocto_dir = "/home/jenkins/agent/yocto-meta-openeuler" + BUILD_COM.dynamicBuild(yocto_dir, image_split[0], image_split[1], IMAGE_DATE, log_dir, random_str) + BUILD_COM.artifactsLogs() } } } @@ -93,18 +137,29 @@ pipeline { steps { dir('/home/jenkins/agent'){ script{ - BUILD_COM.downloadEmbeddedCI(embeddedRemote, embeddedBranch) + sh "mkdir embedded-ci" + sh "mkdir yocto-meta-openeuler" } } + dir('/home/jenkins/agent/embedded-ci'){ + unstash(name: "embedded-ci") + } + dir('/home/jenkins/agent/yocto-meta-openeuler'){ + unstash(name: "yocto-meta-openeuler") + sh "mv .git_bak .git" + } dir('/home/jenkins/agent/embedded-ci'){ script{ - //下载yocto-meta-openeuler代码 - BUILD_COM.downloadYoctoWithBranch("/home/jenkins/agent", repoNamespace, repoName, ciBranch, 1) BUILD_COM.prepareSrcCode("/home/jenkins") def random_str = BUILD_COM.getRandomStr() - def log_dir = BUILD_COM.mkdirOpeneulerLog() + BUILD_COM.mkdirOpeneulerLog() - BUILD_COM.build_hieulerpi1(IMAGE_DATE, log_dir, random_str) + // 执行hieulerpi1镜像编译检查 + image_name = "aarch64/hieulerpi1" + image_split = image_name.split("/") + yocto_dir = "/home/jenkins/agent/yocto-meta-openeuler" + BUILD_COM.dynamicBuild(yocto_dir, image_split[0], image_split[1], IMAGE_DATE, log_dir, random_str) + BUILD_COM.artifactsLogs() } } } diff --git a/.oebuild/workflows/jenkinsfile_src_update b/.oebuild/workflows/jenkinsfile_src_update index 68da5001387928bded41b871e98f91e1a9c9f4dc..0d3be016a6b2015c1f199bfc33ea1b084b031d2e 100644 --- a/.oebuild/workflows/jenkinsfile_src_update +++ b/.oebuild/workflows/jenkinsfile_src_update @@ -8,7 +8,7 @@ pipeline { stages { stage("update src"){ steps{ - dir(SHARE_DIR + "/" + ciBranch){ + dir(shareDir + "/" + ciBranch){ script{ sh """ oebuild init oebuild_workspace @@ -24,7 +24,7 @@ pipeline { popd oebuild manifest download tar zcf src.tar.gz --exclude="src/yocto-meta-openeuler" src - mv src.tar.gz $SHARE_DIR/$ciBranch/src.tar.gz + mv src.tar.gz $shareDir/$ciBranch/src.tar.gz """ } } diff --git a/.oebuild/workflows/jenkinsfile_sync_image b/.oebuild/workflows/jenkinsfile_sync_image new file mode 100644 index 0000000000000000000000000000000000000000..9e981d44a389b2634ce41d81fb337112ebab6a40 --- /dev/null +++ b/.oebuild/workflows/jenkinsfile_sync_image @@ -0,0 +1,63 @@ +pipeline { + agent { node "${node}" } + environment { + PATH = "/home/jenkins/.local/bin:${env.PATH}" + } + stages { + stage("sync image"){ + steps{ + script{ + BUILD_COM = load '.oebuild/workflows/build_common.groovy' + INIT_ENV = load '.oebuild/workflows/init_env.groovy' + INIT_ENV.init_environment() + } + dir('/home/jenkins/agent'){ + script{ + BUILD_COM.downloadEmbeddedCI(env.embeddedRemote, env.embeddedBranch) + } + } + dir('/home/jenkins/agent/embedded-ci'){ + script{ + for (arch in env.archList.split(" ")) { + def image_list = BUILD_COM.get_remote_images(env.baseImgUrl+"/"+arch) + println(image_list) + for (image in image_list.split(" ")) { + if(image.contains("/") == false){ + continue + } + println("now sync ${image} ") + // 检查远程目录是否存在 + if (BUILD_COM.remote_address_exists(env.targetImgUrl+"/"+arch+"/"+image) == "no"){ + withCredentials([ + file(credentialsId: env.openEulerImgRemoteKey, variable: 'openEulerImgKey') + ]){ + def file_link = env.baseImgUrl+"/"+arch+"/"+image+".tar.gz" + //下载压缩包 + sh """ + mkdir -p /home/jenkins/agent/upload + cd /home/jenkins/agent/upload + wget $file_link -q + tar_file=`basename $file_link` + tar zxf \$tar_file + rm -f \$tar_file + """ + def image_name = image.split("/")[0] + def remote_dir = env.openEulerImgRemoteDir+"/${arch}/${image_name}" + def local_dir = "/home/jenkins/agent/upload" + BUILD_COM.uploadImageWithKey( + openEulerImgRemoteIP, + remote_dir, + openEulerImgRemoteUser, + openEulerImgKey, + local_dir) + sh "rm -rf /home/jenkins/agent/upload" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..4e461012962ad856654a3dca2618d4a6094f90f1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,131 @@ + +木兰宽松许可证, 第2版 + +木兰宽松许可证, 第2版 + +2020年1月 http://license.coscl.org.cn/MulanPSL2 + +您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: + +0. 定义 + +“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 + +“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 + +“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 + +“法人实体” 是指提交贡献的机构及其“关联实体”。 + +“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 + +1. 授予版权许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 + +2. 授予专利许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 + +3. 无商标许可 + +“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 + +4. 分发限制 + +您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 + +5. 免责声明与责任限制 + +“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 + +6. 语言 + +“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 + +条款结束 + +如何将木兰宽松许可证,第2版,应用到您的软件 + +如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: + +1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; + +2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; + +3, 请将如下声明文本放入每个源文件的头部注释中。 + +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. + +Mulan Permissive Software License,Version 2 + +Mulan Permissive Software License,Version 2 (Mulan PSL v2) + +January 2020 http://license.coscl.org.cn/MulanPSL2 + +Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: + +0. Definition + +Software means the program and related documents which are licensed under this License and comprise all Contribution(s). + +Contribution means the copyrightable work licensed by a particular Contributor under this License. + +Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. + +Legal Entity means the entity making a Contribution and all its Affiliates. + +Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. + +1. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. + +2. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. + +3. No Trademark License + +No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4. + +4. Distribution Restriction + +You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. + +5. Disclaimer of Warranty and Limitation of Liability + +THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +6. Language + +THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. + +END OF THE TERMS AND CONDITIONS + +How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software + +To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: + +i. Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; +ii. Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package; +iii. Attach the statement to the appropriate annotated syntax at the beginning of each source file. + +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..19265fd9638c04ecc69fbe6a8d61f35447c0be67 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,9 @@ +Copyright (c) 2024 openEuler Embedded +yocto-meta-openeuler is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. diff --git a/bsp/meta-hisilicon/conf/machine/hiedge1.conf b/bsp/meta-hisilicon/conf/machine/hiedge1.conf new file mode 100644 index 0000000000000000000000000000000000000000..be37487b8dbb518d58d49683a7d16454a6012f77 --- /dev/null +++ b/bsp/meta-hisilicon/conf/machine/hiedge1.conf @@ -0,0 +1,29 @@ +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc +MACHINE_FEATURES += "efi pci" +MACHINEOVERRIDES =. "hiedge1:march64le:" +DEFAULTTUNE = "aarch64" + +require conf/multilib.conf +# currently, don't support 32 bit libs +MULTILIBS = "" + +ROOTFS_PACKAGE_ARCH = "aarch64" + +# set IMAGETYPE and dtb +KERNEL_IMAGETYPE = "Image" +# choose dtb file +KERNEL_DEVICETREE = "" +ENABLE_UART = "1" +# serial port enabled in hiedge1 +CMDLINE_SERIAL = "ttyAMA0,115200" +SERIAL_CONSOLES = "115200;ttyAMA0" + +# arm and arm64 both support -mlittle-endian so no +# need to consider compat32. +TUNE_CCARGS .= " -mlittle-endian" +IMAGE_INSTALL:append = " kernel-modules" + +# auto load module during startup +KERNEL_MODULE_AUTOLOAD = "" +USE_VT ?= "0" + diff --git a/bsp/meta-hisilicon/recipes-bsp/ss626/files/hiedge1-user-driver.pc.in b/bsp/meta-hisilicon/recipes-bsp/ss626/files/hiedge1-user-driver.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..5aa1e6d227621c0e17944791733aae8751e2564d --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss626/files/hiedge1-user-driver.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: hiedge1-user-driver +Description: library from SS626V100_SDK +Version: @VERSION@ +Requires: +Requires.private: +Libs: -L${libdir} +Cflags: -I${includedir} -I${includedir}/npu -I${includedir}/svp_npu diff --git a/bsp/meta-hisilicon/recipes-bsp/ss626/hiedge1-bsp-pkg.bb b/bsp/meta-hisilicon/recipes-bsp/ss626/hiedge1-bsp-pkg.bb new file mode 100644 index 0000000000000000000000000000000000000000..846d048e0771b2851e73561ec4abf92a2a19e7a0 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss626/hiedge1-bsp-pkg.bb @@ -0,0 +1,26 @@ +DESCRIPTION = "Some pre-compiled ko and initscripts for hiedge1" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +DEPENDS = "update-rc.d-native" + +OPENEULER_LOCAL_NAME = "HiEdge-driver" + +RT_SUFFIX = "${@bb.utils.contains('DISTRO_FEATURES', 'preempt-rt', '-rt', '', d)}" + +SRC_URI = " \ + file://HiEdge-driver/drivers/ko.tar.gz \ +" + +S = "${WORKDIR}/HiEuler-driver/drivers" + +INSANE_SKIP:${PN} += "already-stripped" +FILES:${PN} = "${sysconfdir} ${systemd_system_unitdir} /usr/bin /ko /vendor /usr/sbin /firmware ${libdir}" + +do_install () { + cp -r ${WORKDIR}/ko ${D}/ +} + +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_SYSROOT_STRIP = "1" diff --git a/bsp/meta-hisilicon/recipes-bsp/ss626/hiedge1-user-driver_spc003.bb b/bsp/meta-hisilicon/recipes-bsp/ss626/hiedge1-user-driver_spc003.bb new file mode 100644 index 0000000000000000000000000000000000000000..9259b1e4c7055393226d853a232ec9e77cbdad5a --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss626/hiedge1-user-driver_spc003.bb @@ -0,0 +1,75 @@ +SUMMARY = "hiedge1 user driver bin package" +DESCRIPTION = "user lib and headers repack from SS626V100_SDK" +HOMEPAGE = "https://gitee.com/HiEuler/hardware_driver" +LICENSE = "CLOSED" + +inherit pkgconfig + +# This driver library is depended by many ROS packages, +# using the "lib" directory instead of the "lib64" directory +# for ros feature +python roslike_libdir_set() { + if bb.utils.contains('DISTRO_FEATURES', 'ros', True, False, d): + old_pkg_config = d.getVar("PKG_CONFIG_SYSROOT_DIR") + d.getVar('libdir') + "/pkgconfig" + pn = e.data.getVar("PN") + if pn.endswith("-native"): + return + d.setVar('libdir', d.getVar('libdir').replace('64', '')) + d.setVar('baselib', d.getVar('baselib').replace('64', '')) + d.appendVar("PKG_CONFIG_PATH", old_pkg_config) +} + +addhandler roslike_libdir_set +roslike_libdir_set[eventmask] = "bb.event.RecipePreFinalise" + +OPENEULER_LOCAL_NAME = "HiEdge-driver" + +SRC_URI = " \ + file://HiEdge-driver/drivers/lib.tar.gz \ + file://HiEdge-driver/drivers/include.tar.gz \ + file://hiedge1-user-driver.pc.in \ +" + +S = "${WORKDIR}" + +do_install:append() { + install -d ${D}${libdir} + install -d ${D}/usr/include + cp -rf -P ${WORKDIR}/lib/* ${D}${libdir} + cp -rf -P ${WORKDIR}/include/* ${D}/usr/include/ + cd ${D}${libdir} + cd - + sed \ + -e s#@VERSION@#${PV}# \ + -e s#@prefix@#${prefix}# \ + -e s#@exec_prefix@#${exec_prefix}# \ + -e s#@libdir@#${libdir}# \ + -e s#@includedir@#${includedir}# \ + ${WORKDIR}/hiedge1-user-driver.pc.in > ${WORKDIR}/hiedge1-user-driver.pc + + install -d ${D}${libdir}/pkgconfig + install -m 0644 ${WORKDIR}/hiedge1-user-driver.pc ${D}${libdir}/pkgconfig/ + +} + +FILES:${PN} += " \ + ${libdir}/*so* \ + ${libdir}/svp_npu/*so* \ +" + +FILES:${PN}-dev = " \ + ${includedir} \ + ${libdir}/pkgconfig \ +" + +FILES:${PN}-staticdev += " \ + ${libdir}/svp_npu/*a \ +" + +# hiedge1-user-driver package provides library with the same name but located in different paths, +# which will lead to the following dependency issues when detecting the shlib: +# do_package: hiedge1-user-driver: Multiple shlib providers for libascendcl.so: hiedge1-user-driver, hiedge1-user-driver ... +# set these as private libraries, don't try to search provider for it +# PRIVATE_LIBS = "libgraph.so libascendcl.so " + +INSANE_SKIP:${PN} += "already-stripped dev-so" diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/ch343_0.1.bb b/bsp/meta-hisilicon/recipes-bsp/ss928/ch343_0.1.bb new file mode 100644 index 0000000000000000000000000000000000000000..f178fce3be44f50f866d26dd7c43c534d80fd685 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss928/ch343_0.1.bb @@ -0,0 +1,26 @@ +SUMMARY = "ch343 driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://ch343.c;beginline=2469;endline=2469;md5=787eb329e3eac3e58f47744d2cf33699" + +SRC_URI = " \ + file://ch343/ch343.h \ + file://ch343/ch343.c \ + file://ch343/Makefile \ +" + +S = "${WORKDIR}/ch343" + +inherit module + +do_compile() { + oe_runmake +} + +do_install() { + install -d ${D}/ko + install -m 644 ${S}/ch343.ko ${D}/ko +} + +FILES:${PN} = " /ko/ch343.ko " + +INHIBIT_PACKAGE_STRIP = "1" diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/files/S90autorun b/bsp/meta-hisilicon/recipes-bsp/ss928/files/S90autorun deleted file mode 100755 index 67f4b54167fee8f40a025381f00f16670da86a10..0000000000000000000000000000000000000000 --- a/bsp/meta-hisilicon/recipes-bsp/ss928/files/S90autorun +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/sh - -cp /lib64/ld-linux-aarch64.so.1 /lib/ - -#Before loading the wifi driver, the relevant pins must be set first -#UART5 -bspmm 0x102F0100 0x1204 -bspmm 0x102F0104 0x1204 -bspmm 0x102F0108 0x1204 -bspmm 0x102F010C 0x1204 -#SDIO1 -bspmm 0x102F0054 0x1101 -bspmm 0x102F0050 0x1101 -bspmm 0x102F0040 0x1101 -bspmm 0x102F0044 0x1101 -bspmm 0x102F0048 0x1101 -bspmm 0x102F004C 0x1101 -#GPIO -bspmm 0x10230048 0x1200 -bspmm 0x10230044 0x1200 -bspmm 0x10230040 0x1200 -bspmm 0x1023003C 0x1200 -bspmm 0x102F00F4 0x1201 - -cd /ko - -bash ./load_ss928v100 -i -total 8192 -osmem 4096 - - -echo 47 > /sys/class/gpio/export -echo out >/sys/class/gpio/gpio47/direction -echo 1 > /sys/class/gpio/gpio47/value - -#echo 72 > /sys/class/gpio/export -#echo out >/sys/class/gpio/gpio72/direction -#echo 0 > /sys/class/gpio/gpio72/value - - -bspmm 0x0102F00F0 0x1201 #GPIO9_5 -bspmm 0x0102F0110 0x1201 #GPIO10_5 - - -#SDIO LEVEL TO 3.3v -bspmm 0x102e0010 0x11 - - -#GPIO7_1 GPIO7_2 GPIO6_6 -bspmm 0x0102F0094 0x1201 -bspmm 0x0102F0098 0x1201 -bspmm 0x0102F0088 0x1201 -bspmm 0x0102F0084 0x1201 -bspmm 0x0102F0080 0x1201 - -echo 57 > /sys/class/gpio/export -echo out >/sys/class/gpio/gpio57/direction -echo 1 > /sys/class/gpio/gpio57/value - -echo 58 > /sys/class/gpio/export -echo out >/sys/class/gpio/gpio58/direction -echo 1 > /sys/class/gpio/gpio58/value - -echo 54 > /sys/class/gpio/export -echo out >/sys/class/gpio/gpio54/direction -echo 1 > /sys/class/gpio/gpio54/value - -#GPIO6_2 1-> 928 HDMIout 0->loop hdmiout -echo 50 > /sys/class/gpio/export -echo out >/sys/class/gpio/gpio50/direction -echo 1 > /sys/class/gpio/gpio50/value - -#UART2 MUX -bspmm 0x0102F0070 0x1201 -bspmm 0x0102F0074 0x1201 -bspmm 0x0102F0078 0x1200 #RS232 -bspmm 0x0102F007C 0x1200 #RS232 - -#UART1 MUX -bspmm 0x0102F0060 0x1201 -bspmm 0x0102F0064 0x1201 -bspmm 0x0102F006C 0x1200 #RS232 -bspmm 0x0102F0068 0x1200 #RS232 - -#UART3 MUX -bspmm 0x0102f012c 0x00001201 -bspmm 0x0102f0130 0x00001201 -bspmm 0x0102f00D0 0x00001200 #RS485 - -#UART4 MUX -bspmm 0x0102f0134 0x00001201 -bspmm 0x0102f0138 0x00001201 - -#RTC 生成1秒脉冲 -i2c_write 0 0x64 0xd 0x44 - -#mipi GPIO config -bspmm 0x102f0150 0x1100 -bspmm 0x102f0160 0x1100 - -echo 97 > /sys/class/gpio/export -echo out > /sys/class/gpio/gpio97/direction -echo 1 > /sys/class/gpio/gpio97/value - -echo 101 > /sys/class/gpio/export -echo out > /sys/class/gpio/gpio101/direction -echo 1 > /sys/class/gpio/gpio101/value - -#wait for chip to start and complete -sleep 1 -res=`i2c_read 4 0xd0 0xa9 0xa9 1 1 |grep error` -if [ -z "$res" ]; then - echo "start config rohm" - bash /etc/init.d/rohm_400M.sh > /dev/null - echo "config rohm success" -fi - -echo 46 > /sys/class/gpio/export -echo out >/sys/class/gpio/gpio46/direction -echo 0 > /sys/class/gpio/gpio46/value -echo 'nameserver 8.8.8.8' >> /etc/resolv.conf -# ifconfig eth0 192.168.0.22 netmask 255.255.255.0 -# route -n add default gw 192.168.0.1 diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/Makefile b/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..f1124378bbef8838120ec4092c7faf61295087e0 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/Makefile @@ -0,0 +1,9 @@ +KERNEL_DIR := $(KERNEL_SRC) +PWD := $(shell pwd) +obj-m := ch343.o + +default: + $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules + +clean: + $(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/ch343.c b/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/ch343.c new file mode 100644 index 0000000000000000000000000000000000000000..51e07b9209bd0731c6bd131864ee0ddbad083eb4 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/ch343.c @@ -0,0 +1,2470 @@ +#define DEBUG +#define VERBOSE_DEBUG + +#undef DEBUG +#undef VERBOSE_DEBUG + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)) +#include +#endif + +#include "ch343.h" + +#define DRIVER_AUTHOR "TECH39" +#define DRIVER_DESC "USB serial driver for ch342/ch343/ch344/ch9101/ch9102/ch9103, etc." +#define VERSION_DESC "V1.1" + +#define IOCTL_MAGIC 'W' +#define IOCTL_CMD_GPIOENABLE _IOW(IOCTL_MAGIC, 0x80, u16) +#define IOCTL_CMD_GPIOSET _IOW(IOCTL_MAGIC, 0x81, u16) +#define IOCTL_CMD_GPIOGET _IOWR(IOCTL_MAGIC, 0x82, u16) +#define IOCTL_CMD_GPIOINFO _IOWR(IOCTL_MAGIC, 0x83, u16) +#define IOCTL_CMD_GETCHIPTYPE _IOR(IOCTL_MAGIC, 0x84, u16) + +static struct usb_driver ch343_driver; +static struct tty_driver *ch343_tty_driver; + +static DEFINE_IDR(ch343_minors); +static DEFINE_MUTEX(ch343_minors_lock); + +static void ch343_tty_set_termios(struct tty_struct *tty, + struct ktermios *termios_old); + +/* + * Look up an ch343 structure by minor. If found and not disconnected, increment + * its refcount and return it with its mutex held. + */ +static struct ch343 *ch343_get_by_minor(unsigned int minor) +{ + struct ch343 *ch343; + + mutex_lock(&ch343_minors_lock); + ch343 = idr_find(&ch343_minors, minor); + if (ch343) { + mutex_lock(&ch343->mutex); + if (ch343->disconnected) { + mutex_unlock(&ch343->mutex); + ch343 = NULL; + } else { + tty_port_get(&ch343->port); + mutex_unlock(&ch343->mutex); + } + } + mutex_unlock(&ch343_minors_lock); + return ch343; +} + +/* + * Try to find an available minor number and if found, associate it with 'ch343'. + */ +static int ch343_alloc_minor(struct ch343 *ch343) +{ + int minor; + + mutex_lock(&ch343_minors_lock); + minor = idr_alloc(&ch343_minors, ch343, 0, CH343_TTY_MINORS, GFP_KERNEL); + mutex_unlock(&ch343_minors_lock); + + return minor; +} + +/* Release the minor number associated with 'ch343'. */ +static void ch343_release_minor(struct ch343 *ch343) +{ + mutex_lock(&ch343_minors_lock); + idr_remove(&ch343_minors, ch343->minor); + mutex_unlock(&ch343_minors_lock); +} + +/* + * Functions for CH343 control messages. + */ +static int ch343_control_out(struct ch343 *ch343, u8 request, + u16 value, u16 index) +{ + int retval; + + retval = usb_autopm_get_interface(ch343->control); + if (retval) + return retval; + + retval = usb_control_msg(ch343->dev, usb_sndctrlpipe(ch343->dev, 0), + request, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT, + value, index, NULL, 0, DEFAULT_TIMEOUT); + + dev_vdbg(&ch343->control->dev, + "ch343_control_out(%02x,%02x,%04x,%04x)\n", + USB_DIR_OUT|0x40, request, value, index); + + usb_autopm_put_interface(ch343->control); + + return retval < 0 ? retval : 0; +} + +static int ch343_control_in(struct ch343 *ch343, + u8 request, u16 value, u16 index, + char *buf, unsigned bufsize) +{ + int retval; + int i; + + retval = usb_autopm_get_interface(ch343->control); + if (retval) + return retval; + + retval = usb_control_msg(ch343->dev, usb_rcvctrlpipe(ch343->dev, 0), request, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, + value, index, buf, bufsize, DEFAULT_TIMEOUT); + + dev_vdbg(&ch343->control->dev, + "ch343_control_in(%02x,%02x,%04x,%04x,%p,%u)\n", + USB_DIR_IN | 0x40, (u8)request, (u16)value, (u16)index, buf, + (int)bufsize); + + dev_vdbg(&ch343->control->dev, + "ch343_control_in result:"); + for (i = 0; i < retval; i++) { + dev_vdbg(&ch343->control->dev, + "0x%.2x ", (u8)buf[i]); + } + + usb_autopm_put_interface(ch343->control); + + return retval < 0 ? retval : 0; +} + +static inline int ch343_set_control(struct ch343 *ch343, int control) +{ + if (ch343->iface <= 1) + return ch343_control_out(ch343, CMD_C2 + ch343->iface, + ~control, 0x0000); + else if (ch343->iface <= 3) + return ch343_control_out(ch343, CMD_C2 + 0x10 + (ch343->iface - 2), + ~control, 0x0000); + else + return -1; +} + +static inline int ch343_set_line(struct ch343 *ch343, struct usb_cdc_line_coding *line) +{ + return 0; +} + +static int ch343_get_status(struct ch343 *ch343) +{ + char *buffer; + int retval; + const unsigned size = 2; + unsigned long flags; + + buffer = kmalloc(size, GFP_KERNEL); + if (!buffer) + return -ENOMEM; + + retval = ch343_control_in(ch343, CMD_R, CMD_C3 + ch343->iface, + 0, buffer, size); + if (retval <= 0) + goto out; + + /* setup the private status if available */ + spin_lock_irqsave(&ch343->read_lock, flags); + ch343->ctrlin = (~(*buffer)) & CH343_CTI_ST; + spin_unlock_irqrestore(&ch343->read_lock, flags); + +out: + kfree(buffer); + return retval; +} + +/* -------------------------------------------------------------------------- */ + +static int ch343_configure(struct ch343 *ch343) +{ + char *buffer; + int r; + const unsigned size = 2; + u8 chiptype; + + buffer = kmalloc(size, GFP_KERNEL); + if (!buffer) + return -ENOMEM; + + r = ch343_control_in(ch343, CMD_C6, 0, 0, buffer, size); + if (r < 0) + goto out; + + chiptype = buffer[1]; + + switch (ch343->idProduct) { + case 0x55D2: + if (chiptype == 0x48) + ch343->chiptype = CHIP_CH342F; + else if (chiptype == 0x41) + ch343->chiptype = CHIP_CH342GJK; + break; + case 0x55D3: + if (chiptype == 0x08) + ch343->chiptype = CHIP_CH343GP; + else if (chiptype == 0x02) + ch343->chiptype = CHIP_CH343J; + else if (chiptype == 0x01) + ch343->chiptype = CHIP_CH343K; + else if (chiptype == 0x18) + ch343->chiptype = CHIP_CH343G_AUTOBAUD; + break; + case 0x55D4: + if (chiptype == 0x08) + ch343->chiptype = CHIP_CH9102F; + else if (chiptype == 0x09) + ch343->chiptype = CHIP_CH9102X; + break; + case 0x55D5: + if (chiptype == 0xC0) + ch343->chiptype = CHIP_CH344L; + break; + case 0x55D7: + if (chiptype == 0x4B) + ch343->chiptype = CHIP_CH9103M; + break; + case 0x55D8: + if (chiptype == 0x08) + ch343->chiptype = CHIP_CH9101UH; + break; + default: + break; + } + + if (ch343->chiptype != CHIP_CH344L) { + r = ch343_get_status(ch343); + if (r < 0) + goto out; + } + + dev_info(&ch343->data->dev, + "%s - chip hver : 0x%2x, sver : 0x%2x, chip : %d\n", + __func__, buffer[0], buffer[1], ch343->chiptype); +out: + kfree(buffer); + return r < 0 ? r : 0; +} + +/* + * Write buffer management. + * All of these assume proper locks taken by the caller. + */ +static int ch343_wb_alloc(struct ch343 *ch343) +{ + int i, wbn; + struct ch343_wb *wb; + + wbn = 0; + i = 0; + for (;;) { + wb = &ch343->wb[wbn]; + if (!wb->use) { + wb->use = 1; + return wbn; + } + wbn = (wbn + 1) % CH343_NW; + if (++i >= CH343_NW) + return -1; + } +} + +static int ch343_wb_is_avail(struct ch343 *ch343) +{ + int i, n; + unsigned long flags; + + n = CH343_NW; + spin_lock_irqsave(&ch343->write_lock, flags); + for (i = 0; i < CH343_NW; i++) + n -= ch343->wb[i].use; + spin_unlock_irqrestore(&ch343->write_lock, flags); + return n; +} + +/* + * Finish write. Caller must hold ch343->write_lock + */ +static void ch343_write_done(struct ch343 *ch343, struct ch343_wb *wb) +{ + wb->use = 0; + ch343->transmitting--; + usb_autopm_put_interface_async(ch343->control); +} + +/* + * Poke write. + * + * the caller is responsible for locking + */ +static int ch343_start_wb(struct ch343 *ch343, struct ch343_wb *wb) +{ + int rc; + + ch343->transmitting++; + + wb->urb->transfer_buffer = wb->buf; + wb->urb->transfer_dma = wb->dmah; + wb->urb->transfer_buffer_length = wb->len; + wb->urb->dev = ch343->dev; + + rc = usb_submit_urb(wb->urb, GFP_ATOMIC); + if (rc < 0) { + dev_err(&ch343->data->dev, + "%s - usb_submit_urb(write bulk) failed: %d\n", + __func__, rc); + ch343_write_done(ch343, wb); + } + return rc; +} + +static void ch343_update_status(struct ch343 *ch343, + unsigned char *data, size_t len) +{ + unsigned long flags; + u8 status; + u8 difference; + u8 type = data[0]; + + if (len < 4) + return; + + if (ch343->chiptype == CHIP_CH344L) { + if (data[0] != 0x00) + return; + type = data[1]; + } + + switch (type) { + case CH343_CTT_M: + status = ~data[len - 1] & CH343_CTI_ST; + if (ch343->chiptype == CHIP_CH344L) + status &= CH343_CTI_C; + + if (!ch343->clocal && (ch343->ctrlin & status & CH343_CTI_DC)) { + tty_port_tty_hangup(&ch343->port, false); + } + + spin_lock_irqsave(&ch343->read_lock, flags); + difference = status ^ ch343->ctrlin; + ch343->ctrlin = status; + ch343->oldcount = ch343->iocount; + + if (!difference) { + spin_unlock_irqrestore(&ch343->read_lock, flags); + return; + } + if (difference & CH343_CTI_C) { + ch343->iocount.cts++; + } + if (difference & CH343_CTI_DS) { + ch343->iocount.dsr++; + } + if (difference & CH343_CTI_R) { + ch343->iocount.rng++; + } + if (difference & CH343_CTI_DC) { + ch343->iocount.dcd++; + } + spin_unlock_irqrestore(&ch343->read_lock, flags); + + wake_up_interruptible(&ch343->wioctl); + break; + case CH343_CTT_O: + spin_lock_irqsave(&ch343->read_lock, flags); + ch343->oldcount = ch343->iocount; + ch343->iocount.overrun++; + spin_unlock_irqrestore(&ch343->read_lock, flags); + break; + case CH343_CTT_P: + spin_lock_irqsave(&ch343->read_lock, flags); + ch343->oldcount = ch343->iocount; + ch343->iocount.parity++; + spin_unlock_irqrestore(&ch343->read_lock, flags); + break; + case CH343_CTT_F: + spin_lock_irqsave(&ch343->read_lock, flags); + ch343->oldcount = ch343->iocount; + ch343->iocount.frame++; + spin_unlock_irqrestore(&ch343->read_lock, flags); + break; + default: + dev_err(&ch343->control->dev, + "%s - unknown status received:" + "len:%d, data0:0x%x, data1:0x%x\n", + __func__, + (int)len, data[0], data[1]); + break; + } +} + +/* Reports status changes with "interrupt" transfers */ +static void ch343_ctrl_irq(struct urb *urb) +{ + struct ch343 *ch343 = urb->context; + unsigned char *data = urb->transfer_buffer; + unsigned int len = urb->actual_length; + int status = urb->status; + int retval; + + switch (status) { + case 0: + /* success */ + break; + case -ECONNRESET: + case -ENOENT: + case -ESHUTDOWN: + /* this urb is terminated, clean up */ + dev_dbg(&ch343->control->dev, + "%s - urb shutting down with status: %d\n", + __func__, status); + return; + default: + dev_dbg(&ch343->control->dev, + "%s - nonzero urb status received: %d\n", + __func__, status); + goto exit; + } + + usb_mark_last_busy(ch343->dev); + //ch343_update_status(ch343, data, len); +exit: + retval = usb_submit_urb(urb, GFP_ATOMIC); + if (retval && retval != -EPERM) + dev_err(&ch343->control->dev, "%s - usb_submit_urb failed: %d\n", + __func__, retval); +} + +static int ch343_submit_read_urb(struct ch343 *ch343, int index, gfp_t mem_flags) +{ + int res; + + if (!test_and_clear_bit(index, &ch343->read_urbs_free)) + return 0; + + dev_vdbg(&ch343->data->dev, "%s - urb %d\n", __func__, index); + + res = usb_submit_urb(ch343->read_urbs[index], mem_flags); + if (res) { + if (res != -EPERM) { + dev_err(&ch343->data->dev, + "%s - usb_submit_urb failed: %d\n", + __func__, res); + } + set_bit(index, &ch343->read_urbs_free); + return res; + } + + return 0; +} + +static int ch343_submit_read_urbs(struct ch343 *ch343, gfp_t mem_flags) +{ + int res; + int i; + + for (i = 0; i < ch343->rx_buflimit; ++i) { + res = ch343_submit_read_urb(ch343, i, mem_flags); + if (res) + return res; + } + + return 0; +} + +static void ch343_process_read_urb(struct ch343 *ch343, struct urb *urb) +{ + if (!urb->actual_length) + return; + + tty_insert_flip_string(&ch343->port, urb->transfer_buffer, + urb->actual_length); + tty_flip_buffer_push(&ch343->port); +} + +static void ch343_read_bulk_callback(struct urb *urb) +{ + struct ch343_rb *rb = urb->context; + struct ch343 *ch343 = rb->instance; + int status = urb->status; + + dev_vdbg(&ch343->data->dev, "%s - urb %d, len %d\n", __func__, + rb->index, urb->actual_length); + + if (!ch343->dev) { + set_bit(rb->index, &ch343->read_urbs_free); + dev_dbg(&ch343->data->dev, "%s - disconnected\n", __func__); + return; + } + + if (status) { + set_bit(rb->index, &ch343->read_urbs_free); + dev_dbg(&ch343->data->dev, "%s - non-zero urb status: %d\n", + __func__, status); + return; + } + + usb_mark_last_busy(ch343->dev); + ch343_process_read_urb(ch343, urb); + set_bit(rb->index, &ch343->read_urbs_free); + ch343_submit_read_urb(ch343, rb->index, GFP_ATOMIC); +} + +/* data interface wrote those outgoing bytes */ +static void ch343_write_bulk(struct urb *urb) +{ + struct ch343_wb *wb = urb->context; + struct ch343 *ch343 = wb->instance; + unsigned long flags; + int status = urb->status; + + dev_vdbg(&ch343->data->dev, "%s, len %d\n", __func__, urb->actual_length); + if (status || (urb->actual_length != urb->transfer_buffer_length)) + dev_vdbg(&ch343->data->dev, "%s - len %d/%d, status %d\n", + __func__, + urb->actual_length, + urb->transfer_buffer_length, + status); + + spin_lock_irqsave(&ch343->write_lock, flags); + ch343_write_done(ch343, wb); + spin_unlock_irqrestore(&ch343->write_lock, flags); + schedule_work(&ch343->work); +} + +static void ch343_softint(struct work_struct *work) +{ + struct ch343 *ch343 = container_of(work, struct ch343, work); + + dev_dbg(&ch343->data->dev, "%s\n", __func__); + + tty_port_tty_wakeup(&ch343->port); +} + +/* + * TTY handlers + */ +static int ch343_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + struct ch343 *ch343; + int retval; + + dev_dbg(tty->dev, "%s\n", __func__); + + ch343 = ch343_get_by_minor(tty->index); + if (!ch343) + return -ENODEV; + + retval = tty_standard_install(driver, tty); + if (retval) + goto error_init_termios; + + tty->driver_data = ch343; + + return 0; + +error_init_termios: + tty_port_put(&ch343->port); + return retval; +} + +static int ch343_tty_open(struct tty_struct *tty, struct file *filp) +{ + struct ch343 *ch343 = tty->driver_data; + + dev_dbg(tty->dev, "%s\n", __func__); + + return tty_port_open(&ch343->port, tty, filp); +} + +static void ch343_port_dtr_rts(struct tty_port *port, int raise) +{ + struct ch343 *ch343 = container_of(port, struct ch343, port); + int res; + + dev_dbg(&ch343->data->dev, "%s, raise:%d\n", __func__, raise); + + if (raise) + ch343->ctrlout |= CH343_CTO_D | CH343_CTO_R; + else + ch343->ctrlout &= ~(CH343_CTO_D | CH343_CTO_R); + + res = ch343_set_control(ch343, ch343->ctrlout); + if (res) + dev_err(&ch343->control->dev, "failed to set dtr/rts\n"); +} + +static int ch343_port_activate(struct tty_port *port, struct tty_struct *tty) +{ + struct ch343 *ch343 = container_of(port, struct ch343, port); + int retval = -ENODEV; + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + mutex_lock(&ch343->mutex); + if (ch343->disconnected) + goto disconnected; + + retval = usb_autopm_get_interface(ch343->control); + if (retval) + goto error_get_interface; + + /* + * FIXME: Why do we need this? Allocating 64K of physically contiguous + * memory is really nasty... + */ + set_bit(TTY_NO_WRITE_SPLIT, &tty->flags); + ch343->control->needs_remote_wakeup = 1; + + retval = ch343_configure(ch343); + if (retval) + goto error_configure; + + ch343_tty_set_termios(tty, NULL); + + usb_autopm_put_interface(ch343->control); + + mutex_unlock(&ch343->mutex); + + return 0; + +error_configure: + usb_autopm_put_interface(ch343->control); +error_get_interface: +disconnected: + mutex_unlock(&ch343->mutex); + + return usb_translate_errors(retval); +} + +static void ch343_port_destruct(struct tty_port *port) +{ + struct ch343 *ch343 = container_of(port, struct ch343, port); + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + ch343_release_minor(ch343); + usb_put_intf(ch343->control); + kfree(ch343); +} + +static void ch343_port_shutdown(struct tty_port *port) +{ + struct ch343 *ch343 = container_of(port, struct ch343, port); + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + +} + +static void ch343_tty_cleanup(struct tty_struct *tty) +{ + struct ch343 *ch343 = tty->driver_data; + dev_dbg(&ch343->control->dev, "%s\n", __func__); + tty_port_put(&ch343->port); +} + +static void ch343_tty_hangup(struct tty_struct *tty) +{ + struct ch343 *ch343 = tty->driver_data; + dev_dbg(&ch343->control->dev, "%s\n", __func__); + tty_port_hangup(&ch343->port); +} + +static void ch343_tty_close(struct tty_struct *tty, struct file *filp) +{ + struct ch343 *ch343 = tty->driver_data; + dev_dbg(&ch343->control->dev, "%s\n", __func__); + tty_port_close(&ch343->port, tty, filp); +} + +static int ch343_tty_write(struct tty_struct *tty, + const unsigned char *buf, int count) +{ + struct ch343 *ch343 = tty->driver_data; + int stat; + unsigned long flags; + int wbn; + struct ch343_wb *wb; + + if (!count) + return 0; + + dev_vdbg(&ch343->data->dev, "%s - count %d\n", __func__, count); + + spin_lock_irqsave(&ch343->write_lock, flags); + wbn = ch343_wb_alloc(ch343); + if (wbn < 0) { + spin_unlock_irqrestore(&ch343->write_lock, flags); + return 0; + } + wb = &ch343->wb[wbn]; + + if (!ch343->dev) { + wb->use = 0; + spin_unlock_irqrestore(&ch343->write_lock, flags); + return -ENODEV; + } + + count = (count > ch343->writesize) ? ch343->writesize : count; + + memcpy(wb->buf, buf, count); + wb->len = count; + + stat = usb_autopm_get_interface_async(ch343->control); + if (stat) { + wb->use = 0; + spin_unlock_irqrestore(&ch343->write_lock, flags); + return stat; + } + + if (ch343->susp_count) { + usb_anchor_urb(wb->urb, &ch343->delayed); + spin_unlock_irqrestore(&ch343->write_lock, flags); + return count; + } + + stat = ch343_start_wb(ch343, wb); + spin_unlock_irqrestore(&ch343->write_lock, flags); + + if (stat < 0) + return stat; + return count; +} + +static int ch343_tty_write_room(struct tty_struct *tty) +{ + struct ch343 *ch343 = tty->driver_data; + /* + * Do not let the line discipline to know that we have a reserve, + * or it might get too enthusiastic. + */ + return ch343_wb_is_avail(ch343) ? ch343->writesize : 0; +} + +static int ch343_tty_chars_in_buffer(struct tty_struct *tty) +{ + struct ch343 *ch343 = tty->driver_data; + /* + * if the device was unplugged then any remaining characters fell out + * of the connector ;) + */ + if (ch343->disconnected) + return 0; + /* + * This is inaccurate (overcounts), but it works. + */ + return (CH343_NW - ch343_wb_is_avail(ch343)) * ch343->writesize; +} + +static int ch343_tty_break_ctl(struct tty_struct *tty, int state) +{ + struct ch343 *ch343 = tty->driver_data; + int retval; + uint16_t reg_contents; + uint8_t *regbuf; + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + regbuf = kmalloc(2, GFP_KERNEL); + if (!regbuf) + return -1; + + if (state != 0) { + regbuf[0] = CH343_N_B; + regbuf[1] = 0x00; + } else { + regbuf[0] = CH343_N_B | CH343_N_AB; + regbuf[1] = 0x00; + } + reg_contents = get_unaligned_le16(regbuf); + + if (ch343->iface) + retval = ch343_control_out(ch343, CMD_C4, 0x00, + reg_contents); + else + retval = ch343_control_out(ch343, CMD_C4, reg_contents, + 0x00); + + if (retval < 0) + dev_err(&ch343->control->dev, "%s - USB control write error (%d)\n", + __func__, retval); + + kfree(regbuf); + + return retval; +} + +static int ch343_tty_tiocmget(struct tty_struct *tty) +{ + struct ch343 *ch343 = tty->driver_data; + unsigned long flags; + unsigned int result; + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + spin_lock_irqsave(&ch343->read_lock, flags); + result = (ch343->ctrlout & CH343_CTO_D ? TIOCM_DTR : 0) | + (ch343->ctrlout & CH343_CTO_R ? TIOCM_RTS : 0) | + (ch343->ctrlin & CH343_CTI_C ? TIOCM_CTS : 0) | + (ch343->ctrlin & CH343_CTI_DS ? TIOCM_DSR : 0) | + (ch343->ctrlin & CH343_CTI_R ? TIOCM_RI : 0) | + (ch343->ctrlin & CH343_CTI_DC ? TIOCM_CD : 0); + spin_unlock_irqrestore(&ch343->read_lock, flags); + + return result; +} + +static int ch343_tty_tiocmset(struct tty_struct *tty, + unsigned int set, unsigned int clear) +{ + struct ch343 *ch343 = tty->driver_data; + unsigned int newctrl; + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + newctrl = ch343->ctrlout; + set = (set & TIOCM_DTR ? CH343_CTO_D : 0) | + (set & TIOCM_RTS ? CH343_CTO_R : 0); + clear = (clear & TIOCM_DTR ? CH343_CTO_D : 0) | + (clear & TIOCM_RTS ? CH343_CTO_R : 0); + + newctrl = (newctrl & ~clear) | set; + + if (ch343->ctrlout == newctrl) + return 0; + return ch343_set_control(ch343, ch343->ctrlout = newctrl); +} + +static int ch343_tty_ioctl(struct tty_struct *tty, + unsigned int cmd, unsigned long arg) +{ + struct ch343 *ch343 = tty->driver_data; + int rv = 0; + + unsigned long arg1; + unsigned long arg2; + unsigned long arg3; + u32 inarg; + u16 inargH, inargL; + u32 __user *argval = (u32 __user *)arg; + + u8 gbit1, gbit2, gbit3; + u8 gen1, gd1, gen2, gd2, gen3, gd3; + u8 gv1, gv2, gv3; + + u16 gev, gdv, gv; + u16 value, index; + u8 *buffer; + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + buffer = kmalloc(8, GFP_KERNEL); + if (!buffer) + return -ENOMEM; + + switch (cmd) { + case TIOCGSERIAL: /* gets serial port data */ + break; + case TIOCSSERIAL: + break; + case TIOCMIWAIT: + break; + case TIOCGICOUNT: + break; + case IOCTL_CMD_GETCHIPTYPE: + if (put_user(ch343->chiptype, argval)) { + rv = -EFAULT; + goto out; + } + break; + case IOCTL_CMD_GPIOINFO: + get_user(arg1, (long __user *)arg); + get_user(arg2, ((long __user *)arg + 1)); + get_user(arg3, ((long __user *)arg + 2)); + + rv = ch343_control_in(ch343, CMD_C11, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gen1 = buffer[0]; + gen2 = buffer[1]; + gen3 = buffer[2]; + rv = ch343_control_in(ch343, CMD_C10, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gd1 = buffer[0]; + gd2 = buffer[1]; + gd3 = buffer[2]; + gv1 = buffer[3]; + gv2 = buffer[4]; + gv3 = buffer[5]; + gev = gdv = gv = 0x00; + + if (ch343->chiptype == CHIP_CH9102X) { + if (gen2 & BIT(3)) + gev |= BIT(0); + if (gen2 & BIT(5)) + gev |= BIT(1); + if (gen2 & BIT(1)) + gev |= BIT(2); + if (gen2 & BIT(7)) + gev |= BIT(3); + if (gen3 & BIT(0)) + gev |= BIT(5); + if (gen2 & BIT(2)) + gev |= BIT(6); + + if (gd2 & BIT(3)) + gdv |= BIT(0); + if (gd2 & BIT(5)) + gdv |= BIT(1); + if (gd2 & BIT(1)) + gdv |= BIT(2); + if (gd2 & BIT(7)) + gdv |= BIT(3); + if (gd3 & BIT(0)) + gdv |= BIT(5); + if (gd2 & BIT(2)) + gdv |= BIT(6); + + if (gv2 & BIT(3)) + gv |= BIT(0); + if (gv2 & BIT(5)) + gv |= BIT(1); + if (gv2 & BIT(1)) + gv |= BIT(2); + if (gv2 & BIT(7)) + gv |= BIT(3); + if (gv3 & BIT(0)) + gv |= BIT(5); + if (gv2 & BIT(2)) + gv |= BIT(6); + } else if (ch343->chiptype == CHIP_CH9102F) { + if (gen2 & BIT(1)) + gev |= BIT(0); + if (gen2 & BIT(7)) + gev |= BIT(1); + if (gen2 & BIT(4)) + gev |= BIT(2); + if (gen2 & BIT(6)) + gev |= BIT(3); + if (gen2 & BIT(3)) + gev |= BIT(4); + + if (gd2 & BIT(1)) + gdv |= BIT(0); + if (gd2 & BIT(7)) + gdv |= BIT(1); + if (gd2 & BIT(4)) + gdv |= BIT(2); + if (gd2 & BIT(6)) + gdv |= BIT(3); + if (gd2 & BIT(3)) + gdv |= BIT(4); + + if (gv2 & BIT(1)) + gv |= BIT(0); + if (gv2 & BIT(7)) + gv |= BIT(1); + if (gv2 & BIT(4)) + gv |= BIT(2); + if (gv2 & BIT(6)) + gv |= BIT(3); + if (gv2 & BIT(3)) + gv |= BIT(4); + } else if (ch343->chiptype == CHIP_CH9103M) { + if (gen1 & BIT(3)) + gev |= BIT(0); + if (gen1 & BIT(2)) + gev |= BIT(1); + if (gen3 & BIT(2)) + gev |= BIT(2); + if (gen2 & BIT(6)) + gev |= BIT(3); + if (gen1 & BIT(0)) + gev |= BIT(4); + if (gen1 & BIT(6)) + gev |= BIT(5); + if (gen2 & BIT(3)) + gev |= BIT(6); + if (gen2 & BIT(5)) + gev |= BIT(7); + if (gen3 & BIT(0)) + gev |= BIT(8); + if (gen2 & BIT(2)) + gev |= BIT(9); + if (gen1 & BIT(5)) + gev |= BIT(10); + if (gen2 & BIT(4)) + gev |= BIT(11); + + if (gd1 & BIT(3)) + gdv |= BIT(0); + if (gd1 & BIT(2)) + gdv |= BIT(1); + if (gd3 & BIT(2)) + gdv |= BIT(2); + if (gd2 & BIT(6)) + gdv |= BIT(3); + if (gd1 & BIT(0)) + gdv |= BIT(4); + if (gd1 & BIT(6)) + gdv |= BIT(5); + if (gd2 & BIT(3)) + gdv |= BIT(6); + if (gd2 & BIT(5)) + gdv |= BIT(7); + if (gd3 & BIT(0)) + gdv |= BIT(8); + if (gd2 & BIT(2)) + gdv |= BIT(9); + if (gd1 & BIT(5)) + gdv |= BIT(10); + if (gd2 & BIT(4)) + gdv |= BIT(11); + + if (gv1 & BIT(3)) + gv |= BIT(0); + if (gv1 & BIT(2)) + gv |= BIT(1); + if (gv3 & BIT(2)) + gv |= BIT(2); + if (gv2 & BIT(6)) + gv |= BIT(3); + if (gv1 & BIT(0)) + gv |= BIT(4); + if (gv1 & BIT(6)) + gv |= BIT(5); + if (gv2 & BIT(3)) + gv |= BIT(6); + if (gv2 & BIT(5)) + gv |= BIT(7); + if (gv3 & BIT(0)) + gv |= BIT(8); + if (gv2 & BIT(2)) + gv |= BIT(9); + if (gv1 & BIT(5)) + gv |= BIT(10); + if (gv2 & BIT(4)) + gv |= BIT(11); + } else if (ch343->chiptype == CHIP_CH9101UH) { + + } + + put_user(gev, (u16 __user *)arg1); + put_user(gdv, (u16 __user *)arg2); + put_user(gv, (u16 __user *)arg3); + + break; + case IOCTL_CMD_GPIOENABLE: + if (get_user(inarg, argval)) { + rv = -EFAULT; + goto out; + } + rv = ch343_control_in(ch343, CMD_C11, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gen1 = buffer[0]; + gen2 = buffer[1]; + gen3 = buffer[2]; + + rv = ch343_control_in(ch343, CMD_C10, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gd1 = buffer[0]; + gd2 = buffer[1]; + gd3 = buffer[2]; + gv1 = buffer[3]; + gv2 = buffer[4]; + gv3 = buffer[5]; + + inargH = inarg >> 16; + inargL = inarg; + + if (ch343->chiptype == CHIP_CH9102X) { + if (inargH & BIT(0)) { + gen2 |= BIT(3); + if (inargL & BIT(0)) + gd2 |= BIT(3); + else + gd2 &= ~BIT(3); + } else { + gen2 &= ~BIT(3); + } + if (inargH & BIT(1)) { + gen2 |= BIT(5); + if (inargL & BIT(1)) + gd2 |= BIT(5); + else + gd2 &= ~BIT(5); + } else + gen2 &= ~BIT(5); + if (inargH & BIT(2)) { + gen2 |= BIT(1); + if (inargL & BIT(2)) + gd2 |= BIT(1); + else + gd2 &= ~BIT(1); + } else + gen2 &= ~BIT(1); + if (inargH & BIT(3)) { + gen2 |= BIT(7); + if (inargL & BIT(3)) + gd2 |= BIT(7); + else + gd2 &= ~BIT(7); + } else + gen2 &= ~BIT(7); + if (inargH & BIT(5)) { + gen3 |= BIT(0); + if (inargL & BIT(5)) + gd3 |= BIT(0); + else + gd3 &= ~BIT(0); + } else + gen2 &= ~BIT(7); + if (inargH & BIT(6)) { + gen2 |= BIT(2); + if (inargL & BIT(6)) + gd2 |= BIT(2); + else + gd2 &= ~BIT(2); + } else + gen2 &= ~BIT(2); + } else if (ch343->chiptype == CHIP_CH9102F) { + if (inargH & BIT(0)) { + gen2 |= BIT(1); + if (inargL & BIT(0)) + gd2 |= BIT(1); + else + gd2 &= ~BIT(1); + } else + gen2 &= ~BIT(1); + if (inargH & BIT(1)) { + gen2 |= BIT(7); + if (inargL & BIT(1)) + gd2 |= BIT(7); + else + gd2 &= ~BIT(7); + } else + gen2 &= ~BIT(7); + if (inargH & BIT(2)) { + gen2 |= BIT(4); + if (inargL & BIT(2)) + gd2 |= BIT(4); + else + gd2 &= ~BIT(4); + } else + gen2 &= ~BIT(4); + if (inargH & BIT(3)) { + gen2 |= BIT(6); + if (inargL & BIT(3)) + gd2 |= BIT(6); + else + gd2 &= ~BIT(6); + } else + gen2 &= ~BIT(6); + if (inargH & BIT(4)) { + gen2 |= BIT(3); + if (inargL & BIT(4)) + gd2 |= BIT(3); + else + gd2 &= ~BIT(3); + } else + gen2 &= ~BIT(3); + } else if (ch343->chiptype == CHIP_CH9103M) { + if (inargH & BIT(0)) { + gen1 |= BIT(3); + if (inargL & BIT(0)) + gd1 |= BIT(3); + else + gd1 &= ~BIT(3); + } else + gen1 &= ~BIT(3); + if (inargH & BIT(1)) { + gen1 |= BIT(2); + if (inargL & BIT(1)) + gd1 |= BIT(2); + else + gd1 &= ~BIT(2); + } else + gen1 &= ~BIT(2); + if (inargH & BIT(2)) { + gen3 |= BIT(2); + if (inargL & BIT(2)) + gd3 |= BIT(2); + else + gd3 &= ~BIT(2); + } else + gen3 &= ~BIT(2); + if (inargH & BIT(3)) { + gen2 |= BIT(6); + if (inargL & BIT(3)) + gd2 |= BIT(6); + else + gd2 &= ~BIT(6); + } else + gen2 &= ~BIT(6); + if (inargH & BIT(4)) { + gen1 |= BIT(0); + if (inargL & BIT(4)) + gd1 |= BIT(0); + else + gd1 &= ~BIT(0); + } else + gen1 &= ~BIT(0); + if (inargH & BIT(5)) { + gen1 |= BIT(6); + if (inargL & BIT(5)) + gd1 |= BIT(6); + else + gd1 &= ~BIT(6); + } else + gen1 &= ~BIT(6); + if (inargH & BIT(6)) { + gen2 |= BIT(3); + if (inargL & BIT(6)) + gd2 |= BIT(3); + else + gd2 &= ~BIT(3); + } else + gen2 &= ~BIT(3); + if (inargH & BIT(7)) { + gen2 |= BIT(5); + if (inargL & BIT(7)) + gd2 |= BIT(5); + else + gd2 &= ~BIT(5); + } else + gen2 &= ~BIT(5); + if (inargH & BIT(8)) { + gen3 |= BIT(0); + if (inargL & BIT(8)) + gd3 |= BIT(0); + else + gd3 &= ~BIT(0); + } else + gen3 &= ~BIT(0); + if (inargH & BIT(9)) { + gen2 |= BIT(2); + if (inargL & BIT(9)) + gd2 |= BIT(2); + else + gd2 &= ~BIT(2); + } else + gen2 &= ~BIT(2); + if (inargH & BIT(10)) { + gen1 |= BIT(5); + if (inargL & BIT(10)) + gd1 |= BIT(5); + else + gd1 &= ~BIT(5); + } else + gen1 &= ~BIT(5); + if (inargH & BIT(11)) { + gen2 |= BIT(4); + if (inargL & BIT(11)) + gd2 |= BIT(4); + else + gd2 &= ~BIT(4); + } else + gen2 &= ~BIT(4); + } else if (ch343->chiptype == CHIP_CH9101UH) { + if (inargH & BIT(0)) { + gen2 |= BIT(6); + if (inargL & BIT(0)) + gd2 |= BIT(6); + else + gd2 &= ~BIT(6); + } else + gen2 &= ~BIT(6); + if (inargH & BIT(1)) { + gen2 |= BIT(0); + if (inargL & BIT(1)) + gd2 |= BIT(0); + else + gd2 &= ~BIT(0); + } else + gen2 &= ~BIT(0); + if (inargH & BIT(2)) { + gen1 |= BIT(2); + if (inargL & BIT(2)) + gd1 |= BIT(2); + else + gd1 &= ~BIT(2); + } else + gen1 &= ~BIT(2); + if (inargH & BIT(3)) { + gen2 |= BIT(2); + if (inargL & BIT(3)) + gd2 |= BIT(2); + else + gd2 &= ~BIT(2); + } else + gen2 &= ~BIT(2); + if (inargH & BIT(4)) { + gen1 |= BIT(5); + if (inargL & BIT(4)) + gd1 |= BIT(5); + else + gd1 &= ~BIT(5); + } else + gen1 &= ~BIT(5); + if (inargH & BIT(5)) { + gen1 |= BIT(4); + if (inargL & BIT(5)) + gd1 |= BIT(4); + else + gd1 &= ~BIT(4); + } else + gen1 &= ~BIT(4); + if (inargH & BIT(6)) { + gen2 |= BIT(4); + if (inargL & BIT(6)) + gd2 |= BIT(4); + else + gd2 &= ~BIT(4); + } else + gen2 &= ~BIT(4); + } + value = gen1 + ((u16)gd1 << 8); + index = gen2 + ((u16)gd2 << 8); + rv = ch343_control_out(ch343, CMD_C7, value, index); + if (rv < 0) + goto out; + value = gd3 + ((u16)gv3 << 8); + index = gen3; + rv = ch343_control_out(ch343, CMD_C8, value, index); + if (rv < 0) + goto out; + + break; + case IOCTL_CMD_GPIOSET: + if (get_user(inarg, argval)) { + rv = -EFAULT; + goto out; + } + + rv = ch343_control_in(ch343, CMD_C11, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gen1 = buffer[0]; + gen2 = buffer[1]; + gen3 = buffer[2]; + + rv = ch343_control_in(ch343, CMD_C10, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gd1 = buffer[0]; + gd2 = buffer[1]; + gd3 = buffer[2]; + gv1 = buffer[3]; + gv2 = buffer[4]; + gv3 = buffer[5]; + + inargH = inarg >> 16; + inargL = inarg; + + gbit1 = gbit2 = gbit3 = 0x00; + + if (ch343->chiptype == CHIP_CH9102X) { + if ((inargH & BIT(0)) && (gen2 & BIT(3)) && (gd2 & BIT(3))) { + gbit2 |= BIT(3); + if (inargL & BIT(0)) + gv2 |= BIT(3); + else + gv2 &= ~BIT(3); + } + if ((inargH & BIT(1)) && (gen2 & BIT(5)) && (gd2 & BIT(5))) { + gbit2 |= BIT(5); + if (inargL & BIT(1)) + gv2 |= BIT(5); + else + gv2 &= ~BIT(5); + } + if ((inargH & BIT(2)) && (gen2 & BIT(1)) && (gd2 & BIT(1))) { + gbit2 |= BIT(1); + if (inargL & BIT(2)) + gv2 |= BIT(1); + else + gv2 &= ~BIT(1); + } + if ((inargH & BIT(3)) && (gen2 & BIT(7)) && (gd2 & BIT(7))) { + gbit2 |= BIT(7); + if (inargL & BIT(3)) + gv2 |= BIT(7); + else + gv2 &= ~BIT(7); + } + if ((inargH & BIT(5)) && (gen3 & BIT(0)) && (gd3 & BIT(0))) { + gbit3 |= BIT(0); + if (inargL & BIT(5)) + gv3 |= BIT(0); + else + gv3 &= ~BIT(0); + } + if ((inargH & BIT(6)) && (gen2 & BIT(2)) && (gd2 & BIT(2))) { + gbit2 |= BIT(2); + if (inargL & BIT(6)) + gv2 |= BIT(2); + else + gv2 &= ~BIT(2); + } + } else if (ch343->chiptype == CHIP_CH9102F) { + if ((inargH & BIT(0)) && (gen2 & BIT(1)) && (gd2 & BIT(1))) { + gbit2 |= BIT(1); + if (inargL & BIT(0)) + gv2 |= BIT(1); + else + gv2 &= ~BIT(1); + } + if ((inargH & BIT(1)) && (gen2 & BIT(7)) && (gd2 & BIT(7))) { + gbit2 |= BIT(7); + if (inargL & BIT(1)) + gv2 |= BIT(7); + else + gv2 &= ~BIT(7); + } + if ((inargH & BIT(2)) && (gen2 & BIT(4)) && (gd2 & BIT(4))) { + gbit2 |= BIT(4); + if (inargL & BIT(2)) + gv2 |= BIT(4); + else + gv2 &= ~BIT(4); + } + if ((inargH & BIT(3)) && (gen2 & BIT(6)) && (gd2 & BIT(6))) { + gbit2 |= BIT(6); + if (inargL & BIT(3)) + gv2 |= BIT(6); + else + gv2 &= ~BIT(6); + } + if ((inargH & BIT(4)) && (gen2 & BIT(3)) && (gd2 & BIT(3))) { + gbit2 |= BIT(3); + if (inargL & BIT(4)) + gv2 |= BIT(3); + else + gv2 &= ~BIT(3); + } + } else if (ch343->chiptype == CHIP_CH9103M) { + if ((inargH & BIT(0)) && (gen1 & BIT(3)) && (gd1 & BIT(3))) { + gbit1 |= BIT(3); + if (inargL & BIT(0)) + gv1 |= BIT(3); + else + gv1 &= ~BIT(3); + } + if ((inargH & BIT(1)) && (gen1 & BIT(2)) && (gd1 & BIT(2))) { + gbit1 |= BIT(2); + if (inargL & BIT(1)) + gv1 |= BIT(2); + else + gv1 &= ~BIT(2); + } + if ((inargH & BIT(2)) && (gen3 & BIT(2)) && (gd3 & BIT(2))) { + gbit3 |= BIT(2); + if (inargL & BIT(2)) + gv3 |= BIT(2); + else + gv3 &= ~BIT(2); + } + if ((inargH & BIT(3)) && (gen2 & BIT(6)) && (gd2 & BIT(6))) { + gbit2 |= BIT(6); + if (inargL & BIT(3)) + gv2 |= BIT(6); + else + gv2 &= ~BIT(6); + } + if ((inargH & BIT(4)) && (gen1 & BIT(0)) && (gd1 & BIT(0))) { + gbit1 |= BIT(0); + if (inargL & BIT(4)) + gv1 |= BIT(0); + else + gv1 &= ~BIT(0); + } + if ((inargH & BIT(5)) && (gen1 & BIT(6)) && (gd1 & BIT(6))) { + gbit1 |= BIT(6); + if (inargL & BIT(5)) + gv1 |= BIT(6); + else + gv1 &= ~BIT(6); + } + if ((inargH & BIT(6)) && (gen2 & BIT(3)) && (gd2 & BIT(3))) { + gbit2 |= BIT(3); + if (inargL & BIT(6)) + gv2 |= BIT(3); + else + gv2 &= ~BIT(3); + } + if ((inargH & BIT(7)) && (gen2 & BIT(5)) && (gd2 & BIT(5))) { + gbit2 |= BIT(5); + if (inargL & BIT(7)) + gv2 |= BIT(5); + else + gv2 &= ~BIT(5); + } + if ((inargH & BIT(8)) && (gen3 & BIT(0)) && (gd3 & BIT(0))) { + gbit3 |= BIT(0); + if (inargL & BIT(8)) + gv3 |= BIT(0); + else + gv3 &= ~BIT(0); + } + if ((inargH & BIT(9)) && (gen2 & BIT(2)) && (gd2 & BIT(2))) { + gbit2 |= BIT(2); + if (inargL & BIT(9)) + gv2 |= BIT(2); + else + gv2 &= ~BIT(2); + } + if ((inargH & BIT(10)) && (gen1 & BIT(5)) && (gd1 & BIT(5))) { + gbit1 |= BIT(5); + if (inargL & BIT(10)) + gv1 |= BIT(5); + else + gv1 &= ~BIT(5); + } + if ((inargH & BIT(11)) && (gen2 & BIT(4)) && (gd2 & BIT(4))) { + gbit2 |= BIT(4); + if (inargL & BIT(11)) + gv2 |= BIT(4); + else + gv2 &= ~BIT(4); + } + } else if (ch343->chiptype == CHIP_CH9101UH) { + if ((inargH & BIT(0)) && (gen2 & BIT(6)) && (gd2 & BIT(6))) { + gbit2 |= BIT(6); + if (inargL & BIT(0)) + gv2 |= BIT(6); + else + gv2 &= ~BIT(6); + } + if ((inargH & BIT(1)) && (gen2 & BIT(0)) && (gd2 & BIT(0))) { + gbit2 |= BIT(0); + if (inargL & BIT(1)) + gv2 |= BIT(0); + else + gv2 &= ~BIT(0); + } + if ((inargH & BIT(2)) && (gen1 & BIT(2)) && (gd1 & BIT(2))) { + gbit1 |= BIT(2); + if (inargL & BIT(2)) + gv1 |= BIT(2); + else + gv1 &= ~BIT(2); + } + if ((inargH & BIT(3)) && (gen2 & BIT(2)) && (gd2 & BIT(2))) { + gbit2 |= BIT(2); + if (inargL & BIT(3)) + gv2 |= BIT(2); + else + gv2 &= ~BIT(2); + } + if ((inargH & BIT(4)) && (gen1 & BIT(5)) && (gd1 & BIT(5))) { + gbit1 |= BIT(5); + if (inargL & BIT(4)) + gv1 |= BIT(5); + else + gv1 &= ~BIT(5); + } + if ((inargH & BIT(5)) && (gen1 & BIT(4)) && (gd1 & BIT(4))) { + gbit1 |= BIT(4); + if (inargL & BIT(5)) + gv1 |= BIT(4); + else + gv1 &= ~BIT(4); + } + if ((inargH & BIT(6)) && (gen2 & BIT(4)) && (gd2 & BIT(4))) { + gbit2 |= BIT(4); + if (inargL & BIT(6)) + gv2 |= BIT(4); + else + gv2 &= ~BIT(4); + } + + } + + value = gbit1 + ((u16)gv1 << 8); + index = gbit2 + ((u16)gv2 << 8); + rv = ch343_control_out(ch343, CMD_C9, value, index); + if (rv < 0) + goto out; + + value = gd3 + ((u16)gv3 << 8); + index = gen3; + rv = ch343_control_out(ch343, CMD_C8, value, index); + if (rv < 0) + goto out; + + break; + case IOCTL_CMD_GPIOGET: + if (get_user(inarg, argval)) { + rv = -EFAULT; + goto out; + } + + rv = ch343_control_in(ch343, CMD_C10, 0x00, + 0x00, buffer, 0x08); + if (rv < 0) + goto out; + + gd1 = buffer[0]; + gd2 = buffer[1]; + gd3 = buffer[2]; + gv1 = buffer[3]; + gv2 = buffer[4]; + gv3 = buffer[5]; + + if (ch343->chiptype == CHIP_CH9102X) { + if (gv2 & BIT(3)) + gv |= BIT(0); + if (gv2 & BIT(5)) + gv |= BIT(1); + if (gv2 & BIT(1)) + gv |= BIT(2); + if (gv2 & BIT(7)) + gv |= BIT(3); + if (gv3 & BIT(0)) + gv |= BIT(5); + if (gv2 & BIT(2)) + gv |= BIT(6); + } else if (ch343->chiptype == CHIP_CH9102F) { + if (gv2 & BIT(1)) + gv |= BIT(0); + if (gv2 & BIT(7)) + gv |= BIT(1); + if (gv2 & BIT(4)) + gv |= BIT(2); + if (gv2 & BIT(6)) + gv |= BIT(3); + if (gv2 & BIT(3)) + gv |= BIT(4); + } else if (ch343->chiptype == CHIP_CH9103M) { + if (gv1 & BIT(3)) + gv |= BIT(0); + if (gv1 & BIT(2)) + gv |= BIT(1); + if (gv3 & BIT(2)) + gv |= BIT(2); + if (gv2 & BIT(6)) + gv |= BIT(3); + if (gv1 & BIT(0)) + gv |= BIT(4); + if (gv1 & BIT(6)) + gv |= BIT(5); + if (gv2 & BIT(3)) + gv |= BIT(6); + if (gv2 & BIT(5)) + gv |= BIT(7); + if (gv3 & BIT(0)) + gv |= BIT(8); + if (gv2 & BIT(2)) + gv |= BIT(9); + if (gv1 & BIT(5)) + gv |= BIT(10); + if (gv2 & BIT(4)) + gv |= BIT(11); + } else if (ch343->chiptype == CHIP_CH9101UH) { + if (gv2 & BIT(6)) + gv |= BIT(0); + if (gv2 & BIT(0)) + gv |= BIT(1); + if (gv1 & BIT(2)) + gv |= BIT(2); + if (gv2 & BIT(2)) + gv |= BIT(3); + if (gv1 & BIT(5)) + gv |= BIT(4); + if (gv1 & BIT(4)) + gv |= BIT(5); + if (gv2 & BIT(4)) + gv |= BIT(6); + } + + if (put_user(gv, argval)) { + rv = -EFAULT; + goto out; + } + break; + default: + rv = -ENOIOCTLCMD; + break; + } + +out: + kfree(buffer); + return rv; +} + +static int ch343_get(unsigned int bval, + unsigned char *fct, unsigned char *dvs) +{ + unsigned char a; + unsigned char b; + unsigned long c; + + switch (bval) { + case 6000000: + case 4000000: + case 2400000: + case 921600: + case 307200: + case 256000: + b = 7; + c = 12000000; + break; + default: + if (bval > 6000000/255) { + b = 3; + c = 6000000; + } else if (bval > 750000/255) { + b = 2; + c = 750000; + } else if (bval > 93750/255) { + b = 1; + c = 93750; + } else { + b = 0; + c = 11719; + } + break; + } + a = (unsigned char)(c / bval); + if (a == 0 || a == 0xFF) + return -EINVAL; + if ((c / a - bval) > (bval - c / (a + 1))) + a ++; + a = 256 - a; + + *fct = a; + *dvs = b; + + return 0; +} + +static void ch343_tty_set_termios(struct tty_struct *tty, + struct ktermios *termios_old) +{ + struct ch343 *ch343 = tty->driver_data; + struct ktermios *termios = &tty->termios; + struct usb_ch343_line_coding newline; + int newctrl = ch343->ctrlout; + + unsigned char dvs = 0; + unsigned char reg_count = 0; + unsigned char fct = 0; + unsigned char reg_value = 0; + unsigned short value = 0; + unsigned short index = 0; + + dev_dbg(tty->dev, "%s\n", __func__); + + if (termios_old && + !tty_termios_hw_change(&tty->termios, termios_old)) { + return; + } + + newline.dwDTERate = tty_get_baud_rate(tty); + + if (newline.dwDTERate == 0) + newline.dwDTERate = 9600; + ch343_get(newline.dwDTERate, &fct, &dvs); + + newline.bCharFormat = termios->c_cflag & CSTOPB ? 2 : 1; + if (newline.bCharFormat == 2) + reg_value |= CH343_L_SB; + + newline.bParityType = termios->c_cflag & PARENB ? + (termios->c_cflag & PARODD ? 1 : 2) + + (termios->c_cflag & CMSPAR ? 2 : 0) : 0; + + switch (newline.bParityType) { + case 0x01: + reg_value |= CH343_L_P_O; + break; + case 0x02: + reg_value |= CH343_L_P_E; + break; + case 0x03: + reg_value |= CH343_L_P_M; + break; + case 0x04: + reg_value |= CH343_L_P_S; + break; + default: + break; + } + + switch (termios->c_cflag & CSIZE) { + case CS5: + newline.bDataBits = 5; + reg_value |= CH343_L_C5; + break; + case CS6: + newline.bDataBits = 6; + reg_value |= CH343_L_C6; + break; + case CS7: + newline.bDataBits = 7; + reg_value |= CH343_L_C7; + break; + case CS8: + default: + newline.bDataBits = 8; + reg_value |= CH343_L_C8; + break; + } + + /* FIXME: Needs to clear unsupported bits in the termios */ + ch343->clocal = ((termios->c_cflag & CLOCAL) != 0); + + if (C_BAUD(tty) == B0) { + newline.dwDTERate = ch343->line.dwDTERate; + newctrl &= ~CH343_CTO_D; + } else if (termios_old && (termios_old->c_cflag & CBAUD) == B0) { + newctrl |= CH343_CTO_D; + } + + reg_value |= CH343_L_E_R | CH343_L_E_T; + reg_count |= CH343_L_R_CT | CH343_L_R_CL | CH343_L_R_T; + + value |= reg_count; + value |= (unsigned short)reg_value << 8; + + index |= 0x00 | dvs; + index |= (unsigned short)fct << 8; + if (ch343->iface <= 1) + ch343_control_out(ch343, CMD_C1 + ch343->iface, value, index); + else if (ch343->iface <= 3) + ch343_control_out(ch343, CMD_C1 + 0x10 + (ch343->iface - 2), value, index); + + if (memcmp(&ch343->line, &newline, sizeof newline)) { + memcpy(&ch343->line, &newline, sizeof newline); + dev_dbg(&ch343->control->dev, "%s - set line: %d %d %d %d\n", + __func__, + newline.dwDTERate, + newline.bCharFormat, newline.bParityType, + newline.bDataBits); + } + + if (C_CRTSCTS(tty)) { + newctrl |= CH343_CTO_A | CH343_CTO_R; + } else + newctrl &= ~CH343_CTO_A; + + if (newctrl != ch343->ctrlout) + ch343_set_control(ch343, ch343->ctrlout = newctrl); +} + +static const struct tty_port_operations ch343_port_ops = { + .dtr_rts = ch343_port_dtr_rts, + .shutdown = ch343_port_shutdown, + .activate = ch343_port_activate, + .destruct = ch343_port_destruct, +}; + +/* Little helpers: write/read buffers free */ +static void ch343_write_buffers_free(struct ch343 *ch343) +{ + int i; + struct ch343_wb *wb; + struct usb_device *usb_dev = interface_to_usbdev(ch343->control); + + for (wb = &ch343->wb[0], i = 0; i < CH343_NW; i++, wb++) + usb_free_coherent(usb_dev, ch343->writesize, wb->buf, wb->dmah); +} + +static void ch343_read_buffers_free(struct ch343 *ch343) +{ + struct usb_device *usb_dev = interface_to_usbdev(ch343->control); + int i; + + for (i = 0; i < ch343->rx_buflimit; i++) + usb_free_coherent(usb_dev, ch343->readsize, + ch343->read_buffers[i].base, ch343->read_buffers[i].dma); +} + +/* Little helper: write buffers allocate */ +static int ch343_write_buffers_alloc(struct ch343 *ch343) +{ + int i; + struct ch343_wb *wb; + + for (wb = &ch343->wb[0], i = 0; i < CH343_NW; i++, wb++) { + wb->buf = usb_alloc_coherent(ch343->dev, ch343->writesize, GFP_KERNEL, + &wb->dmah); + if (!wb->buf) { + while (i != 0) { + --i; + --wb; + usb_free_coherent(ch343->dev, ch343->writesize, + wb->buf, wb->dmah); + } + return -ENOMEM; + } + } + return 0; +} + +/* + * USB probe and disconnect routines. + */ +static int ch343_probe(struct usb_interface *intf, + const struct usb_device_id *id) +{ + struct usb_cdc_union_desc *union_header = NULL; + unsigned char *buffer = intf->altsetting->extra; + int buflen = intf->altsetting->extralen; + struct usb_interface *control_interface; + struct usb_interface *data_interface; + struct usb_endpoint_descriptor *epctrl = NULL; + struct usb_endpoint_descriptor *epread = NULL; + struct usb_endpoint_descriptor *epwrite = NULL; + struct usb_device *usb_dev = interface_to_usbdev(intf); + struct ch343 *ch343; + int minor; + int ctrlsize, readsize; + u8 *buf; + unsigned long quirks; + int num_rx_buf = CH343_NR; + int i; + unsigned int elength = 0; + struct device *tty_dev; + int rv = -ENOMEM; + + /* normal quirks */ + quirks = (unsigned long)id->driver_info; + if (!buffer) { + dev_err(&intf->dev, "Weird descriptor references\n"); + return -EINVAL; + } + + while (buflen > 0) { + elength = buffer[0]; + if (!elength) { + dev_err(&intf->dev, "skipping garbage byte\n"); + elength = 1; + goto next_desc; + } + if (buffer[1] != USB_DT_CS_INTERFACE) { + dev_err(&intf->dev, "skipping garbage\n"); + goto next_desc; + } + + switch (buffer[2]) { + case USB_CDC_UNION_TYPE: /* we've found it */ + if (elength < sizeof(struct usb_cdc_union_desc)) + goto next_desc; + if (union_header) { + dev_err(&intf->dev, "More than one " + "union descriptor, skipping ...\n"); + goto next_desc; + } + union_header = (struct usb_cdc_union_desc *)buffer; + break; + default: + /* + * there are LOTS more CDC descriptors that + * could legitimately be found here. + */ + break; + } +next_desc: + buflen -= elength; + buffer += elength; + } + + control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); + data_interface = usb_ifnum_to_if(usb_dev, union_header->bSlaveInterface0); + + if (intf != control_interface) + return -ENODEV; + + if (usb_interface_claimed(data_interface)) { + dev_dbg(&intf->dev, "The data interface isn't available\n"); + return -EBUSY; + } + + if (data_interface->cur_altsetting->desc.bNumEndpoints < 2 || + control_interface->cur_altsetting->desc.bNumEndpoints == 0) + return -EINVAL; + + epctrl = &control_interface->cur_altsetting->endpoint[0].desc; + epwrite = &data_interface->cur_altsetting->endpoint[0].desc; + epread = &data_interface->cur_altsetting->endpoint[1].desc; + + /* workaround for switched endpoints */ + if (!usb_endpoint_dir_in(epread)) { + /* descriptors are swapped */ + dev_dbg(&intf->dev, + "The data interface has switched endpoints\n"); + swap(epread, epwrite); + } + + ch343 = kzalloc(sizeof(struct ch343), GFP_KERNEL); + if (ch343 == NULL) + goto alloc_fail; + + ch343->idVendor = id->idVendor; + ch343->idProduct = id->idProduct; + ch343->iface = control_interface->cur_altsetting->desc.bInterfaceNumber / 2; + + dev_dbg(&intf->dev, "interface %d is valid\n", ch343->iface); + + minor = ch343_alloc_minor(ch343); + if (minor < 0) { + dev_err(&intf->dev, "no more free ch343 devices\n"); + kfree(ch343); + return -ENODEV; + } + + ctrlsize = usb_endpoint_maxp(epctrl); + readsize = usb_endpoint_maxp(epread) * + (quirks == SINGLE_RX_URB ? 1 : 2); + ch343->writesize = usb_endpoint_maxp(epwrite) * 20; + ch343->control = control_interface; + ch343->data = data_interface; + ch343->minor = minor; + ch343->dev = usb_dev; + ch343->ctrlsize = ctrlsize; + ch343->readsize = readsize; + ch343->rx_buflimit = num_rx_buf; + + dev_dbg(&intf->dev, "ep%d ctrl: %d, ep%d read: %d, ep%d write: %d\n", + usb_endpoint_num(epctrl), usb_endpoint_maxp(epctrl), + usb_endpoint_num(epread), usb_endpoint_maxp(epread), + usb_endpoint_num(epwrite), usb_endpoint_maxp(epwrite)); + + INIT_WORK(&ch343->work, ch343_softint); + init_waitqueue_head(&ch343->wioctl); + spin_lock_init(&ch343->write_lock); + spin_lock_init(&ch343->read_lock); + mutex_init(&ch343->mutex); + ch343->rx_endpoint = usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress); + tty_port_init(&ch343->port); + ch343->port.ops = &ch343_port_ops; + init_usb_anchor(&ch343->delayed); + ch343->quirks = quirks; + + buf = usb_alloc_coherent(usb_dev, ctrlsize, GFP_KERNEL, &ch343->ctrl_dma); + if (!buf) + goto alloc_fail2; + ch343->ctrl_buffer = buf; + + if (ch343_write_buffers_alloc(ch343) < 0) + goto alloc_fail4; + + ch343->ctrlurb = usb_alloc_urb(0, GFP_KERNEL); + if (!ch343->ctrlurb) + goto alloc_fail5; + + for (i = 0; i < num_rx_buf; i++) { + struct ch343_rb *rb = &(ch343->read_buffers[i]); + struct urb *urb; + + rb->base = usb_alloc_coherent(ch343->dev, readsize, GFP_KERNEL, + &rb->dma); + if (!rb->base) + goto alloc_fail6; + rb->index = i; + rb->instance = ch343; + + urb = usb_alloc_urb(0, GFP_KERNEL); + if (!urb) + goto alloc_fail6; + + urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + urb->transfer_dma = rb->dma; + usb_fill_bulk_urb(urb, ch343->dev, + ch343->rx_endpoint, + rb->base, + ch343->readsize, + ch343_read_bulk_callback, rb); + + ch343->read_urbs[i] = urb; + __set_bit(i, &ch343->read_urbs_free); + } + for (i = 0; i < CH343_NW; i++) { + struct ch343_wb *snd = &(ch343->wb[i]); + + snd->urb = usb_alloc_urb(0, GFP_KERNEL); + if (snd->urb == NULL) + goto alloc_fail7; + + usb_fill_bulk_urb(snd->urb, usb_dev, + usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), + NULL, ch343->writesize, ch343_write_bulk, snd); + snd->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + snd->instance = ch343; + } + + usb_set_intfdata(intf, ch343); + + usb_fill_int_urb(ch343->ctrlurb, usb_dev, + usb_rcvintpipe(usb_dev, epctrl->bEndpointAddress), + ch343->ctrl_buffer, ctrlsize, ch343_ctrl_irq, ch343, + epctrl->bInterval ? epctrl->bInterval : 16); + ch343->ctrlurb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + ch343->ctrlurb->transfer_dma = ch343->ctrl_dma; + + dev_info(&intf->dev, "ttyCH343USB%d: usb to uart device\n", minor); + + usb_driver_claim_interface(&ch343_driver, data_interface, ch343); + usb_set_intfdata(data_interface, ch343); + + usb_get_intf(control_interface); + tty_dev = tty_port_register_device(&ch343->port, ch343_tty_driver, minor, + &control_interface->dev); + if (IS_ERR(tty_dev)) { + rv = PTR_ERR(tty_dev); + goto alloc_fail7; + } + + if (quirks & CLEAR_HALT_CONDITIONS) { + usb_clear_halt(usb_dev, usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress)); + usb_clear_halt(usb_dev, usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress)); + } + + /* deal with urb when usb plugged in */ + rv = usb_submit_urb(ch343->ctrlurb, GFP_KERNEL); + if (rv) { + dev_err(&ch343->control->dev, + "%s - usb_submit_urb(ctrl cmd) failed\n", __func__); + goto error_submit_urb; + } + + rv = ch343_submit_read_urbs(ch343, GFP_KERNEL); + if (rv) + goto error_submit_read_urbs; + + dev_dbg(&intf->dev, "ch343_probe finished!\n"); + + return 0; + +error_submit_read_urbs: + for (i = 0; i < ch343->rx_buflimit; i++) + usb_kill_urb(ch343->read_urbs[i]); +error_submit_urb: + usb_kill_urb(ch343->ctrlurb); +alloc_fail7: + usb_set_intfdata(intf, NULL); + for (i = 0; i < CH343_NW; i++) + usb_free_urb(ch343->wb[i].urb); +alloc_fail6: + for (i = 0; i < num_rx_buf; i++) + usb_free_urb(ch343->read_urbs[i]); + ch343_read_buffers_free(ch343); + usb_free_urb(ch343->ctrlurb); +alloc_fail5: + ch343_write_buffers_free(ch343); +alloc_fail4: + usb_free_coherent(usb_dev, ctrlsize, ch343->ctrl_buffer, ch343->ctrl_dma); +alloc_fail2: + ch343_release_minor(ch343); + kfree(ch343); +alloc_fail: + return rv; +} + +static void stop_data_traffic(struct ch343 *ch343) +{ + int i; + struct urb *urb; + struct ch343_wb *wb; + + dev_dbg(&ch343->control->dev, "%s\n", __func__); + + usb_autopm_get_interface_no_resume(ch343->control); + ch343->control->needs_remote_wakeup = 0; + usb_autopm_put_interface(ch343->control); + + for (;;) { + urb = usb_get_from_anchor(&ch343->delayed); + if (!urb) + break; + wb = urb->context; + wb->use = 0; + usb_autopm_put_interface_async(ch343->control); + } + + usb_kill_urb(ch343->ctrlurb); + for (i = 0; i < CH343_NW; i++) + usb_kill_urb(ch343->wb[i].urb); + for (i = 0; i < ch343->rx_buflimit; i++) + usb_kill_urb(ch343->read_urbs[i]); + cancel_work_sync(&ch343->work); +} + +static void ch343_disconnect(struct usb_interface *intf) +{ + struct ch343 *ch343 = usb_get_intfdata(intf); + struct usb_device *usb_dev = interface_to_usbdev(intf); + struct tty_struct *tty; + int i; + + dev_dbg(&intf->dev, "%s\n", __func__); + + /* sibling interface is already cleaning up */ + if (!ch343) + return; + + mutex_lock(&ch343->mutex); + ch343->disconnected = true; + wake_up_all(&ch343->wioctl); + usb_set_intfdata(ch343->control, NULL); + usb_set_intfdata(ch343->data, NULL); + mutex_unlock(&ch343->mutex); + + tty = tty_port_tty_get(&ch343->port); + if (tty) { + tty_vhangup(tty); + tty_kref_put(tty); + } + + stop_data_traffic(ch343); + + tty_unregister_device(ch343_tty_driver, ch343->minor); + + usb_free_urb(ch343->ctrlurb); + for (i = 0; i < CH343_NW; i++) + usb_free_urb(ch343->wb[i].urb); + for (i = 0; i < ch343->rx_buflimit; i++) + usb_free_urb(ch343->read_urbs[i]); + ch343_write_buffers_free(ch343); + usb_free_coherent(usb_dev, ch343->ctrlsize, ch343->ctrl_buffer, ch343->ctrl_dma); + ch343_read_buffers_free(ch343); + + usb_driver_release_interface(&ch343_driver, intf == ch343->control ? + ch343->data : ch343->control); + + tty_port_put(&ch343->port); + dev_info(&intf->dev, "%s\n", "ch343 usb device disconnect."); +} + +#ifdef CONFIG_PM +static int ch343_suspend(struct usb_interface *intf, pm_message_t message) +{ + struct ch343 *ch343 = usb_get_intfdata(intf); + int cnt; + + dev_dbg(&intf->dev, "%s\n", __func__); + spin_lock_irq(&ch343->write_lock); + if (PMSG_IS_AUTO(message)) { + if (ch343->transmitting) { + spin_unlock_irq(&ch343->write_lock); + return -EBUSY; + } + } + cnt = ch343->susp_count++; + spin_unlock_irq(&ch343->write_lock); + + if (cnt) + return 0; + + stop_data_traffic(ch343); + + return 0; +} + +static int ch343_resume(struct usb_interface *intf) +{ + struct ch343 *ch343 = usb_get_intfdata(intf); + struct urb *urb; + int rv = 0; + + dev_dbg(&intf->dev, "%s\n", __func__); + spin_lock_irq(&ch343->write_lock); + + if (--ch343->susp_count) + goto out; + + if (test_bit(ASYNCB_INITIALIZED, &ch343->port.flags)) { + rv = usb_submit_urb(ch343->ctrlurb, GFP_ATOMIC); + + for (;;) { + urb = usb_get_from_anchor(&ch343->delayed); + if (!urb) + break; + + ch343_start_wb(ch343, urb->context); + } + + /* + * delayed error checking because we must + * do the write path at all cost + */ + if (rv < 0) + goto out; + + rv = ch343_submit_read_urbs(ch343, GFP_ATOMIC); + } +out: + spin_unlock_irq(&ch343->write_lock); + + return rv; +} + +static int ch343_reset_resume(struct usb_interface *intf) +{ + struct ch343 *ch343 = usb_get_intfdata(intf); + + dev_dbg(&intf->dev, "%s\n", __func__); + if (test_bit(ASYNCB_INITIALIZED, &ch343->port.flags)) + tty_port_tty_hangup(&ch343->port, false); + + return ch343_resume(intf); +} + +#endif /* CONFIG_PM */ + +/* + * USB driver structure. + */ + +static const struct usb_device_id ch343_ids[] = { + { USB_DEVICE_INTERFACE_PROTOCOL(0x1a86, 0x55D2, /* ch342 chip */ + USB_CDC_ACM_PROTO_AT_V25TER) }, + + { USB_DEVICE_INTERFACE_PROTOCOL(0x1a86, 0x55D3, /* ch343 chip */ + USB_CDC_ACM_PROTO_AT_V25TER) }, + + { USB_DEVICE_INTERFACE_PROTOCOL(0x1a86, 0x55D5, /* ch344 chip */ + USB_CDC_ACM_PROTO_AT_V25TER) }, + + { USB_DEVICE_INTERFACE_PROTOCOL(0x1a86, 0x55D8, /* ch9101 chip */ + USB_CDC_ACM_PROTO_AT_V25TER) }, + + { USB_DEVICE_INTERFACE_PROTOCOL(0x1a86, 0x55D4, /* ch9102 chip */ + USB_CDC_ACM_PROTO_AT_V25TER) }, + + { USB_DEVICE_INTERFACE_PROTOCOL(0x1a86, 0x55D7, /* ch9103 chip */ + USB_CDC_ACM_PROTO_AT_V25TER) }, + + { } +}; + +MODULE_DEVICE_TABLE(usb, ch343_ids); + +static struct usb_driver ch343_driver = { + .name = "usb_ch343", + .probe = ch343_probe, + .disconnect = ch343_disconnect, +#ifdef CONFIG_PM + .suspend = ch343_suspend, + .resume = ch343_resume, + .reset_resume = ch343_reset_resume, +#endif + .id_table = ch343_ids, +#ifdef CONFIG_PM + .supports_autosuspend = 1, +#endif + .disable_hub_initiated_lpm = 1, +}; + +/* + * TTY driver structures. + */ +static const struct tty_operations ch343_ops = { + .install = ch343_tty_install, + .open = ch343_tty_open, + .close = ch343_tty_close, + .cleanup = ch343_tty_cleanup, + .hangup = ch343_tty_hangup, + .write = ch343_tty_write, + .write_room = ch343_tty_write_room, + .ioctl = ch343_tty_ioctl, + .chars_in_buffer = ch343_tty_chars_in_buffer, + .break_ctl = ch343_tty_break_ctl, + .set_termios = ch343_tty_set_termios, + .tiocmget = ch343_tty_tiocmget, + .tiocmset = ch343_tty_tiocmset, +}; + +/* + * Init / exit. + */ +static int __init ch343_init(void) +{ + int retval; + ch343_tty_driver = alloc_tty_driver(CH343_TTY_MINORS); + if (!ch343_tty_driver) + return -ENOMEM; + ch343_tty_driver->driver_name = "usbch343", + ch343_tty_driver->name = "ttyCH343USB", + ch343_tty_driver->major = CH343_TTY_MAJOR, + ch343_tty_driver->minor_start = 0, + ch343_tty_driver->type = TTY_DRIVER_TYPE_SERIAL, + ch343_tty_driver->subtype = SERIAL_TYPE_NORMAL, + ch343_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; + ch343_tty_driver->init_termios = tty_std_termios; + ch343_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | + HUPCL | CLOCAL; + tty_set_operations(ch343_tty_driver, &ch343_ops); + + retval = tty_register_driver(ch343_tty_driver); + if (retval) { + put_tty_driver(ch343_tty_driver); + return retval; + } + + retval = usb_register(&ch343_driver); + if (retval) { + tty_unregister_driver(ch343_tty_driver); + put_tty_driver(ch343_tty_driver); + return retval; + } + + printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n"); + printk(KERN_INFO KBUILD_MODNAME ": " VERSION_DESC "\n"); + + return 0; +} + +static void __exit ch343_exit(void) +{ + usb_deregister(&ch343_driver); + tty_unregister_driver(ch343_tty_driver); + put_tty_driver(ch343_tty_driver); + idr_destroy(&ch343_minors); + printk(KERN_INFO KBUILD_MODNAME ": " "ch343 driver exit.\n"); +} + +module_init(ch343_init); +module_exit(ch343_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_LICENSE("GPL"); +MODULE_ALIAS_CHARDEV_MAJOR(CH343_TTY_MAJOR); diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/ch343.h b/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/ch343.h new file mode 100644 index 0000000000000000000000000000000000000000..b0fca3eccfbad0676d42c18d4f65d79b9a7f7e84 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss928/files/ch343/ch343.h @@ -0,0 +1,216 @@ +#ifndef _CH343_H +#define _CH343_H + +/* + * Baud rate and default timeout + */ +#define DEFAULT_BAUD_RATE 9600 +#define DEFAULT_TIMEOUT 2000 + +/* Internal flags used only by kernel */ +#define ASYNCB_INITIALIZED 31 /* Serial port was initialized */ +#define ASYNCB_SUSPENDED 30 /* Serial port is suspended */ +#define ASYNCB_NORMAL_ACTIVE 29 /* Normal device is active */ +#define ASYNCB_BOOT_AUTOCONF 28 /* Autoconfigure port on bootup */ +#define ASYNCB_CLOSING 27 /* Serial port is closing */ +#define ASYNCB_CTS_FLOW 26 /* Do CTS flow control */ +#define ASYNCB_CHECK_CD 25 /* i.e., CLOCAL */ +#define ASYNCB_SHARE_IRQ 24 /* for multifunction cards, no longer used */ +#define ASYNCB_CONS_FLOW 23 /* flow control for console */ +#define ASYNCB_BOOT_ONLYMCA 22 /* Probe only if MCA bus */ +#define ASYNCB_FIRST_KERNEL 22 + +/* + * CMSPAR, some architectures can't have space and mark parity. + */ + +#ifndef CMSPAR +#define CMSPAR 0 +#endif + +/* + * Major and minor numbers. + */ + +#define CH343_TTY_MAJOR 170 +#define CH343_TTY_MINORS 256 + +/* + * Requests. + */ + +#define USB_RT_CH343 (USB_TYPE_CLASS | USB_RECIP_INTERFACE) + +#define CMD_R 0x95 +#define CMD_W 0x9A +#define CMD_C1 0xA1 +#define CMD_C2 0xA4 +#define CMD_C3 0x05 +#define CMD_C4 0xA8 +#define CMD_C5 0x5E +#define CMD_C6 0x5F +#define CMD_C7 0xAA +#define CMD_C8 0xAC +#define CMD_C9 0xAB +#define CMD_C10 0xA9 +#define CMD_C11 0xAD + + +#define CH343_CTO_O 0x10 +#define CH343_CTO_D 0x20 +#define CH343_CTO_R 0x40 +#define CH343_CTO_A 0x80 +#define CH343_CTI_C 0x01 +#define CH343_CTI_DS 0x02 +#define CH343_CTI_R 0x04 +#define CH343_CTI_DC 0x08 +#define CH343_CTI_ST 0x0f + +#define CH343_CTT_M 0x08 +#define CH343_CTT_F 0x44 +#define CH343_CTT_P 0x04 +#define CH343_CTT_O 0x02 + +#define CH343_LO 0x02 +#define CH343_LE 0x04 +#define CH343_LB +#define CH343_LP 0x00 +#define CH343_LF 0x40 +#define CH343_LM 0x08 + +#define CH343_L_R_CT 0x80 +#define CH343_L_R_CL 0x04 +#define CH343_L_R_T 0x08 + +#define CH343_L_E_R 0x80 +#define CH343_L_E_T 0x40 +#define CH343_L_P_S 0x38 +#define CH343_L_P_M 0x28 +#define CH343_L_P_E 0x18 +#define CH343_L_P_O 0x08 +#define CH343_L_SB 0x04 +#define CH343_L_C8 0x03 +#define CH343_L_C7 0x02 +#define CH343_L_C6 0x01 +#define CH343_L_C5 0x00 + +#define CH343_N_B 0x80 +#define CH343_N_AB 0x10 + +/* + * Internal driver structures. + */ + +/* + * The only reason to have several buffers is to accommodate assumptions + * in line disciplines. They ask for empty space amount, receive our URB size, + * and proceed to issue several 1-character writes, assuming they will fit. + * The very first write takes a complete URB. Fortunately, this only happens + * when processing onlcr, so we only need 2 buffers. These values must be + * powers of 2. + */ +#define CH343_NW 16 +#define CH343_NR 16 + +struct ch343_wb { + unsigned char *buf; + dma_addr_t dmah; + int len; + int use; + struct urb *urb; + struct ch343 *instance; +}; + +struct ch343_rb { + int size; + unsigned char *base; + dma_addr_t dma; + int index; + struct ch343 *instance; +}; + +struct usb_ch343_line_coding { + __u32 dwDTERate; + __u8 bCharFormat; +#define USB_CH343_1_STOP_BITS 0 +#define USB_CH343_1_5_STOP_BITS 1 +#define USB_CH343_2_STOP_BITS 2 + + __u8 bParityType; +#define USB_CH343_NO_PARITY 0 +#define USB_CH343_ODD_PARITY 1 +#define USB_CH343_EVEN_PARITY 2 +#define USB_CH343_MARK_PARITY 3 +#define USB_CH343_SPACE_PARITY 4 + + __u8 bDataBits; +} __attribute__ ((packed)); + +typedef enum { + CHIP_CH342F = 0x00, + CHIP_CH342GJK, + CHIP_CH343GP, + CHIP_CH343G_AUTOBAUD, + CHIP_CH343K, + CHIP_CH343J, + CHIP_CH344L, + CHIP_CH9101UH, + CHIP_CH9102F, + CHIP_CH9102X, + CHIP_CH9103M, +} CHIPTYPE; + +struct ch343 { + struct usb_device *dev; /* the corresponding usb device */ + struct usb_interface *control; /* control interface */ + struct usb_interface *data; /* data interface */ + struct tty_port port; /* our tty port data */ + struct urb *ctrlurb; /* urbs */ + u8 *ctrl_buffer; /* buffers of urbs */ + dma_addr_t ctrl_dma; /* dma handles of buffers */ + struct ch343_wb wb[CH343_NW]; + unsigned long read_urbs_free; + struct urb *read_urbs[CH343_NR]; + struct ch343_rb read_buffers[CH343_NR]; + int rx_buflimit; + int rx_endpoint; + spinlock_t read_lock; + int write_used; /* number of non-empty write buffers */ + int transmitting; + spinlock_t write_lock; + struct mutex mutex; + bool disconnected; + struct usb_ch343_line_coding line; /* bits, stop, parity */ + struct work_struct work; /* work queue entry for line discipline waking up */ + unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ + unsigned int ctrlout; /* output control lines (DTR, RTS) */ + struct async_icount iocount; /* counters for control line changes */ + struct async_icount oldcount; /* for comparison of counter */ + wait_queue_head_t wioctl; /* for ioctl */ + unsigned int writesize; /* max packet size for the output bulk endpoint */ + unsigned int readsize,ctrlsize; /* buffer sizes for freeing */ + unsigned int minor; /* ch343 minor number */ + unsigned char clocal; /* termios CLOCAL */ + unsigned int susp_count; /* number of suspended interfaces */ + u8 bInterval; + struct usb_anchor delayed; /* writes queued for a device about to be woken */ + unsigned long quirks; + u8 iface; + CHIPTYPE chiptype; + u16 idVendor; + u16 idProduct; + u8 gpio5dir; +}; + +#define CDC_DATA_INTERFACE_TYPE 0x0a + +/* constants describing various quirks and errors */ +#define NO_UNION_NORMAL BIT(0) +#define SINGLE_RX_URB BIT(1) +#define NO_CAP_LINE BIT(2) +#define NO_DATA_INTERFACE BIT(4) +#define IGNORE_DEVICE BIT(5) +#define QUIRK_CONTROL_LINE_STATE BIT(6) +#define CLEAR_HALT_CONDITIONS BIT(7) + +#endif diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/files/hieulerpi1-bsp.service b/bsp/meta-hisilicon/recipes-bsp/ss928/files/hieulerpi1-bsp.service new file mode 100644 index 0000000000000000000000000000000000000000..82f1a634e8502ecdd734a490727947330e2dba35 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-bsp/ss928/files/hieulerpi1-bsp.service @@ -0,0 +1,13 @@ +[Unit] +Description=Init Hieuler1 BSP Drivers/Modules +After=systemd-modules-load.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/etc/init.d/S90AutoRun +ExecStart=/etc/init.d/pinmux.sh +TimeoutSec=90s + +[Install] +WantedBy=multi-user.target diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/files/rohm_400M.sh b/bsp/meta-hisilicon/recipes-bsp/ss928/files/rohm_400M.sh deleted file mode 100644 index 62fda4f8b2a2b47c73e6d677cfe288f219dfaf1b..0000000000000000000000000000000000000000 --- a/bsp/meta-hisilicon/recipes-bsp/ss928/files/rohm_400M.sh +++ /dev/null @@ -1,536 +0,0 @@ -#!/bin/sh -# init SOC mipi rx -pre_vo - -# ROHM RM84 TM41 512M config -i2c_write 4 0xd0 0x0007 0x00 1 1 -i2c_write 4 0xd0 0x000E 0x80 1 1 -usleep 5000 -i2c_write 4 0xd0 0x0005 0x03 1 1 -i2c_write 4 0xd0 0x000F 0x01 1 1 -i2c_write 4 0xd0 0x0010 0x00 1 1 -i2c_write 4 0xd0 0x0011 0x00 1 1 -i2c_write 4 0xd0 0x0012 0x00 1 1 -i2c_write 4 0xd0 0x0013 0x00 1 1 - -i2c_write 4 0xd0 0x0007 0x04 1 1 -i2c_write 4 0xd0 0x040F 0x01 1 1 -i2c_write 4 0xd0 0x0410 0x50 1 1 -i2c_write 4 0xd0 0x0411 0xB6 1 1 -i2c_write 4 0xd0 0x0412 0x00 1 1 -i2c_write 4 0xd0 0x0413 0x00 1 1 -i2c_write 4 0xd0 0x0414 0xD0 1 1 -i2c_write 4 0xd0 0x0415 0xA0 1 1 -i2c_write 4 0xd0 0x0416 0x00 1 1 -i2c_write 4 0xd0 0x0417 0x00 1 1 -i2c_write 4 0xd0 0x0420 0x20 1 1 -i2c_write 4 0xd0 0x0422 0x22 1 1 -i2c_write 4 0xd0 0x0424 0x07 1 1 -i2c_write 4 0xd0 0x0426 0x00 1 1 -i2c_write 4 0xd0 0x0427 0x01 1 1 -i2c_write 4 0xd0 0x0428 0x02 1 1 -i2c_write 4 0xd0 0x0429 0x03 1 1 -i2c_write 4 0xd0 0x042A 0x04 1 1 -i2c_write 4 0xd0 0x0430 0x20 1 1 -i2c_write 4 0xd0 0x0431 0x80 1 1 -i2c_write 4 0xd0 0x0436 0x05 1 1 -i2c_write 4 0xd0 0x043A 0x84 1 1 -i2c_write 4 0xd0 0x043B 0x00 1 1 -i2c_write 4 0xd0 0x043C 0x3A 1 1 -i2c_write 4 0xd0 0x043D 0x08 1 1 - -i2c_write 4 0xd0 0x0007 0x05 1 1 -i2c_write 4 0xd0 0x050F 0x01 1 1 -i2c_write 4 0xd0 0x0510 0x50 1 1 -i2c_write 4 0xd0 0x0511 0xB6 1 1 -i2c_write 4 0xd0 0x0512 0x00 1 1 -i2c_write 4 0xd0 0x0513 0x00 1 1 -i2c_write 4 0xd0 0x0514 0xD1 1 1 -i2c_write 4 0xd0 0x0515 0xA1 1 1 -i2c_write 4 0xd0 0x0516 0x00 1 1 -i2c_write 4 0xd0 0x0517 0x00 1 1 -i2c_write 4 0xd0 0x0520 0x20 1 1 -i2c_write 4 0xd0 0x0522 0x22 1 1 -i2c_write 4 0xd0 0x0524 0x07 1 1 -i2c_write 4 0xd0 0x0526 0x00 1 1 -i2c_write 4 0xd0 0x0527 0x01 1 1 -i2c_write 4 0xd0 0x0528 0x02 1 1 -i2c_write 4 0xd0 0x0529 0x03 1 1 -i2c_write 4 0xd0 0x052A 0x04 1 1 -i2c_write 4 0xd0 0x0530 0x20 1 1 -i2c_write 4 0xd0 0x0531 0x80 1 1 -i2c_write 4 0xd0 0x0536 0x05 1 1 -i2c_write 4 0xd0 0x053A 0x84 1 1 -i2c_write 4 0xd0 0x053B 0x00 1 1 -i2c_write 4 0xd0 0x053C 0x3A 1 1 -i2c_write 4 0xd0 0x053D 0x08 1 1 - -i2c_write 4 0xd0 0x0007 0x06 1 1 -i2c_write 4 0xd0 0x060F 0x01 1 1 -i2c_write 4 0xd0 0x0610 0x50 1 1 -i2c_write 4 0xd0 0x0611 0xB6 1 1 -i2c_write 4 0xd0 0x0612 0x00 1 1 -i2c_write 4 0xd0 0x0613 0x00 1 1 -i2c_write 4 0xd0 0x0614 0xD2 1 1 -i2c_write 4 0xd0 0x0615 0xA2 1 1 -i2c_write 4 0xd0 0x0616 0x00 1 1 -i2c_write 4 0xd0 0x0617 0x00 1 1 -i2c_write 4 0xd0 0x0620 0x20 1 1 -i2c_write 4 0xd0 0x0622 0x22 1 1 -i2c_write 4 0xd0 0x0624 0x07 1 1 -i2c_write 4 0xd0 0x0626 0x00 1 1 -i2c_write 4 0xd0 0x0627 0x01 1 1 -i2c_write 4 0xd0 0x0628 0x02 1 1 -i2c_write 4 0xd0 0x0629 0x03 1 1 -i2c_write 4 0xd0 0x062A 0x04 1 1 -i2c_write 4 0xd0 0x0630 0x20 1 1 -i2c_write 4 0xd0 0x0631 0x80 1 1 -i2c_write 4 0xd0 0x0636 0x06 1 1 -i2c_write 4 0xd0 0x063A 0x84 1 1 -i2c_write 4 0xd0 0x063B 0x00 1 1 -i2c_write 4 0xd0 0x063C 0x3A 1 1 -i2c_write 4 0xd0 0x063D 0x08 1 1 - -i2c_write 4 0xd0 0x0007 0x07 1 1 -i2c_write 4 0xd0 0x070F 0x01 1 1 -i2c_write 4 0xd0 0x0710 0x50 1 1 -i2c_write 4 0xd0 0x0711 0xB6 1 1 -i2c_write 4 0xd0 0x0712 0x00 1 1 -i2c_write 4 0xd0 0x0713 0x00 1 1 -i2c_write 4 0xd0 0x0714 0xD3 1 1 -i2c_write 4 0xd0 0x0715 0xA3 1 1 -i2c_write 4 0xd0 0x0716 0x00 1 1 -i2c_write 4 0xd0 0x0717 0x00 1 1 -i2c_write 4 0xd0 0x0720 0x20 1 1 -i2c_write 4 0xd0 0x0722 0x22 1 1 -i2c_write 4 0xd0 0x0724 0x07 1 1 -i2c_write 4 0xd0 0x0726 0x00 1 1 -i2c_write 4 0xd0 0x0727 0x01 1 1 -i2c_write 4 0xd0 0x0728 0x02 1 1 -i2c_write 4 0xd0 0x0729 0x03 1 1 -i2c_write 4 0xd0 0x072A 0x04 1 1 -i2c_write 4 0xd0 0x0730 0x20 1 1 -i2c_write 4 0xd0 0x0731 0x80 1 1 -i2c_write 4 0xd0 0x0736 0x06 1 1 -i2c_write 4 0xd0 0x073A 0x84 1 1 -i2c_write 4 0xd0 0x073B 0x00 1 1 -i2c_write 4 0xd0 0x073C 0x3A 1 1 -i2c_write 4 0xd0 0x073D 0x08 1 1 - -i2c_write 4 0xd0 0x0007 0x00 1 1 -i2c_write 4 0xd0 0x0018 0x3A 1 1 -i2c_write 4 0xd0 0x0019 0xF0 1 1 -i2c_write 4 0xd0 0x001A 0x00 1 1 -i2c_write 4 0xd0 0x0020 0x38 1 1 -i2c_write 4 0xd0 0x0021 0x32 1 1 -i2c_write 4 0xd0 0x0022 0x38 1 1 -i2c_write 4 0xd0 0x0077 0x00 1 1 -i2c_write 4 0xd0 0x0078 0x00 1 1 -i2c_write 4 0xd0 0x0079 0x00 1 1 -i2c_write 4 0xd0 0x007A 0x00 1 1 -i2c_write 4 0xd0 0x007B 0x00 1 1 -i2c_write 4 0xd0 0x007C 0x00 1 1 -i2c_write 4 0xd0 0x007D 0x00 1 1 -i2c_write 4 0xd0 0x0081 0x06 1 1 - -i2c_write 4 0xd0 0x0007 0x02 1 1 -i2c_write 4 0xd0 0x020F 0x01 1 1 -i2c_write 4 0xd0 0x0214 0x31 1 1 -i2c_write 4 0xd0 0x022E 0x10 1 1 -i2c_write 4 0xd0 0x022F 0x32 1 1 -i2c_write 4 0xd0 0x0236 0x02 1 1 -i2c_write 4 0xd0 0x023F 0x0B 1 1 - - -i2c_write 4 0xd0 0x0007 0x03 1 1 -i2c_write 4 0xd0 0x030F 0x01 1 1 -i2c_write 4 0xd0 0x0314 0xC1 1 1 -i2c_write 4 0xd0 0x032E 0x10 1 1 -i2c_write 4 0xd0 0x032F 0x10 1 1 -i2c_write 4 0xd0 0x0336 0x02 1 1 -i2c_write 4 0xd0 0x033F 0x0B 1 1 - -i2c_write 4 0xa0 0x0005 0x80 1 1 -usleep 5000 -i2c_write 4 0xa0 0x0004 0xA5 1 1 -i2c_write 4 0xa0 0x0020 0x20 1 1 -i2c_write 4 0xa0 0x0010 0x19 1 1 -i2c_write 4 0xa0 0x0015 0x03 1 1 -i2c_write 4 0xa0 0x0016 0x0C 1 1 -i2c_write 4 0xa0 0x0030 0x01 1 1 -i2c_write 4 0xa0 0x0056 0xC8 1 1 -i2c_write 4 0xa0 0x0057 0x03 1 1 -i2c_write 4 0xa0 0x0059 0x00 1 1 -i2c_write 4 0xa0 0x005A 0x06 1 1 -i2c_write 4 0xa0 0x0074 0x00 1 1 -i2c_write 4 0xa0 0x0075 0x00 1 1 -i2c_write 4 0xa0 0x0076 0x00 1 1 -i2c_write 4 0xa0 0x0077 0x00 1 1 -i2c_write 4 0xa0 0x0078 0x00 1 1 -i2c_write 4 0xa0 0x0079 0x00 1 1 -i2c_write 4 0xa0 0x007A 0x00 1 1 -i2c_write 4 0xa0 0x00A0 0x07 1 1 -i2c_write 4 0xa0 0x00A1 0x00 1 1 -i2c_write 4 0xa0 0x0060 0x55 1 1 -i2c_write 4 0xa0 0x0061 0x55 1 1 -i2c_write 4 0xa0 0x0062 0x85 1 1 -i2c_write 4 0xa0 0x0063 0x82 1 1 -usleep 5000 -i2c_write 4 0xa0 0x0063 0x02 1 1 -i2c_write 4 0xa0 0x0026 0x85 1 1 -usleep 5000 -i2c_write 4 0xa0 0x002A 0x11 1 1 -usleep 5000 - -i2c_write 4 0xa2 0x0005 0x80 1 1 -usleep 5000 -i2c_write 4 0xa2 0x0004 0xA5 1 1 -i2c_write 4 0xa2 0x0020 0x20 1 1 -i2c_write 4 0xa2 0x0010 0x19 1 1 -i2c_write 4 0xa2 0x0015 0x03 1 1 -i2c_write 4 0xa2 0x0016 0x0C 1 1 -i2c_write 4 0xa2 0x0030 0x01 1 1 -i2c_write 4 0xa2 0x0056 0xC8 1 1 -i2c_write 4 0xa2 0x0057 0x03 1 1 -i2c_write 4 0xa2 0x0059 0x00 1 1 -i2c_write 4 0xa2 0x005A 0x06 1 1 -i2c_write 4 0xa2 0x0074 0x00 1 1 -i2c_write 4 0xa2 0x0075 0x00 1 1 -i2c_write 4 0xa2 0x0076 0x00 1 1 -i2c_write 4 0xa2 0x0077 0x00 1 1 -i2c_write 4 0xa2 0x0078 0x00 1 1 -i2c_write 4 0xa2 0x0079 0x00 1 1 -i2c_write 4 0xa2 0x007A 0x00 1 1 -i2c_write 4 0xa2 0x00A0 0x07 1 1 -i2c_write 4 0xa2 0x00A1 0x00 1 1 -i2c_write 4 0xa2 0x0060 0x55 1 1 -i2c_write 4 0xa2 0x0061 0x55 1 1 -i2c_write 4 0xa2 0x0062 0x85 1 1 -i2c_write 4 0xa2 0x0063 0x82 1 1 -usleep 5000 -i2c_write 4 0xa2 0x0063 0x02 1 1 -i2c_write 4 0xa2 0x0026 0x85 1 1 -usleep 5000 -i2c_write 4 0xa2 0x002A 0x11 1 1 -usleep 5000 - -i2c_write 4 0xa4 0x0005 0x80 1 1 -usleep 5000 -i2c_write 4 0xa4 0x0004 0xA5 1 1 -i2c_write 4 0xa4 0x0020 0x20 1 1 -i2c_write 4 0xa4 0x0010 0x19 1 1 -i2c_write 4 0xa4 0x0015 0x03 1 1 -i2c_write 4 0xa4 0x0016 0x0C 1 1 -i2c_write 4 0xa4 0x0030 0x01 1 1 -i2c_write 4 0xa4 0x0056 0xC8 1 1 -i2c_write 4 0xa4 0x0057 0x03 1 1 -i2c_write 4 0xa4 0x0059 0x00 1 1 -i2c_write 4 0xa4 0x005A 0x06 1 1 -i2c_write 4 0xa4 0x0074 0x00 1 1 -i2c_write 4 0xa4 0x0075 0x00 1 1 -i2c_write 4 0xa4 0x0076 0x00 1 1 -i2c_write 4 0xa4 0x0077 0x00 1 1 -i2c_write 4 0xa4 0x0078 0x00 1 1 -i2c_write 4 0xa4 0x0079 0x00 1 1 -i2c_write 4 0xa4 0x007A 0x00 1 1 -i2c_write 4 0xa4 0x00A0 0x07 1 1 -i2c_write 4 0xa4 0x00A1 0x00 1 1 -i2c_write 4 0xa4 0x0060 0x55 1 1 -i2c_write 4 0xa4 0x0061 0x55 1 1 -i2c_write 4 0xa4 0x0062 0x85 1 1 -i2c_write 4 0xa4 0x0063 0x82 1 1 -usleep 5000 -i2c_write 4 0xa4 0x0063 0x02 1 1 -i2c_write 4 0xa4 0x0026 0x85 1 1 -usleep 5000 -i2c_write 4 0xa4 0x002A 0x11 1 1 -usleep 5000 - -i2c_write 4 0xa6 0x0005 0x80 1 1 -usleep 5000 -i2c_write 4 0xa6 0x0004 0xA5 1 1 -i2c_write 4 0xa6 0x0020 0x20 1 1 -i2c_write 4 0xa6 0x0010 0x19 1 1 -i2c_write 4 0xa6 0x0015 0x03 1 1 -i2c_write 4 0xa6 0x0016 0x0C 1 1 -i2c_write 4 0xa6 0x0030 0x01 1 1 -i2c_write 4 0xa6 0x0056 0xC8 1 1 -i2c_write 4 0xa6 0x0057 0x03 1 1 -i2c_write 4 0xa6 0x0059 0x00 1 1 -i2c_write 4 0xa6 0x005A 0x06 1 1 -i2c_write 4 0xa6 0x0074 0x00 1 1 -i2c_write 4 0xa6 0x0075 0x00 1 1 -i2c_write 4 0xa6 0x0076 0x00 1 1 -i2c_write 4 0xa6 0x0077 0x00 1 1 -i2c_write 4 0xa6 0x0078 0x00 1 1 -i2c_write 4 0xa6 0x0079 0x00 1 1 -i2c_write 4 0xa6 0x007A 0x00 1 1 -i2c_write 4 0xa6 0x00A0 0x07 1 1 -i2c_write 4 0xa6 0x00A1 0x00 1 1 -i2c_write 4 0xa6 0x0060 0x55 1 1 -i2c_write 4 0xa6 0x0061 0x55 1 1 -i2c_write 4 0xa6 0x0062 0x85 1 1 -i2c_write 4 0xa6 0x0063 0x82 1 1 -usleep 5000 -i2c_write 4 0xa6 0x0063 0x02 1 1 -i2c_write 4 0xa6 0x0026 0x85 1 1 -usleep 5000 -i2c_write 4 0xa6 0x002A 0x11 1 1 -usleep 5000 - -i2c_write 4 0xd0 0x0007 0x04 1 1 -i2c_write 4 0xd0 0x0425 0xFF 1 1 -i2c_write 4 0xd0 0x0423 0x0C 1 1 -i2c_write 4 0xd0 0x0418 0x01 1 1 -i2c_write 4 0xd0 0x0007 0x05 1 1 -i2c_write 4 0xd0 0x0525 0xFF 1 1 -i2c_write 4 0xd0 0x0523 0x0C 1 1 -i2c_write 4 0xd0 0x0518 0x01 1 1 -i2c_write 4 0xd0 0x0007 0x06 1 1 -i2c_write 4 0xd0 0x0625 0xFF 1 1 -i2c_write 4 0xd0 0x0623 0x0C 1 1 -i2c_write 4 0xd0 0x0618 0x01 1 1 -i2c_write 4 0xd0 0x0007 0x07 1 1 -i2c_write 4 0xd0 0x0725 0xFF 1 1 -i2c_write 4 0xd0 0x0723 0x0C 1 1 -i2c_write 4 0xd0 0x0718 0x01 1 1 - -i2c_write 4 0xa0 0x002E 0x94 1 1 -i2c_write 4 0xa0 0x002F 0x02 1 1 -i2c_write 4 0xa0 0x0031 0xE3 1 1 -i2c_write 4 0xa0 0x0032 0xD5 1 1 -i2c_write 4 0xa0 0x0034 0xCF 1 1 -i2c_write 4 0xa0 0x0035 0xC1 1 1 -i2c_write 4 0xa0 0x0037 0xC2 1 1 -i2c_write 4 0xa0 0x0038 0xB4 1 1 -i2c_write 4 0xa0 0x003A 0xD4 1 1 -i2c_write 4 0xa0 0x003B 0xC6 1 1 -i2c_write 4 0xa0 0x003D 0xC2 1 1 -i2c_write 4 0xa0 0x003E 0xB4 1 1 -i2c_write 4 0xa0 0x0030 0x1F 1 1 -i2c_write 4 0xa2 0x002E 0x94 1 1 -i2c_write 4 0xa2 0x002F 0x02 1 1 -i2c_write 4 0xa2 0x0031 0xE3 1 1 -i2c_write 4 0xa2 0x0032 0xD5 1 1 -i2c_write 4 0xa2 0x0034 0xCF 1 1 -i2c_write 4 0xa2 0x0035 0xC1 1 1 -i2c_write 4 0xa2 0x0037 0xC2 1 1 -i2c_write 4 0xa2 0x0038 0xB4 1 1 -i2c_write 4 0xa2 0x003A 0xD4 1 1 -i2c_write 4 0xa2 0x003B 0xC6 1 1 -i2c_write 4 0xa2 0x003D 0xC2 1 1 -i2c_write 4 0xa2 0x003E 0xB4 1 1 -i2c_write 4 0xa2 0x0030 0x1F 1 1 -i2c_write 4 0xa4 0x002E 0x94 1 1 -i2c_write 4 0xa4 0x002F 0x02 1 1 -i2c_write 4 0xa4 0x0031 0xE3 1 1 -i2c_write 4 0xa4 0x0032 0xD5 1 1 -i2c_write 4 0xa4 0x0034 0xCF 1 1 -i2c_write 4 0xa4 0x0035 0xC1 1 1 -i2c_write 4 0xa4 0x0037 0xC2 1 1 -i2c_write 4 0xa4 0x0038 0xB4 1 1 -i2c_write 4 0xa4 0x003A 0xD4 1 1 -i2c_write 4 0xa4 0x003B 0xC6 1 1 -i2c_write 4 0xa4 0x003D 0xC2 1 1 -i2c_write 4 0xa4 0x003E 0xB4 1 1 -i2c_write 4 0xa4 0x0030 0x1F 1 1 -i2c_write 4 0xa6 0x002E 0x94 1 1 -i2c_write 4 0xa6 0x002F 0x02 1 1 -i2c_write 4 0xa6 0x0031 0xE3 1 1 -i2c_write 4 0xa6 0x0032 0xD5 1 1 -i2c_write 4 0xa6 0x0034 0xCF 1 1 -i2c_write 4 0xa6 0x0035 0xC1 1 1 -i2c_write 4 0xa6 0x0037 0xC2 1 1 -i2c_write 4 0xa6 0x0038 0xB4 1 1 -i2c_write 4 0xa6 0x003A 0xD4 1 1 -i2c_write 4 0xa6 0x003B 0xC6 1 1 -i2c_write 4 0xa6 0x003D 0xC2 1 1 -i2c_write 4 0xa6 0x003E 0xB4 1 1 -i2c_write 4 0xa6 0x0030 0x1F 1 1 - -i2c_write 4 0xd0 0x0007 0x00 1 1 -i2c_write 4 0xd0 0x002B 0xE3 1 1 -i2c_write 4 0xd0 0x002C 0xD5 1 1 -i2c_write 4 0xd0 0x002F 0x9C 1 1 -i2c_write 4 0xd0 0x0030 0x82 1 1 -i2c_write 4 0xd0 0x0033 0xD4 1 1 -i2c_write 4 0xd0 0x0034 0xC6 1 1 -i2c_write 4 0xd0 0x0039 0xD4 1 1 -i2c_write 4 0xd0 0x003A 0xC6 1 1 -i2c_write 4 0xd0 0x003F 0xD4 1 1 -i2c_write 4 0xd0 0x0040 0xC6 1 1 -i2c_write 4 0xd0 0x0045 0xD4 1 1 -i2c_write 4 0xd0 0x0046 0xC6 1 1 -i2c_write 4 0xd0 0x004B 0xE3 1 1 -i2c_write 4 0xd0 0x004C 0xD5 1 1 -i2c_write 4 0xd0 0x004F 0xE3 1 1 -i2c_write 4 0xd0 0x0050 0xD5 1 1 -i2c_write 4 0xd0 0x002A 0xF1 1 1 -i2c_write 4 0xd0 0x002E 0xF1 1 1 -i2c_write 4 0xd0 0x0032 0xF9 1 1 -i2c_write 4 0xd0 0x0038 0xF9 1 1 -i2c_write 4 0xd0 0x003E 0xF9 1 1 -i2c_write 4 0xd0 0x0044 0xF9 1 1 -i2c_write 4 0xd0 0x004A 0xFD 1 1 -i2c_write 4 0xd0 0x004E 0xFD 1 1 - -i2c_write 4 0xa0 0x004E 0x00 1 1 -i2c_write 4 0xa0 0x004F 0x11 1 1 -i2c_write 4 0xa0 0x0050 0x22 1 1 -i2c_write 4 0xa0 0x0051 0x33 1 1 -i2c_write 4 0xa0 0x0052 0x44 1 1 -i2c_write 4 0xa0 0x0046 0x00 1 1 -i2c_write 4 0xa0 0x0047 0x20 1 1 -i2c_write 4 0xa0 0x0048 0x00 1 1 -i2c_write 4 0xa0 0x0049 0x00 1 1 -i2c_write 4 0xa0 0x004A 0x00 1 1 -i2c_write 4 0xa2 0x004E 0x00 1 1 -i2c_write 4 0xa2 0x004F 0x11 1 1 -i2c_write 4 0xa2 0x0050 0x22 1 1 -i2c_write 4 0xa2 0x0051 0x33 1 1 -i2c_write 4 0xa2 0x0052 0x44 1 1 -i2c_write 4 0xa2 0x0046 0x00 1 1 -i2c_write 4 0xa2 0x0047 0x20 1 1 -i2c_write 4 0xa2 0x0048 0x00 1 1 -i2c_write 4 0xa2 0x0049 0x00 1 1 -i2c_write 4 0xa2 0x004A 0x00 1 1 -i2c_write 4 0xa4 0x004E 0x00 1 1 -i2c_write 4 0xa4 0x004F 0x11 1 1 -i2c_write 4 0xa4 0x0050 0x22 1 1 -i2c_write 4 0xa4 0x0051 0x33 1 1 -i2c_write 4 0xa4 0x0052 0x44 1 1 -i2c_write 4 0xa4 0x0046 0x00 1 1 -i2c_write 4 0xa4 0x0047 0x20 1 1 -i2c_write 4 0xa4 0x0048 0x00 1 1 -i2c_write 4 0xa4 0x0049 0x00 1 1 -i2c_write 4 0xa4 0x004A 0x00 1 1 -i2c_write 4 0xa6 0x004E 0x00 1 1 -i2c_write 4 0xa6 0x004F 0x11 1 1 -i2c_write 4 0xa6 0x0050 0x22 1 1 -i2c_write 4 0xa6 0x0051 0x33 1 1 -i2c_write 4 0xa6 0x0052 0x44 1 1 -i2c_write 4 0xa6 0x0046 0x00 1 1 -i2c_write 4 0xa6 0x0047 0x20 1 1 -i2c_write 4 0xa6 0x0048 0x00 1 1 -i2c_write 4 0xa6 0x0049 0x00 1 1 -i2c_write 4 0xa6 0x004A 0x00 1 1 - -i2c_write 4 0xd0 0x0007 0x00 1 1 -i2c_write 4 0xd0 0x0055 0x02 1 1 -i2c_write 4 0xd0 0x0056 0x00 1 1 -i2c_write 4 0xd0 0x0058 0x05 1 1 -i2c_write 4 0xd0 0x0059 0x00 1 1 -i2c_write 4 0xd0 0x005B 0x00 1 1 -i2c_write 4 0xd0 0x005C 0x00 1 1 -i2c_write 4 0xd0 0x005E 0x00 1 1 -i2c_write 4 0xd0 0x005F 0x00 1 1 -i2c_write 4 0xd0 0x0061 0x00 1 1 -i2c_write 4 0xd0 0x0062 0x00 1 1 -i2c_write 4 0xd0 0x0064 0x00 1 1 -i2c_write 4 0xd0 0x0065 0x00 1 1 -i2c_write 4 0xd0 0x0067 0x00 1 1 -i2c_write 4 0xd0 0x0068 0x00 1 1 -i2c_write 4 0xd0 0x006A 0x00 1 1 -i2c_write 4 0xd0 0x006B 0x00 1 1 -i2c_write 4 0xd0 0x0054 0x08 1 1 -i2c_write 4 0xd0 0x0057 0x18 1 1 -i2c_write 4 0xd0 0x005A 0x18 1 1 -i2c_write 4 0xd0 0x005D 0x18 1 1 -i2c_write 4 0xd0 0x0060 0x18 1 1 -i2c_write 4 0xd0 0x0063 0x18 1 1 -i2c_write 4 0xd0 0x0066 0x18 1 1 -i2c_write 4 0xd0 0x0069 0x18 1 1 - -i2c_write 4 0xa0 0x0043 0x01 1 1 -i2c_write 4 0xa0 0x0044 0x01 1 1 -i2c_write 4 0xa0 0x00A3 0x03 1 1 -i2c_write 4 0xa2 0x0043 0x01 1 1 -i2c_write 4 0xa2 0x0044 0x01 1 1 -i2c_write 4 0xa2 0x00A3 0x03 1 1 -i2c_write 4 0xa4 0x0043 0x01 1 1 -i2c_write 4 0xa4 0x0044 0x01 1 1 -i2c_write 4 0xa4 0x00A3 0x03 1 1 -i2c_write 4 0xa6 0x0043 0x01 1 1 -i2c_write 4 0xa6 0x0044 0x01 1 1 -i2c_write 4 0xa6 0x00A3 0x03 1 1 - -i2c_write 4 0xd0 0x0007 0x04 1 1 -i2c_write 4 0xd0 0x041F 0x0D 1 1 -i2c_write 4 0xd0 0x0007 0x05 1 1 -i2c_write 4 0xd0 0x051F 0x0D 1 1 -i2c_write 4 0xd0 0x0007 0x06 1 1 -i2c_write 4 0xd0 0x061F 0x0D 1 1 -i2c_write 4 0xd0 0x0007 0x07 1 1 -i2c_write 4 0xd0 0x071F 0x0D 1 1 -i2c_write 4 0xd0 0x0007 0x02 1 1 -i2c_write 4 0xd0 0x024A 0x40 1 1 -usleep 5000 -i2c_write 4 0xd0 0x0007 0x03 1 1 -i2c_write 4 0xd0 0x034A 0x40 1 1 -usleep 5000 - -i2c_write 4 0xa0 0x0097 0x42 1 1 -i2c_write 4 0xa2 0x0097 0x42 1 1 -i2c_write 4 0xa4 0x0097 0x42 1 1 -i2c_write 4 0xa6 0x0097 0x42 1 1 - -i2c_write 4 0xd0 0x0007 0x02 1 1 -i2c_write 4 0xd0 0x0230 0x40 1 1 -i2c_write 4 0xd0 0x0007 0x03 1 1 -i2c_write 4 0xd0 0x0330 0x40 1 1 -i2c_write 4 0xd0 0x0007 0x04 1 1 -i2c_write 4 0xd0 0x0436 0x25 1 1 -i2c_write 4 0xd0 0x0007 0x05 1 1 -i2c_write 4 0xd0 0x0536 0x25 1 1 -i2c_write 4 0xd0 0x0007 0x06 1 1 -i2c_write 4 0xd0 0x0636 0x26 1 1 -i2c_write 4 0xd0 0x0007 0x07 1 1 -i2c_write 4 0xd0 0x0736 0x26 1 1 -i2c_write 4 0xd0 0x0007 0x00 1 1 -i2c_write 4 0xd0 0x00E0 0x01 1 1 -i2c_write 4 0xd0 0x0007 0x00 1 1 - -i2c_write 4 0xd0 0x0007 0x00 1 1 -i2c_write 4 0xd0 0x0082 0x1F 1 1 -i2c_write 4 0xd0 0x0083 0x1F 1 1 -i2c_write 4 0xd0 0x0084 0x1F 1 1 -i2c_write 4 0xd0 0x0085 0x1F 1 1 -i2c_write 4 0xd0 0x0086 0x22 1 1 -i2c_write 4 0xd0 0x0087 0x22 1 1 -i2c_write 4 0xd0 0x0088 0x0F 1 1 -i2c_write 4 0xd0 0x0089 0x0F 1 1 -i2c_write 4 0xd0 0x008A 0xF3 1 1 -i2c_write 4 0xd0 0x008B 0xF3 1 1 -i2c_write 4 0xd0 0x008C 0xF3 1 1 -i2c_write 4 0xd0 0x008D 0xF3 1 1 -i2c_write 4 0xd0 0x008E 0xC2 1 1 -i2c_write 4 0xd0 0x008F 0xC2 1 1 -i2c_write 4 0xd0 0x0090 0xC2 1 1 -i2c_write 4 0xd0 0x0091 0xC2 1 1 -i2c_write 4 0xd0 0x0092 0xFF 1 1 -i2c_write 4 0xd0 0x0093 0x82 1 1 -i2c_write 4 0xd0 0x0094 0x03 1 1 -i2c_write 4 0xd0 0x0095 0x03 1 1 -i2c_write 4 0xd0 0x0096 0xDB 1 1 -i2c_write 4 0xd0 0x0097 0x83 1 1 -i2c_write 4 0xd0 0x0098 0x83 1 1 -i2c_write 4 0xd0 0x0099 0x83 1 1 -i2c_write 4 0xd0 0x009A 0x83 1 1 -i2c_write 4 0xd0 0x009B 0x83 1 1 -i2c_write 4 0xd0 0x009C 0x83 1 1 -i2c_write 4 0xd0 0x009D 0x00 1 1 -i2c_write 4 0xd0 0x009E 0xFD 1 1 -i2c_write 4 0xd0 0x009F 0x04 1 1 -i2c_write 4 0xd0 0x00A0 0x00 1 1 -i2c_write 4 0xd0 0x00A1 0xFD 1 1 -i2c_write 4 0xd0 0x00A2 0x04 1 1 -i2c_write 4 0xd0 0x00A3 0x00 1 1 -i2c_write 4 0xd0 0x00A4 0xFD 1 1 -i2c_write 4 0xd0 0x00A5 0x04 1 1 -i2c_write 4 0xd0 0x00A6 0x00 1 1 -i2c_write 4 0xd0 0x00A7 0xFD 1 1 - -i2c_write 4 0xa0 0x0048 0x91 1 1 -i2c_write 4 0xa2 0x0048 0x91 1 1 -i2c_write 4 0xa4 0x0048 0x91 1 1 -i2c_write 4 0xa6 0x0048 0x91 1 1 diff --git a/bsp/meta-hisilicon/recipes-bsp/ss928/hieulerpi1-bsp-pkg.bb b/bsp/meta-hisilicon/recipes-bsp/ss928/hieulerpi1-bsp-pkg.bb index f59945e80d67b1755ed10f51d32d3337ef7b9649..13ab1340f4de5df237888f618d56ff9c8bd4025a 100644 --- a/bsp/meta-hisilicon/recipes-bsp/ss928/hieulerpi1-bsp-pkg.bb +++ b/bsp/meta-hisilicon/recipes-bsp/ss928/hieulerpi1-bsp-pkg.bb @@ -17,62 +17,68 @@ SRC_URI = " \ file://HiEuler-driver/drivers/pinmux.sh \ file://HiEuler-driver/drivers/env.tar.gz \ file://HiEuler-driver/drivers/can-tools.tar.gz \ - file://HiEuler-driver/drivers/ws73.tar.gz \ + file://HiEuler-driver/drivers/ws73.tar.gz \ file://HiEuler-driver/mcu \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' file://hieulerpi1-bsp.service ', '', d)} \ " S = "${WORKDIR}/HiEuler-driver/drivers" INSANE_SKIP:${PN} += "already-stripped" -FILES:${PN} = "${sysconfdir} /usr/bin /ko /vendor /usr/sbin /firmware ${libdir}" +FILES:${PN} = "${sysconfdir} ${systemd_system_unitdir} /usr/bin /ko /vendor /usr/sbin /firmware ${libdir}" do_install () { - install -d ${D}/usr/bin - install -d ${D}${libdir} - install -d ${D}/firmware - install -d ${D}${sysconfdir}/init.d - install -d ${D}${sysconfdir}/rc5.d - - install -m 0755 ${WORKDIR}/HiEuler-driver/drivers/btools ${D}/usr/bin/ - ln -s /usr/bin/btools ${D}/usr/bin/bspmm - ln -s /usr/bin/btools ${D}/usr/bin/i2c_read - ln -s /usr/bin/btools ${D}/usr/bin/i2c_write - install -m 0755 ${WORKDIR}/ko-extra/pre_vo ${D}/usr/bin/ - - cp -r ${WORKDIR}/ko ${D}/ - cp -f ${WORKDIR}/ko-extra/ch343.ko ${D}/ko - - #for mipi, use load_ss928v100 from ko-extra - cp -f ${WORKDIR}/ko-extra/load_ss928v100 ${D}/ko - - # install wifi-1102a firmware - # cp -f ${WORKDIR}/wifi-1102a-tools/plat.ko ${D}/ko - # cp -f ${WORKDIR}/wifi-1102a-tools/wifi.ko ${D}/ko - # install -m 0755 ${WORKDIR}/wifi-1102a-tools/start_wifi ${D}/usr/bin/ - # install -d ${D}/vendor - # cp -rf ${WORKDIR}/wifi-1102a-tools/vendor/* ${D}/vendor - - install -m 0755 ${S}/S90AutoRun ${D}${sysconfdir}/init.d/ - install -m 0755 ${S}/pinmux.sh ${D}${sysconfdir}/init.d/ + install -d ${D}/usr/bin + install -d ${D}${libdir} + install -d ${D}/firmware + install -d ${D}${sysconfdir}/init.d + install -d ${D}${sysconfdir}/rc5.d + + install -m 0755 ${WORKDIR}/HiEuler-driver/drivers/btools ${D}/usr/bin/ + ln -s /usr/bin/btools ${D}/usr/bin/bspmm + ln -s /usr/bin/btools ${D}/usr/bin/i2c_read + ln -s /usr/bin/btools ${D}/usr/bin/i2c_write + install -m 0755 ${WORKDIR}/ko-extra/pre_vo ${D}/usr/bin/ + + cp -r ${WORKDIR}/ko ${D}/ + # cp -f ${WORKDIR}/ko-extra/ch343.ko ${D}/ko + + #for mipi, use load_ss928v100 from ko-extra + cp -f ${WORKDIR}/ko-extra/load_ss928v100 ${D}/ko + + # install wifi-1102a firmware + # cp -f ${WORKDIR}/wifi-1102a-tools/plat.ko ${D}/ko + # cp -f ${WORKDIR}/wifi-1102a-tools/wifi.ko ${D}/ko + # install -m 0755 ${WORKDIR}/wifi-1102a-tools/start_wifi ${D}/usr/bin/ + # install -d ${D}/vendor + # cp -rf ${WORKDIR}/wifi-1102a-tools/vendor/* ${D}/vendor + + install -m 0755 ${S}/S90AutoRun ${D}${sysconfdir}/init.d/ + install -m 0755 ${S}/pinmux.sh ${D}${sysconfdir}/init.d/ + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/hieulerpi1-bsp.service ${D}${systemd_system_unitdir} + else update-rc.d -r ${D} S90AutoRun start 90 5 . update-rc.d -r ${D} pinmux.sh start 90 5 . + fi - install -m 0755 ${WORKDIR}/env/fw_env.config ${D}/etc/ - install -m 0755 ${WORKDIR}/env/fw_printenv ${D}/usr/bin/ - install -m 0755 ${WORKDIR}/env/fw_setenv ${D}/usr/bin/ + install -m 0755 ${WORKDIR}/env/fw_env.config ${D}/etc/ + install -m 0755 ${WORKDIR}/env/fw_printenv ${D}/usr/bin/ + install -m 0755 ${WORKDIR}/env/fw_setenv ${D}/usr/bin/ - cp -r ${WORKDIR}/can-tools/canutils/sbin ${D}/usr/ - cp -r ${WORKDIR}/can-tools/canutils/bin/* ${D}/usr/bin/ - cp -r ${WORKDIR}/can-tools/libsocketcan/lib/* ${D}${libdir} + cp -r ${WORKDIR}/can-tools/canutils/sbin ${D}/usr/ + cp -r ${WORKDIR}/can-tools/canutils/bin/* ${D}/usr/bin/ + cp -r ${WORKDIR}/can-tools/libsocketcan/lib/* ${D}${libdir} - install -m 0755 ${WORKDIR}/HiEuler-driver/mcu/load_riscv ${D}/usr/sbin - install -m 0755 ${WORKDIR}/HiEuler-driver/mcu/virt-tty ${D}/usr/sbin - install -m 0755 ${WORKDIR}/HiEuler-driver/mcu/LiteOS.bin ${D}/firmware + install -m 0755 ${WORKDIR}/HiEuler-driver/mcu/load_riscv ${D}/usr/sbin + install -m 0755 ${WORKDIR}/HiEuler-driver/mcu/virt-tty ${D}/usr/sbin + install -m 0755 ${WORKDIR}/HiEuler-driver/mcu/LiteOS.bin ${D}/firmware - install -d ${D}${sysconfdir}/ws73 - cp ${WORKDIR}/ws73/firmware/* ${D}${sysconfdir}/ws73/ - cp ${WORKDIR}/ws73/ko/* ${D}/ko/ - cp ${WORKDIR}/ws73/config/* ${D}${sysconfdir}/ + install -d ${D}${sysconfdir}/ws73 + cp ${WORKDIR}/ws73/firmware/* ${D}${sysconfdir}/ws73/ + cp ${WORKDIR}/ws73/ko/* ${D}/ko/ + cp ${WORKDIR}/ws73/config/* ${D}${sysconfdir}/ } INHIBIT_PACKAGE_STRIP = "1" diff --git a/bsp/meta-hisilicon/recipes-bsp/u-boot/u-boot-emmc_2022.07.bb b/bsp/meta-hisilicon/recipes-bsp/u-boot/u-boot-emmc_2022.07.bb index 6e68cc45579cc700fafa87894a4cea8eb459df95..83337e7f77f278a6572e6a70bc7e8546dd51989b 100644 --- a/bsp/meta-hisilicon/recipes-bsp/u-boot/u-boot-emmc_2022.07.bb +++ b/bsp/meta-hisilicon/recipes-bsp/u-boot/u-boot-emmc_2022.07.bb @@ -14,6 +14,7 @@ SRC_URI = " \ file://mpu_solution/src/real_time/baremetal/common/hi309x_baremetal.h \ file://mpu_solution/build/build_sign \ file://mpu_solution/build/version_5.10 \ + file://mpu_solution/src/patches/uboot/uboot-mtd-spi.patch \ " S = "${WORKDIR}/mpu_solution/open_source/u-boot/u-boot" diff --git a/bsp/meta-hisilicon/recipes-core/device_sample/device-sample_0.0.0.bb b/bsp/meta-hisilicon/recipes-core/device_sample/device-sample_0.0.0.bb index 50b10ec4cec97d13728f2270a22c3c6337fe62de..664554e3bda6378ad06653fd170d5dc458c89b0b 100755 --- a/bsp/meta-hisilicon/recipes-core/device_sample/device-sample_0.0.0.bb +++ b/bsp/meta-hisilicon/recipes-core/device_sample/device-sample_0.0.0.bb @@ -24,6 +24,15 @@ do_compile:prepend () { cp -r -P ${WORKDIR}/include ${S}/externed_device_sample/mpp/out/ } +TARGET_CC_ARCH += "${LDFLAGS}" +# Makefile does not support the use of the CC environment variable, +# so use make CC="${CC}" +EXTRA_OEMAKE += 'CC="${CC}"' + +# workaround to fix error: +# `undefined reference to `vtable for __cxxabiv1::__class_type_info'` +LDFLAGS:remove = "-Wl,--as-needed" + do_compile () { pushd externed_device_sample oe_runmake diff --git a/bsp/meta-hisilicon/recipes-core/images/bsp-hiedge1.inc b/bsp/meta-hisilicon/recipes-core/images/bsp-hiedge1.inc new file mode 100644 index 0000000000000000000000000000000000000000..b7cf09d11232eb66a4c395f35a447de343656d20 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-core/images/bsp-hiedge1.inc @@ -0,0 +1,6 @@ +# add bsp depends here, should use for all images(tiny, standard, etc) + +IMAGE_INSTALL:append = " \ +hiedge1-tf-a \ +hiedge1-bsp-pkg \ +" diff --git a/bsp/meta-hisilicon/recipes-core/images/bsp-hieulerpi1.inc b/bsp/meta-hisilicon/recipes-core/images/bsp-hieulerpi1.inc index a2c05ac3a2b0fa14f5aa4dd99a6d2b546564402b..1768f349e0bc08bac8bfdcf285ca3f632a5d55b6 100644 --- a/bsp/meta-hisilicon/recipes-core/images/bsp-hieulerpi1.inc +++ b/bsp/meta-hisilicon/recipes-core/images/bsp-hieulerpi1.inc @@ -4,5 +4,6 @@ IMAGE_INSTALL:append = " \ hieulerpi1-tf-a \ hieulerpi1-bsp-pkg \ i2c-soft \ +ch343 \ mcu-tool \ " diff --git a/bsp/meta-hisilicon/recipes-core/images/hiedge1.inc b/bsp/meta-hisilicon/recipes-core/images/hiedge1.inc new file mode 100644 index 0000000000000000000000000000000000000000..f48da7d3bed1555a0eca591aee0e27c46c5c9f76 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-core/images/hiedge1.inc @@ -0,0 +1,23 @@ +delete_unneeded_from_rootfs() { + set -x + test -d "${OUTPUT_DIR}" || mkdir -p "${OUTPUT_DIR}" + rm -rf "${OUTPUT_DIR}"/* + cd "${IMAGE_ROOTFS}" + cp -r boot/* "${OUTPUT_DIR}" + # just need the boot dir, others in boot are not needed to reduce the size of image. + rm -rf ./boot/* + cd - + set +x +} +IMAGE_PREPROCESS_COMMAND += "delete_unneeded_from_rootfs;" + +copy_626_distro() { + set -x + for IMAGETYPE in ${IMAGE_FSTYPES} + do + rm -f "${OUTPUT_DIR}"/${IMAGE_NAME}${IMAGE_NAME_SUFFIX%.rootfs}.*${IMAGETYPE} + cp -fp ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX%.rootfs}.*${IMAGETYPE} ${OUTPUT_DIR}/ + done + set +x +} +IMAGE_POSTPROCESS_COMMAND += "copy_626_distro;" diff --git a/bsp/meta-hisilicon/recipes-core/images/image-early-config-hiedge1.inc b/bsp/meta-hisilicon/recipes-core/images/image-early-config-hiedge1.inc new file mode 100644 index 0000000000000000000000000000000000000000..2448cc6736d4ae0c7ec8a876bba6df1baa6432be --- /dev/null +++ b/bsp/meta-hisilicon/recipes-core/images/image-early-config-hiedge1.inc @@ -0,0 +1,8 @@ +# This file should only be referenced by openeuler-image for customizing early configuration at the image level +# ref: meta-openeuler/recipes-core/images/openeuler-image.bb: +# line 0 | include recipes-core/images/image-early-config-${MACHINE}.inc +# line 1 | require openeuler-image-common.inc + +IMAGE_FSTYPES = "ext4" +IMAGE_FSTYPES:remove = "iso" +IMAGE_FSTYPES_DEBUGFS = "cpio.gz" diff --git a/bsp/meta-hisilicon/recipes-core/images/image-hiedge1.inc b/bsp/meta-hisilicon/recipes-core/images/image-hiedge1.inc new file mode 100644 index 0000000000000000000000000000000000000000..f0288c3ecaa343d0dbfae5bb7224d0ae510d5bb1 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-core/images/image-hiedge1.inc @@ -0,0 +1,18 @@ +# This file should be included in openeuler-image.bbappend, openeuler-image-ros.bbappend, etc. +# diff from ${MACHINE}.inc, it should not be included in live image + +require recipes-core/images/bsp-${MACHINE}.inc + +# all app and tools +IMAGE_INSTALL += " \ +hiedge1-user-driver \ +" + + +# 1. dsoftbus is not adpated to hieulerpi1 +# 2. user-driver may provides libsecurec.so, +# it conflicts with libboundscheck, especially in SDK +# so, remove dsoftbus from IMAGE_INSTALL +IMAGE_INSTALL:remove = " \ + packagegroup-dsoftbus \ +" diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093.dts b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093.dts index a5e2950e2db4ac624f28d61e9ec5024fb2a0cea1..3d0d12b9f46d1d76482ac76dde2720d250e86263 100644 --- a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093.dts +++ b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093.dts @@ -290,44 +290,163 @@ <0x0 153 0x4>; }; - i2c@2000d000 { - compatible = "hisilicon,hi1711-i2c"; - reg = <0x0 0x08707000 0x0 0x1000>, - <0x0 0x08708000 0x0 0x1000>, - <0x0 0x08709000 0x0 0x1000>, - <0x0 0x0870a000 0x0 0x1000>, - <0x0 0x0870b000 0x0 0x1000>, - <0x0 0x0870c000 0x0 0x1000>, - <0x0 0x0870d000 0x0 0x1000>, - <0x0 0x0870e000 0x0 0x1000>, - <0x0 0x08750000 0x0 0x1000>, - <0x0 0x08751000 0x0 0x1000>, - <0x0 0x08752000 0x0 0x1000>, - <0x0 0x08753000 0x0 0x1000>, - <0x0 0x08754000 0x0 0x1000>, - <0x0 0x08755000 0x0 0x1000>, - <0x0 0x08756000 0x0 0x1000>, - <0x0 0x08757000 0x0 0x1000>, - <0x0 0x08745000 0x0 0x1000>, - <0x0 0x0876e000 0x0 0x1000>;/*0-15 i2creg ,16 ioconfig-T,17 ioconfig-R*/ - interrupts = <0x0 72 0x4>, - <0x0 73 0x4>, - <0x0 74 0x4>, - <0x0 75 0x4>, - <0x0 76 0x4>, - <0x0 77 0x4>, - <0x0 78 0x4>, - <0x0 79 0x4>, - <0x0 80 0x4>, - <0x0 81 0x4>, - <0x0 82 0x4>, - <0x0 83 0x4>, - <0x0 84 0x4>, - <0x0 85 0x4>, - <0x0 86 0x4>, - <0x0 87 0x4>;/*0-15*/ + i2c_bus0: i2c@8707000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08707000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 72 0x4>; + }; + + i2c_bus1: i2c@8708000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08708000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 73 0x4>; + }; + + i2c_bus2: i2c@8709000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08709000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 74 0x4>; }; + i2c_bus3: i2c@870a000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870a000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 75 0x4>; + }; + + i2c_bus4: i2c@870b000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870b000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 76 0x4>; + }; + + i2c_bus5: i2c@870c000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870c000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 77 0x4>; + }; + + i2c_bus6: i2c@870d000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870d000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 78 0x4>; + }; + + i2c_bus7: i2c@870e000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870e000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 79 0x4>; + }; + + i2c_bus8: i2c@8750000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08750000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 80 0x4>; + }; + + i2c_bus9: i2c@8751000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08751000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 81 0x4>; + }; + + i2c_bus10: i2c@8752000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08752000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 82 0x4>; + }; + + i2c_bus11: i2c@8753000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08753000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 83 0x4>; + }; + + i2c_bus12: i2c@8754000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08754000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 84 0x4>; + }; + + i2c_bus13: i2c@8755000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08755000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 85 0x4>; + }; + + i2c_bus14: i2c@8756000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08756000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 86 0x4>; + }; + + i2c_bus15: i2c@8757000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08757000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 87 0x4>; + }; + + /* + * The i2c@2000d000 node is used to implement the method in the src/non_real_time/drivers/i2c directory. + * This method does not use the Linux kernel framework. + * If you need to use this driver, delete i2c_bus0 to i2c_bus15 and use the i2c@2000d000 node. + */ + /* + * i2c@2000d000 { + * compatible = "hisilicon,hi1711-i2c"; + * reg = <0x0 0x08707000 0x0 0x1000>, + * <0x0 0x08708000 0x0 0x1000>, + * <0x0 0x08709000 0x0 0x1000>, + * <0x0 0x0870a000 0x0 0x1000>, + * <0x0 0x0870b000 0x0 0x1000>, + * <0x0 0x0870c000 0x0 0x1000>, + * <0x0 0x0870d000 0x0 0x1000>, + * <0x0 0x0870e000 0x0 0x1000>, + * <0x0 0x08750000 0x0 0x1000>, + * <0x0 0x08751000 0x0 0x1000>, + * <0x0 0x08752000 0x0 0x1000>, + * <0x0 0x08753000 0x0 0x1000>, + * <0x0 0x08754000 0x0 0x1000>, + * <0x0 0x08755000 0x0 0x1000>, + * <0x0 0x08756000 0x0 0x1000>, + * <0x0 0x08757000 0x0 0x1000>, + * <0x0 0x08745000 0x0 0x1000>, + * <0x0 0x0876e000 0x0 0x1000>;//0-15 i2creg ,16 ioconfig-T,17 ioconfig-R + * interrupts = <0x0 72 0x4>, + * <0x0 73 0x4>, + * <0x0 74 0x4>, + * <0x0 75 0x4>, + * <0x0 76 0x4>, + * <0x0 77 0x4>, + * <0x0 78 0x4>, + * <0x0 79 0x4>, + * <0x0 80 0x4>, + * <0x0 81 0x4>, + * <0x0 82 0x4>, + * <0x0 83 0x4>, + * <0x0 84 0x4>, + * <0x0 85 0x4>, + * <0x0 86 0x4>, + * <0x0 87 0x4>;//0-15 + * }; + */ + smbus@0x08707000 { compatible = "hisilicon,hi1711-smbus"; reg = <0x0 0x08707000 0x0 0x1000>, @@ -747,6 +866,13 @@ compatible = "hisilicon, hi1711-msg_scm3"; interrupts = <0 225 4>;/*inter core communication from secure M3*/ }; + + gpu@18000000 { + compatible = "hisilicon, hi1711-gpu"; + reg = <0x0 0x18000000 0x0 0x200000>, + <0x0 0x80000000 0x0 0x2000000>; + interrupts = <0x0 47 0x4>; + }; }; }; diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_2with2.dts b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_2with2.dts index 5e293a0e78e0a29586c18cf4d71e6a420788e60d..473d0e25957f3f36b2b70320a53ad681c37ebed1 100644 --- a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_2with2.dts +++ b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_2with2.dts @@ -35,15 +35,15 @@ #size-cells = <0x2>; ranges; - client_os_reserved: client_os_reserved@93000000 { - reg = <0x00 0x93000000 0x00 0x4000000>; - no-map; + client_os_reserved: client_os_reserved@93000000 { + reg = <0x00 0x93000000 0x00 0x4000000>; + no-map; }; client_os_dma_memory_region: client_os-dma-memory@90000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0x90000000 0x00 0x3000000>; - no-map; + compatible = "shared-dma-pool"; + reg = <0x00 0x90000000 0x00 0x3000000>; + no-map; }; }; @@ -327,45 +327,163 @@ domain=<0x1 0x1 0x1 0x1 0x0>; }; - i2c@2000d000 { - compatible = "hisilicon,hi1711-i2c"; - reg = <0x0 0x08707000 0x0 0x1000>, - <0x0 0x08708000 0x0 0x1000>, - <0x0 0x08709000 0x0 0x1000>, - <0x0 0x0870a000 0x0 0x1000>, - <0x0 0x0870b000 0x0 0x1000>, - <0x0 0x0870c000 0x0 0x1000>, - <0x0 0x0870d000 0x0 0x1000>, - <0x0 0x0870e000 0x0 0x1000>, - <0x0 0x08750000 0x0 0x1000>, - <0x0 0x08751000 0x0 0x1000>, - <0x0 0x08752000 0x0 0x1000>, - <0x0 0x08753000 0x0 0x1000>, - <0x0 0x08754000 0x0 0x1000>, - <0x0 0x08755000 0x0 0x1000>, - <0x0 0x08756000 0x0 0x1000>, - <0x0 0x08757000 0x0 0x1000>, - <0x0 0x08745000 0x0 0x1000>, - <0x0 0x0876e000 0x0 0x1000>;/*0-15 i2creg ,16 ioconfig-T,17 ioconfig-R*/ - interrupts = <0x0 72 0x4>, - <0x0 73 0x4>, - <0x0 74 0x4>, - <0x0 75 0x4>, - <0x0 76 0x4>, - <0x0 77 0x4>, - <0x0 78 0x4>, - <0x0 79 0x4>, - <0x0 80 0x4>, - <0x0 81 0x4>, - <0x0 82 0x4>, - <0x0 83 0x4>, - <0x0 84 0x4>, - <0x0 85 0x4>, - <0x0 86 0x4>, - <0x0 87 0x4>;/*0-15*/ - domain=<0x0 0x0 0x0 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1>; + i2c_bus0: i2c@8707000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08707000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 72 0x4>; }; + i2c_bus1: i2c@8708000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08708000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 73 0x4>; + }; + + i2c_bus2: i2c@8709000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08709000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 74 0x4>; + }; + + i2c_bus3: i2c@870a000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870a000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 75 0x4>; + }; + + i2c_bus4: i2c@870b000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870b000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 76 0x4>; + }; + + i2c_bus5: i2c@870c000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870c000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 77 0x4>; + }; + + i2c_bus6: i2c@870d000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870d000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 78 0x4>; + }; + + i2c_bus7: i2c@870e000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870e000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 79 0x4>; + }; + + i2c_bus8: i2c@8750000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08750000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 80 0x4>; + }; + + i2c_bus9: i2c@8751000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08751000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 81 0x4>; + }; + + i2c_bus10: i2c@8752000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08752000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 82 0x4>; + }; + + i2c_bus11: i2c@8753000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08753000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 83 0x4>; + }; + + i2c_bus12: i2c@8754000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08754000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 84 0x4>; + }; + + i2c_bus13: i2c@8755000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08755000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 85 0x4>; + }; + + i2c_bus14: i2c@8756000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08756000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 86 0x4>; + }; + + i2c_bus15: i2c@8757000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08757000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 87 0x4>; + }; + + /* + * The i2c@2000d000 node is used to implement the method in the src/non_real_time/drivers/i2c directory. + * This method does not use the Linux kernel framework. + * If you need to use this driver, delete i2c_bus0 to i2c_bus15 and use the i2c@2000d000 node. + */ + /* + * i2c@2000d000 { + * compatible = "hisilicon,hi1711-i2c"; + * reg = <0x0 0x08707000 0x0 0x1000>, + * <0x0 0x08708000 0x0 0x1000>, + * <0x0 0x08709000 0x0 0x1000>, + * <0x0 0x0870a000 0x0 0x1000>, + * <0x0 0x0870b000 0x0 0x1000>, + * <0x0 0x0870c000 0x0 0x1000>, + * <0x0 0x0870d000 0x0 0x1000>, + * <0x0 0x0870e000 0x0 0x1000>, + * <0x0 0x08750000 0x0 0x1000>, + * <0x0 0x08751000 0x0 0x1000>, + * <0x0 0x08752000 0x0 0x1000>, + * <0x0 0x08753000 0x0 0x1000>, + * <0x0 0x08754000 0x0 0x1000>, + * <0x0 0x08755000 0x0 0x1000>, + * <0x0 0x08756000 0x0 0x1000>, + * <0x0 0x08757000 0x0 0x1000>, + * <0x0 0x08745000 0x0 0x1000>, + * <0x0 0x0876e000 0x0 0x1000>;//0-15 i2creg ,16 ioconfig-T,17 ioconfig-R + * interrupts = <0x0 72 0x4>, + * <0x0 73 0x4>, + * <0x0 74 0x4>, + * <0x0 75 0x4>, + * <0x0 76 0x4>, + * <0x0 77 0x4>, + * <0x0 78 0x4>, + * <0x0 79 0x4>, + * <0x0 80 0x4>, + * <0x0 81 0x4>, + * <0x0 82 0x4>, + * <0x0 83 0x4>, + * <0x0 84 0x4>, + * <0x0 85 0x4>, + * <0x0 86 0x4>, + * <0x0 87 0x4>;//0-15 + * }; + */ + smbus@0x08707000 { compatible = "hisilicon,hi1711-smbus"; reg = <0x0 0x08707000 0x0 0x1000>, @@ -791,6 +909,13 @@ compatible = "hisilicon, hi1711-msg_scm3"; interrupts = <0 225 4>;/*inter core communication from secure M3*/ }; + + gpu@18000000 { + compatible = "hisilicon, hi1711-gpu"; + reg = <0x0 0x18000000 0x0 0x200000>, + <0x0 0x80000000 0x0 0x2000000>; + interrupts = <0x0 47 0x4>; + }; }; }; diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_3with1.dts b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_3with1.dts index 05f384f15b8e9e6d89bc96b6a21aacf6c3925d75..77f97ca545af76e41e3bd831911aa5f23190a0e6 100644 --- a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_3with1.dts +++ b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/hi3093_mcs_3with1.dts @@ -35,15 +35,15 @@ #size-cells = <0x2>; ranges; - client_os_reserved: client_os_reserved@93000000 { - reg = <0x00 0x93000000 0x00 0x4000000>; - no-map; + client_os_reserved: client_os_reserved@93000000 { + reg = <0x00 0x93000000 0x00 0x4000000>; + no-map; }; client_os_dma_memory_region: client_os-dma-memory@90000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0x90000000 0x00 0x3000000>; - no-map; + compatible = "shared-dma-pool"; + reg = <0x00 0x90000000 0x00 0x3000000>; + no-map; }; }; @@ -327,45 +327,163 @@ domain=<0x1 0x1 0x1 0x1 0x0>; }; - i2c@2000d000 { - compatible = "hisilicon,hi1711-i2c"; - reg = <0x0 0x08707000 0x0 0x1000>, - <0x0 0x08708000 0x0 0x1000>, - <0x0 0x08709000 0x0 0x1000>, - <0x0 0x0870a000 0x0 0x1000>, - <0x0 0x0870b000 0x0 0x1000>, - <0x0 0x0870c000 0x0 0x1000>, - <0x0 0x0870d000 0x0 0x1000>, - <0x0 0x0870e000 0x0 0x1000>, - <0x0 0x08750000 0x0 0x1000>, - <0x0 0x08751000 0x0 0x1000>, - <0x0 0x08752000 0x0 0x1000>, - <0x0 0x08753000 0x0 0x1000>, - <0x0 0x08754000 0x0 0x1000>, - <0x0 0x08755000 0x0 0x1000>, - <0x0 0x08756000 0x0 0x1000>, - <0x0 0x08757000 0x0 0x1000>, - <0x0 0x08745000 0x0 0x1000>, - <0x0 0x0876e000 0x0 0x1000>;/*0-15 i2creg ,16 ioconfig-T,17 ioconfig-R*/ - interrupts = <0x0 72 0x4>, - <0x0 73 0x4>, - <0x0 74 0x4>, - <0x0 75 0x4>, - <0x0 76 0x4>, - <0x0 77 0x4>, - <0x0 78 0x4>, - <0x0 79 0x4>, - <0x0 80 0x4>, - <0x0 81 0x4>, - <0x0 82 0x4>, - <0x0 83 0x4>, - <0x0 84 0x4>, - <0x0 85 0x4>, - <0x0 86 0x4>, - <0x0 87 0x4>;/*0-15*/ - domain=<0x0 0x0 0x0 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1>; + i2c_bus0: i2c@8707000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08707000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 72 0x4>; }; + i2c_bus1: i2c@8708000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08708000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 73 0x4>; + }; + + i2c_bus2: i2c@8709000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08709000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 74 0x4>; + }; + + i2c_bus3: i2c@870a000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870a000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 75 0x4>; + }; + + i2c_bus4: i2c@870b000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870b000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 76 0x4>; + }; + + i2c_bus5: i2c@870c000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870c000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 77 0x4>; + }; + + i2c_bus6: i2c@870d000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870d000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 78 0x4>; + }; + + i2c_bus7: i2c@870e000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x0870e000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 79 0x4>; + }; + + i2c_bus8: i2c@8750000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08750000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 80 0x4>; + }; + + i2c_bus9: i2c@8751000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08751000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 81 0x4>; + }; + + i2c_bus10: i2c@8752000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08752000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 82 0x4>; + }; + + i2c_bus11: i2c@8753000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08753000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 83 0x4>; + }; + + i2c_bus12: i2c@8754000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08754000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 84 0x4>; + }; + + i2c_bus13: i2c@8755000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08755000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 85 0x4>; + }; + + i2c_bus14: i2c@8756000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08756000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 86 0x4>; + }; + + i2c_bus15: i2c@8757000 { + compatible = "hisilicon,hi309x-i2c"; + reg = <0x0 0x08757000 0x0 0x1000>; + clock-frequency = <100000>; + interrupts = <0x0 87 0x4>; + }; + + /* + * The i2c@2000d000 node is used to implement the method in the src/non_real_time/drivers/i2c directory. + * This method does not use the Linux kernel framework. + * If you need to use this driver, delete i2c_bus0 to i2c_bus15 and use the i2c@2000d000 node. + */ + /* + * i2c@2000d000 { + * compatible = "hisilicon,hi1711-i2c"; + * reg = <0x0 0x08707000 0x0 0x1000>, + * <0x0 0x08708000 0x0 0x1000>, + * <0x0 0x08709000 0x0 0x1000>, + * <0x0 0x0870a000 0x0 0x1000>, + * <0x0 0x0870b000 0x0 0x1000>, + * <0x0 0x0870c000 0x0 0x1000>, + * <0x0 0x0870d000 0x0 0x1000>, + * <0x0 0x0870e000 0x0 0x1000>, + * <0x0 0x08750000 0x0 0x1000>, + * <0x0 0x08751000 0x0 0x1000>, + * <0x0 0x08752000 0x0 0x1000>, + * <0x0 0x08753000 0x0 0x1000>, + * <0x0 0x08754000 0x0 0x1000>, + * <0x0 0x08755000 0x0 0x1000>, + * <0x0 0x08756000 0x0 0x1000>, + * <0x0 0x08757000 0x0 0x1000>, + * <0x0 0x08745000 0x0 0x1000>, + * <0x0 0x0876e000 0x0 0x1000>;//0-15 i2creg ,16 ioconfig-T,17 ioconfig-R + * interrupts = <0x0 72 0x4>, + * <0x0 73 0x4>, + * <0x0 74 0x4>, + * <0x0 75 0x4>, + * <0x0 76 0x4>, + * <0x0 77 0x4>, + * <0x0 78 0x4>, + * <0x0 79 0x4>, + * <0x0 80 0x4>, + * <0x0 81 0x4>, + * <0x0 82 0x4>, + * <0x0 83 0x4>, + * <0x0 84 0x4>, + * <0x0 85 0x4>, + * <0x0 86 0x4>, + * <0x0 87 0x4>;//0-15 + * }; + */ + smbus@0x08707000 { compatible = "hisilicon,hi1711-smbus"; reg = <0x0 0x08707000 0x0 0x1000>, @@ -791,6 +909,13 @@ compatible = "hisilicon, hi1711-msg_scm3"; interrupts = <0 225 4>;/*inter core communication from secure M3*/ }; + + gpu@18000000 { + compatible = "hisilicon, hi1711-gpu"; + reg = <0x0 0x18000000 0x0 0x200000>, + <0x0 0x80000000 0x0 0x2000000>; + interrupts = <0x0 47 0x4>; + }; }; }; diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/ss626v100-demb-emmc.dts b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/ss626v100-demb-emmc.dts new file mode 100644 index 0000000000000000000000000000000000000000..2aa6ed41a6adc0b23177d584fa9929468fcffaa0 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-kernel/linux/files/dtbs/ss626v100-demb-emmc.dts @@ -0,0 +1,979 @@ +/dts-v1/; + +/memreserve/ 0x0000000046fff000 0x0000000001a02000; +/ { + #address-cells = <0x02>; + #size-cells = <0x02>; + interrupt-parent = <0x01>; + model = "Vendor SS626V100 DEMO Board"; + compatible = "vendor,ss626v100"; + + interrupt-controller@12400000 { + compatible = "arm,gic-v3"; + #interrupt-cells = <0x03>; + #address-cells = <0x00>; + interrupt-controller; + reg = <0x00 0x12400000 0x00 0x10000 0x00 0x12440000 0x00 0x140000>; + phandle = <0x01>; + }; + + psci { + compatible = "arm,psci-0.2"; + method = "smc"; + }; + + pmu { + compatible = "arm,armv8-pmuv3"; + interrupts = <0x01 0x17 0xf04>; + }; + + clock0 { + compatible = "vendor,ss626v100_clock\0syscon"; + #clock-cells = <0x01>; + #reset-cells = <0x02>; + #address-cells = <0x01>; + #size-cells = <0x01>; + reg = <0x00 0x11010000 0x00 0x4600>; + phandle = <0x04>; + }; + + smmu_npu@14410000 { + compatible = "arm,smmu-v3"; + reg = <0x00 0x14410000 0x00 0x40000>; + interrupts = <0x00 0xbe 0x04>; + interrupt-names = "combined"; + #iommu-cells = <0x01>; + vendor,broken-prefetch-cmd; + phandle = <0x02>; + }; + + svm_npu@14400000 { + compatible = "vendor,svm"; + crg-base = <0x11010000>; + crg-size = <0x10000>; + npu_crg_6560 = <0x6680>; + ranges; + #size-cells = <0x02>; + #address-cells = <0x02>; + + svm_aicore { + reg = <0x00 0xdbba00 0x00 0x10000>; + iommus = <0x02 0x01>; + dma-can-stall; + pasid-num-bits = <0x10>; + }; + + svm_hwts { + iommus = <0x02 0x02>; + dma-can-stall; + pasid-bits = <0x10>; + vendor,smmu_bypass; + }; + }; + + firmware { + + optee { + compatible = "linaro,optee-tz"; + method = "smc"; + }; + }; + + ipcm@1301c000 { + compatible = "vendor,ipcm-interrupt"; + interrupt-parent = <0x01>; + interrupts = <0x00 0x22 0x04>; + reg = <0x00 0x1301c000 0x00 0x1000>; + status = "okay"; + }; + + soc { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "simple-bus"; + device_type = "soc"; + ranges = <0x00 0x00 0x00 0xffffffff>; + + clk_3m { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x2dc6c0>; + phandle = <0x03>; + }; + + amba { + compatible = "arm,amba-bus"; + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges; + + arm-timer { + compatible = "arm,armv8-timer"; + interrupts = <0x01 0x0d 0xf04 0x01 0x0e 0xf04>; + clock-frequency = <0x16e3600>; + always-on; + }; + + timer@11000000 { + compatible = "vendor,bsp_sp804"; + reg = <0x11000000 0x1000 0x11001000 0x1000 0x11002000 0x1000 0x11003000 0x1000 0x11004000 0x1000>; + interrupts = <0x00 0x08 0x04 0x00 0x09 0x04 0x00 0x0a 0x04 0x00 0x0b 0x04 0x00 0x0c 0x04>; + clocks = <0x03>; + clock-names = "apb_pclk"; + }; + + uart@11040000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11040000 0x1000>; + interrupts = <0x00 0x28 0x04>; + clocks = <0x04 0x53>; + clock-names = "apb_pclk"; + resets = <0x04 0x4180 0x00>; + reset-names = "bsp_uart_rst"; + status = "okay"; + }; + + uart@11041000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11041000 0x1000>; + interrupts = <0x00 0x29 0x04>; + clocks = <0x04 0x54>; + clock-names = "apb_pclk"; + resets = <0x04 0x4188 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + uart@11042000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11042000 0x1000>; + interrupts = <0x00 0x2a 0x04>; + clocks = <0x04 0x55>; + clock-names = "apb_pclk"; + resets = <0x04 0x4190 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + uart@11043000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11043000 0x1000>; + interrupts = <0x00 0x2b 0x04>; + clocks = <0x04 0x56>; + clock-names = "apb_pclk"; + resets = <0x04 0x4198 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + uart@11044000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11044000 0x1000>; + interrupts = <0x00 0x2c 0x04>; + clocks = <0x04 0x57>; + clock-names = "apb_pclk"; + resets = <0x04 0x41a0 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + uart@11045000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11045000 0x1000>; + interrupts = <0x00 0x2d 0x04>; + clocks = <0x04 0x58>; + clock-names = "apb_pclk"; + resets = <0x04 0x41a8 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + uart@11046000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11046000 0x1000>; + interrupts = <0x00 0x2e 0x04>; + clocks = <0x04 0x59>; + clock-names = "apb_pclk"; + resets = <0x04 0x41b0 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + uart@11047000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x11047000 0x1000>; + interrupts = <0x00 0x2f 0x04>; + clocks = <0x04 0x5a>; + clock-names = "apb_pclk"; + resets = <0x04 0x41b8 0x00>; + reset-names = "bsp_uart_rst"; + status = "disabled"; + }; + + i2c@11060000 { + compatible = "vendor,i2c"; + reg = <0x11060000 0x1000>; + clocks = <0x04 0x5f>; + clock-rate = <0x5f5e100>; + clock-frequency = <0x186a0>; + resets = <0x04 0x4280 0x00>; + reset-names = "i2c_reset"; + #address-cells = <0x01>; + #size-cells = <0x00>; + status = "okay"; + }; + + i2c@11061000 { + compatible = "vendor,i2c"; + reg = <0x11061000 0x1000>; + clocks = <0x04 0x60>; + clock-rate = <0x5f5e100>; + clock-frequency = <0x186a0>; + resets = <0x04 0x4288 0x00>; + reset-names = "i2c_reset"; + status = "okay"; + }; + + spi@11070000 { + compatible = "arm,pl022\0arm,primecell"; + arm,primecell-periphid = <0x800022>; + reg = <0x11070000 0x1000>; + interrupts = <0x00 0x38 0x04>; + clocks = <0x04 0x61>; + clock-names = "apb_pclk"; + resets = <0x04 0x4480 0x00>; + reset-names = "bsp_spi_rst"; + #address-cells = <0x01>; + spi,slave_mode = <0x00>; + #size-cells = <0x00>; + status = "okay"; + num-cs = <0x01>; + + spidev@0 { + compatible = "rohm,dh2228fv"; + reg = <0x00>; + pl022,interface = <0x00>; + pl022,com-mode = <0x00>; + spi-max-frequency = <0x17d7840>; + }; + }; + + spi@11071000 { + compatible = "arm,pl022\0arm,primecell"; + arm,primecell-periphid = <0x800022>; + reg = <0x11071000 0x1000>; + interrupts = <0x00 0x39 0x04>; + clocks = <0x04 0x62>; + clock-names = "apb_pclk"; + resets = <0x04 0x4488 0x00>; + reset-names = "bsp_spi_rst"; + #address-cells = <0x01>; + spi,slave_mode = <0x00>; + #size-cells = <0x00>; + status = "okay"; + num-cs = <0x01>; + + spidev@0 { + compatible = "rohm,dh2228fv"; + reg = <0x00>; + pl022,interface = <0x00>; + pl022,com-mode = <0x00>; + spi-max-frequency = <0x17d7840>; + }; + }; + + gpio_chip@11090000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11090000 0x1000>; + interrupts = <0x00 0x3e 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11091000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11091000 0x1000>; + interrupts = <0x00 0x3f 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11092000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11092000 0x1000>; + interrupts = <0x00 0x40 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11093000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11093000 0x1000>; + interrupts = <0x00 0x41 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11094000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11094000 0x1000>; + interrupts = <0x00 0x42 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11095000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11095000 0x1000>; + interrupts = <0x00 0x43 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11096000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11096000 0x1000>; + interrupts = <0x00 0x44 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11097000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11097000 0x1000>; + interrupts = <0x00 0x45 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11098000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11098000 0x1000>; + interrupts = <0x00 0x46 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@11099000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x11099000 0x1000>; + interrupts = <0x00 0x47 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@1109A000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x1109a000 0x1000>; + interrupts = <0x00 0x48 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@1109B000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x1109b000 0x1000>; + interrupts = <0x00 0x49 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@1109C000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x1109c000 0x1000>; + interrupts = <0x00 0x4a 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@1109D000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x1109d000 0x1000>; + interrupts = <0x00 0x4b 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + + gpio_chip@1109E000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x1109e000 0x1000>; + interrupts = <0x00 0x4c 0x04>; + #gpio-cells = <0x02>; + clocks = <0x04 0x23>; + clock-names = "apb_pclk"; + status = "okay"; + }; + }; + + sys@11010000 { + compatible = "vendor,sys"; + reg = <0x11014600 0xba00 0x11020000 0x4000 0x11130000 0x10000 0x11024000 0x5000>; + reg-names = "crg\0sys\0ddr\0misc"; + }; + + misc-controller@11024000 { + compatible = "vendor,miscctrl\0syscon"; + reg = <0x11024000 0x5000>; + }; + + ioconfig0@10ff0000 { + compatible = "vendor,ioconfig\0syscon"; + reg = <0x10ff0000 0x10000>; + phandle = <0x07>; + }; + + ioconfig1@17ca0000 { + compatible = "vendor,ioconfig\0syscon"; + reg = <0x17ca0000 0x10000>; + phandle = <0x08>; + }; + + flash-memory-controller@10000000 { + compatible = "vendor,fmc"; + reg = <0x10000000 0x1000 0xf000000 0x1000000>; + reg-names = "control\0memory"; + clocks = <0x04 0x50>; + max-dma-size = <0x2000>; + #address-cells = <0x01>; + #size-cells = <0x00>; + + spi_nor_controller { + compatible = "vendor,fmc-spi-nor"; + assigned-clocks = <0x04 0x50>; + assigned-clock-rates = <0x16e3600>; + #address-cells = <0x01>; + #size-cells = <0x00>; + + sfc@0 { + compatible = "jedec,spi-nor"; + reg = <0x00>; + spi-max-frequency = <0x9896800>; + m25p,fast-read; + }; + }; + + spi_nand_controller { + compatible = "vendor,fmc-spi-nand"; + assigned-clocks = <0x04 0x50>; + assigned-clock-rates = <0x16e3600>; + #address-cells = <0x01>; + #size-cells = <0x00>; + + nand@0 { + compatible = "jedec,spi-nand"; + reg = <0x00>; + spi-max-frequency = <0x9896800>; + }; + }; + }; + + mdio@102903c0 { + compatible = "vendor,gemac-mdio"; + reg = <0x102903c0 0x20>; + clocks = <0x04 0x5b>; + resets = <0x04 0x37cc 0x00>; + reset-names = "phy_reset"; + #address-cells = <0x01>; + #size-cells = <0x00>; + + ethernet-phy@1 { + reg = <0x01>; + phandle = <0x05>; + }; + }; + + mdio@102a03c0 { + compatible = "vendor,gemac-mdio"; + reg = <0x102a03c0 0x20>; + clocks = <0x04 0x5d>; + resets = <0x04 0x380c 0x00>; + reset-names = "phy_reset"; + #address-cells = <0x01>; + #size-cells = <0x00>; + + ethernet-phy@3 { + reg = <0x03>; + phandle = <0x06>; + }; + }; + + ethernet@10290000 { + compatible = "vendor,gmac-v5"; + reg = <0x10290000 0x1000 0x1029300c 0x04>; + interrupts = <0x00 0x68 0x04 0x00 0x69 0x04 0x00 0x6a 0x04 0x00 0x6b 0x04 0x00 0x6c 0x04 0x00 0x6d 0x04 0x00 0x6e 0x04 0x00 0x6f 0x04>; + clocks = <0x04 0x5b 0x04 0x5c>; + clock-names = "gmac_clk\0macif_clk"; + resets = <0x04 0x37c4 0x00 0x04 0x37c0 0x00>; + reset-names = "port_reset\0macif_reset"; + rss-cpu = <0x01 0x02 0x03 0x04>; + mac-address = [00 00 00 00 00 00]; + lro-enable; + phy-handle = <0x05>; + phy-mode = "rgmii-id"; + }; + + ethernet@102a0000 { + compatible = "vendor,gmac-v5"; + reg = <0x102a0000 0x1000 0x102a300c 0x04>; + interrupts = <0x00 0x70 0x04 0x00 0x71 0x04 0x00 0x72 0x04 0x00 0x73 0x04 0x00 0x74 0x04 0x00 0x75 0x04 0x00 0x76 0x04 0x00 0x77 0x04>; + clocks = <0x04 0x5d 0x04 0x5e>; + clock-names = "gmac_clk\0macif_clk"; + resets = <0x04 0x3804 0x00 0x04 0x3800 0x00>; + reset-names = "port_reset\0macif_reset"; + rss-cpu = <0x01 0x02 0x03 0x04>; + mac-address = [00 00 00 00 00 00]; + lro-enable; + phy-handle = <0x06>; + phy-mode = "rgmii-id"; + }; + + phy { + compatible = "vendor,usb-phy"; + reg = <0x11010000 0x10000>; + phyid = <0x00>; + }; + + xhci_0@0x10300000 { + compatible = "generic-xhci"; + reg = <0x10300000 0x10000>; + interrupts = <0x00 0x90 0x04>; + usb2-lpm-disable; + }; + + xhci_1@0x10340000 { + compatible = "generic-xhci"; + reg = <0x10340000 0x10000>; + interrupts = <0x00 0x91 0x04>; + usb2-lpm-disable; + }; + + eMMC@0x10020000 { + compatible = "vendor,sdhci"; + reg = <0x10020000 0x1000>; + interrupts = <0x00 0x63 0x04>; + clocks = <0x04 0x51>; + clock-names = "mmc_clk"; + resets = <0x04 0x34c0 0x10 0x04 0x34c0 0x11 0x04 0x34c0 0x12 0x04 0x34c0 0x01 0x04 0x34c0 0x00 0x04 0x34c4 0x01>; + reset-names = "crg_reset\0crg_tx_reset\0crg_rx_reset\0crg_ahb_clk_enable\0crg_clk_enable\0dll_reset"; + max-frequency = <0xbb65a20>; + crg_regmap = <0x04>; + non-removable; + iocfg_regmap = <0x07>; + bus-width = <0x08>; + cap-mmc-highspeed; + mmc-hs200-1_8v; + mmc-hs400-1_8v; + mmc-hs400-enhanced-strobe; + cap-mmc-hw-reset; + no-sdio; + no-sd; + devid = <0x00>; + status = "okay"; + }; + + SDIO@0x10030000 { + compatible = "vendor,sdhci"; + reg = <0x10030000 0x1000>; + interrupts = <0x00 0x60 0x04>; + clocks = <0x04 0x52>; + clock-names = "mmc_clk"; + resets = <0x04 0x35c0 0x10 0x04 0x35c0 0x11 0x04 0x35c0 0x12 0x04 0x35c0 0x01 0x04 0x35c0 0x00 0x04 0x35c4 0x01>; + reset-names = "crg_reset\0crg_tx_reset\0crg_rx_reset\0crg_ahb_clk_enable\0crg_clk_enable\0dll_reset"; + max-frequency = <0xbb65a20>; + crg_regmap = <0x04>; + iocfg_regmap = <0x08>; + bus-width = <0x04>; + cap-sd-highspeed; + full-pwr-cycle; + disable-wp; + no-emmc; + no-sd; + devid = <0x01>; + status = "okay"; + }; + + pcie0@0x103d0000 { + device_type = "pcie"; + compatible = "vendor,pcie"; + #size-cells = <0x02>; + #address-cells = <0x03>; + #interrupt-cells = <0x01>; + bus-range = <0x00 0xff>; + reg = <0x00 0x103d0000 0x00 0x2000>; + ranges = <0x2000000 0x00 0x28000000 0x28000000 0x00 0x8000000>; + interrupt-map-mask = <0x00 0x00 0x00 0x07>; + interrupt-map = <0x00 0x00 0x00 0x01 0x01 0x00 0x7c 0x04 0x00 0x00 0x00 0x02 0x01 0x00 0x7d 0x04 0x00 0x00 0x00 0x03 0x01 0x00 0x7e 0x04 0x00 0x00 0x00 0x04 0x01 0x00 0x7f 0x04>; + interrupts = <0x00 0x81 0x04>; + interrupt-names = "msi"; + pcie_controller = <0x00>; + dev_mem_size = <0x8000000>; + dev_conf_size = <0x8000000>; + sys_ctrl_base = <0x11020000>; + pcie_dbi_base = <0x103d0000>; + ep_conf_base = <0x20000000>; + pcie_clk_rest_reg = <0x3a40>; + status = "okay"; + }; + + pcie1@0x103e0000 { + device_type = "pcie"; + compatible = "vendor,pcie"; + #size-cells = <0x02>; + #address-cells = <0x03>; + #interrupt-cells = <0x01>; + bus-range = <0x00 0xff>; + reg = <0x00 0x103e0000 0x00 0x2000>; + ranges = <0x2000000 0x00 0x38000000 0x38000000 0x00 0x8000000>; + interrupt-map-mask = <0x00 0x00 0x00 0x07>; + interrupt-map = <0x00 0x00 0x00 0x01 0x01 0x00 0x87 0x04 0x00 0x00 0x00 0x02 0x01 0x00 0x88 0x04 0x00 0x00 0x00 0x03 0x01 0x00 0x89 0x04 0x00 0x00 0x00 0x04 0x01 0x00 0x8a 0x04>; + interrupts = <0x00 0x8c 0x04>; + interrupt-names = "msi"; + pcie_controller = <0x01>; + dev_mem_size = <0x8000000>; + dev_conf_size = <0x8000000>; + sys_ctrl_base = <0x11020000>; + pcie_dbi_base = <0x103e0000>; + ep_conf_base = <0x30000000>; + pcie_clk_rest_reg = <0x3a60>; + status = "okay"; + }; + + pcie_mcc@0x0 { + compatible = "vendor,pcie_mcc"; + interrupts = <0x00 0x7c 0x04 0x00 0x7d 0x04 0x00 0x7e 0x04 0x00 0x7f 0x04 0x00 0x80 0x04 0x00 0x00 0x04 0x00 0x87 0x04 0x00 0x88 0x04 0x00 0x89 0x04 0x00 0x8a 0x04 0x00 0x8b 0x04>; + }; + + phy@0x10390000 { + compatible = "vendor,sata-phy"; + reg = <0x10390000 0x10000>; + ports_num_max = <0x04>; + #phy-cells = <0x00>; + phandle = <0x09>; + }; + + sata@0x10390000 { + compatible = "vendor,ahci"; + reg = <0x10390000 0x1000>; + interrupts = <0x00 0x94 0x04>; + phys = <0x09>; + phy-names = "sata-phy"; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + edma-controller@10280000 { + compatible = "vendor,edmacv310"; + reg = <0x10280000 0x1000>; + interrupts = <0x00 0x64 0x04>; + clocks = <0x04 0x63 0x04 0x64>; + clock-names = "apb_pclk\0axi_aclk"; + #clock-cells = <0x02>; + resets = <0x04 0x2a80 0x00>; + reset-names = "dma-reset"; + dma-requests = <0x20>; + dma-channels = <0x08>; + devid = <0x00>; + #dma-cells = <0x02>; + status = "disabled"; + }; + + vi@0x17400000 { + compatible = "vendor,vi"; + reg = <0x17400000 0x40000 0x11003020 0x20>; + reg-names = "VI_CAP\0vi_timer"; + interrupts = <0x00 0xbb 0x04 0x00 0x0b 0x04>; + interrupt-names = "VI_CAP\0vi_timer"; + }; + + vpss@0x17900000 { + compatible = "vendor,vpss"; + reg = <0x17900000 0x10000 0x17910000 0x10000 0x17920000 0x10000>; + reg-names = "vpss0\0vpss1\0vpss2"; + interrupts = <0x00 0xac 0x04 0x00 0xad 0x04 0x00 0xae 0x04>; + interrupt-names = "vpss0\0vpss1\0vpss2"; + }; + + vgs@0x17240000 { + compatible = "vendor,vgs"; + reg = <0x17240000 0x10000 0x17250000 0x10000>; + reg-names = "vgs0\0vgs1"; + interrupts = <0x00 0xa8 0x04 0x00 0xaa 0x04>; + interrupt-names = "vgs0\0vgs1"; + }; + + gdc@0x172c0000 { + compatible = "vendor,gdc"; + reg = <0x172c0000 0x10000>; + reg-names = "gdc"; + interrupts = <0x00 0xba 0x04>; + interrupt-names = "gdc"; + }; + + vo@0x17A00000 { + compatible = "vendor,vo"; + reg = <0x17a00000 0x40000>; + reg-names = "vo"; + interrupts = <0x00 0x9f 0x04 0x00 0xa0 0x04>; + interrupt-names = "vo"; + }; + + hdmi@0x17B40000 { + compatible = "vendor,hdmi"; + reg = <0x17b40000 0x20000 0x17bc0000 0x10000 0x17b60000 0x20000 0x17bd0000 0x10000>; + reg-names = "hdmi0\0phy0\0hdmi1\0phy1"; + interrupts = <0x00 0xa2 0x04 0x00 0xa3 0x04 0x00 0xa4 0x04 0x00 0xa5 0x04 0x00 0xa6 0x04 0x00 0xa7 0x04>; + interrupt-names = "tx0_aon\0tx0_pwd\0tx0_sec\0tx1_aon\0tx1_pwd\0tx1_sec"; + }; + + venc@0x17140000 { + compatible = "vendor,vedu"; + reg = <0x17140000 0x10000 0x171c0000 0x10000>; + reg-names = "vedu0\0jpge"; + interrupts = <0x00 0xb5 0x04 0x00 0xb0 0x04>; + interrupt-names = "vedu0\0jpge"; + }; + + vdh@0x17100000 { + compatible = "vendor,vdh"; + reg = <0x17100000 0x10000 0x17110000 0x10000>; + reg-names = "vdh0_scd\0vdh1_scd"; + interrupts = <0x00 0xd0 0x04 0x00 0xd1 0x04 0x00 0xd2 0x04 0x00 0xd4 0x04 0x00 0xd5 0x04 0x00 0xd6 0x04 0x00 0xd7 0x04 0x00 0xd8 0x04 0x00 0xda 0x04 0x00 0xdb 0x04>; + interrupt-names = "vdh0_bsp\0vdh0_pxp\0vdh0_pxp1\0scd0\0mdma0\0vdh1_bsp\0vdh1_pxp\0vdh1_pxp1\0scd1\0mdma1"; + }; + + jpegd@0x17180000 { + compatible = "vendor,jpegd"; + reg = <0x17180000 0x10000 0x17190000 0x10000>; + reg-names = "jpegd0\0jpegd1"; + interrupts = <0x00 0xb1 0x04 0x00 0xb2 0x04>; + interrupt-names = "jpegd0\0jpegd1"; + }; + + vda@0x170c0000 { + compatible = "vendor,vda"; + reg = <0x170c0000 0x10000>; + reg-names = "vda"; + interrupts = <0x00 0xb4 0x04>; + interrupt-names = "vda"; + }; + + npu@0x14000000 { + compatible = "vendor,npu"; + reg = <0x14000000 0x10000>; + reg-names = "npu"; + interrupts = <0x00 0xcb 0x04 0x00 0xca 0x04>; + interrupt-names = "npu_ns\0npu_s"; + }; + + ive@0x17000000 { + compatible = "vendor,ive"; + reg = <0x17000000 0x10000 0x17010000 0x10000 0x17020000 0x10000>; + reg-names = "ive\0kcf0\0kcf1"; + interrupts = <0x00 0xb7 0x04 0x00 0xb8 0x04 0x00 0xb9 0x04>; + interrupt-names = "ive\0kcf0\0kcf1"; + }; + + mau@0x170E0000 { + compatible = "vendor,mau"; + reg = <0x170e0000 0x10000>; + reg-names = "mau0"; + interrupts = <0x00 0xb3 0x04>; + interrupt-names = "mau0"; + }; + + aiao@17c00000 { + compatible = "vendor,aiao"; + reg = <0x17c40000 0x10000 0x17c00000 0x10000>; + reg-names = "acodec\0aiao"; + interrupts = <0x00 0xa1 0x04>; + interrupt-names = "AIO"; + }; + + tde@0x17280000 { + compatible = "vendor,tde"; + reg = <0x17280000 0x10000>; + reg-names = "tde"; + interrupts = <0x00 0xaf 0x04>; + interrupt-names = "tde_osr_isr"; + }; + + cipher@0x10100000 { + compatible = "vendor,cipher"; + reg = <0x10100000 0x10000>; + reg-names = "cipher"; + interrupts = <0x00 0x4f 0x04 0x00 0x50 0x04 0x00 0x52 0x04 0x00 0x53 0x04>; + interrupt-names = "nsec_spacc\0sec_spacc\0nsec_pke\0sec_pke"; + }; + + klad@0x10110000 { + compatible = "vendor,klad"; + reg = <0x10110000 0x1000>; + reg-names = "klad"; + interrupts = <0x00 0x55 0x04 0x00 0x56 0x04 0x00 0x57 0x04 0x00 0x58 0x04>; + interrupt-names = "nsec_rkp\0sec_rkp\0nsec_klad\0sec_klad"; + }; + + otp@0x10120000 { + compatible = "vendor,otp"; + reg = <0x10120000 0x1000>; + reg-names = "otp"; + }; + + ir@0x110F0000 { + compatible = "vendor,ir"; + reg = <0x110f0000 0x10000>; + reg-names = "ir"; + interrupts = <0x00 0x02 0x04>; + interrupt-names = "ir"; + }; + + wdg@0x11030000 { + compatible = "vendor,wdg"; + reg = <0x11030000 0x1000>; + reg-names = "wdg0"; + interrupts = <0x00 0x04 0x04>; + interrupt-names = "wdg"; + }; + + pwm@0x11080000 { + compatible = "vendor,pwm"; + reg = <0x11080000 0x1000>; + reg-names = "pwm0"; + clocks = <0x04 0x67>; + clock-names = "pwm0"; + resets = <0x04 0x4584 0x00>; + reset-names = "pwm0"; + status = "okay"; + }; + }; + + aliases { + serial0 = "/soc/amba/uart@11040000"; + serial1 = "/soc/amba/uart@11041000"; + serial2 = "/soc/amba/uart@11042000"; + serial3 = "/soc/amba/uart@11043000"; + serial4 = "/soc/amba/uart@11044000"; + serial5 = "/soc/amba/uart@11045000"; + serial6 = "/soc/amba/uart@11046000"; + serial7 = "/soc/amba/uart@11047000"; + i2c0 = "/soc/amba/i2c@11060000"; + i2c1 = "/soc/amba/i2c@11061000"; + spi0 = "/soc/amba/spi@11070000"; + spi1 = "/soc/amba/spi@11071000"; + gpio0 = "/soc/amba/gpio_chip@11090000"; + gpio1 = "/soc/amba/gpio_chip@11091000"; + gpio2 = "/soc/amba/gpio_chip@11092000"; + gpio3 = "/soc/amba/gpio_chip@11093000"; + gpio4 = "/soc/amba/gpio_chip@11094000"; + gpio5 = "/soc/amba/gpio_chip@11095000"; + gpio6 = "/soc/amba/gpio_chip@11096000"; + gpio7 = "/soc/amba/gpio_chip@11097000"; + gpio8 = "/soc/amba/gpio_chip@11098000"; + gpio9 = "/soc/amba/gpio_chip@11099000"; + gpio10 = "/soc/amba/gpio_chip@1109A000"; + gpio11 = "/soc/amba/gpio_chip@1109B000"; + gpio12 = "/soc/amba/gpio_chip@1109C000"; + gpio13 = "/soc/amba/gpio_chip@1109D000"; + gpio14 = "/soc/amba/gpio_chip@1109E000"; + }; + + chosen { + bootargs = "earlycon=pl011,0x11040000 mem=512M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock2 rootfstype=yaffs2 rw mtdparts=nand:1M(boot),9M(kernel),32M(rootfs),1M(this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!)"; + linux,initrd-start = <0x60000040>; + linux,initrd-end = <0x61000000>; + }; + + cpus { + #address-cells = <0x02>; + #size-cells = <0x00>; + + cpu@0 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x00>; + enable-method = "psci"; + }; + + cpu@1 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x100>; + enable-method = "psci"; + }; + + cpu@2 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x200>; + enable-method = "psci"; + }; + + cpu@3 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x300>; + enable-method = "psci"; + }; + + cpu@4 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x400>; + enable-method = "psci"; + }; + + cpu@5 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x500>; + enable-method = "psci"; + }; + + cpu@6 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x600>; + enable-method = "psci"; + }; + + cpu@7 { + compatible = "arm,cortex-a55"; + device_type = "cpu"; + reg = <0x00 0x700>; + enable-method = "psci"; + }; + }; + + memory { + device_type = "memory"; + reg = <0x00 0x44000000 0x01 0xf0000000>; + }; +}; diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/files/tf-a/0001-fix-compilation-errors-atf-asm.patch b/bsp/meta-hisilicon/recipes-kernel/linux/files/tf-a/0001-fix-compilation-errors-atf-asm.patch new file mode 100644 index 0000000000000000000000000000000000000000..21d83a1abbc2ee942df5c6d90b0879fd08471f0d --- /dev/null +++ b/bsp/meta-hisilicon/recipes-kernel/linux/files/tf-a/0001-fix-compilation-errors-atf-asm.patch @@ -0,0 +1,13 @@ +--- a/bl31/aarch64/bl31_entrypoint.S 2024-07-31 08:43:14.814966080 +0000 ++++ b/bl31/aarch64/bl31_entrypoint.S 2024-07-31 08:56:12.780141461 +0000 +@@ -27,8 +27,8 @@ func bl31_entrypoint + * Stash the previous bootloader arguments x0 - x3 for later use. + * --------------------------------------------------------------- + */ +- ldr x0, =OS_SYS_CTRL_REG2 +- ldr x1, =OS_SYS_CTRL_REG4 ++ ldr x0, =0x11020308 ++ ldr x1, =0x11020310 + ldr x20, [x0] + ldr x21, [x1] + mov x22, #0 diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/hiedge1-tf-a.bb b/bsp/meta-hisilicon/recipes-kernel/linux/hiedge1-tf-a.bb new file mode 100644 index 0000000000000000000000000000000000000000..07d0b2fea34b93bceef5b31e083afca93ce7ca28 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-kernel/linux/hiedge1-tf-a.bb @@ -0,0 +1,44 @@ +SUMMARY = "ARM Trusted Firmware for hiedge1" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +BPN = "arm-trusted-firmware" +PV = "2.5" + +OPENEULER_LOCAL_NAME = "HiEdge-driver" + +# 0001-fix-compilation-errors-atf-asm.patch is a workaround to fix ld err: +# undefined reference to `OS_SYS_CTRL_REG2' +# undefined reference to `OS_SYS_CTRL_REG4' +SRC_URI = "file://HiEdge-driver/firmware/${BP}.tar.gz \ + file://HiEdge-driver/firmware/${BP}.patch \ + file://tf-a/0001-add-LDFLAGS-to-fix-compilation-errors.patch \ + file://tf-a/0001-fix-compilation-errors-atf-asm.patch \ + " + +SRC_URI[md5sum] = "23d7f30f393a20dcced3df1284ba0daa" +SRC_URI[sha256sum] = "f178c722374b0cdf2d7ca3ab986d494e02c49b4690dd8b1cf2d1c9a5388b374e" + +# override LDFLAGS to fix compilation error: "aarch64-openeuler-linux-gnu-ld.bfd: unrecognized option '-Wl,-O1'" +# add --no-warn-rwx-segments to avoid: warning: has a LOAD segment with RWX permissions +export LDFLAGS=" --no-warn-rwx-segments " + +# tf-a requires dtc native +DEPENDS += "dtc-native" + +# uImage as BL33 +DEPENDS += "virtual/kernel" + +EXTRA_OEMAKE="CROSS_COMPILE=${TARGET_PREFIX} " + +do_compile:append() { + oe_runmake PLAT=ss626v100 SPD=none BL33=${WORKDIR}/recipe-sysroot/linux-img/uImage-edge CCI_UP=0 DEBUG=0 BL33_SEC=0 fip + cp ${B}/build/ss626v100/release/fip.bin ${B}/build/ss626v100/release/fip-edge.bin +} + +do_install:append() { + install -d ${D}/boot/ + install ${B}/build/ss626v100/release/fip-edge.bin ${D}/boot/kernel-edge +} + +FILES:${PN} += " /boot/kernel-edge " diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/linux-hi3093-mpu.inc b/bsp/meta-hisilicon/recipes-kernel/linux/linux-hi3093-mpu.inc index 5ce52464d7bb97b4cc189b91931782e3673e28ee..2ac4b923e92747df438b680c20ec0d31c02aaedc 100644 --- a/bsp/meta-hisilicon/recipes-kernel/linux/linux-hi3093-mpu.inc +++ b/bsp/meta-hisilicon/recipes-kernel/linux/linux-hi3093-mpu.inc @@ -52,7 +52,8 @@ do_copy_headers() { # Due to the large number of patch hunks, # yocto's built-in patch mechanism has abnormal failure issues. # Here is a solution to avoid this issue - grep "Missing single sector read for large sector size" ${S}/drivers/mmc/core/block.c || patch -p1 < ${WORKDIR}/mpu_solution/src/patches/openEuler/kernel-22.03-lts-sp1-mmc.patch + grep "int disable_multi," ${S}/drivers/mmc/core/block.c || patch -p1 < ${WORKDIR}/mpu_solution/src/patches/openEuler/kernel-22.03-lts-sp3-mmc.patch + grep "#include " ${S}/hibmc/hibmc_drm_drv.c || patch -p1 < ${WORKDIR}/mpu_solution/src/patches/openEuler/kernel-gpu-drm-hisilicon-hibmc.patch cd - cp -rf ${WORKDIR}/mpu_solution/platform/securec/include/* ${S}/include/linux mkdir -p ${S}/include/linux/kbox diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/linux-hiedge1.inc b/bsp/meta-hisilicon/recipes-kernel/linux/linux-hiedge1.inc new file mode 100644 index 0000000000000000000000000000000000000000..4cc6b21a355bbf0b722f3043500785da73efe563 --- /dev/null +++ b/bsp/meta-hisilicon/recipes-kernel/linux/linux-hiedge1.inc @@ -0,0 +1,87 @@ +inherit kernel-yocto + +# add recipes-kernel path to find patch and defconfig +FILESEXTRAPATHS:append := "${THISDIR}/files/:" + +# for mkimage +DEPENDS += "u-boot-tools-native dtc-native" + +OPENEULER_REPO_NAMES = "kernel-5.10-tag626 src-kernel-5.10-tag626 HiEdge-driver" + +SRC_URI = "file://kernel-5.10-tag626 \ + file://HiEdge-driver/linux/ss626v100-eulerkernel-d8e3bcbbecf.patch \ + file://dtbs/ss626v100-demb-emmc.dts \ + file://meta-data;type=kmeta;destsuffix=meta-data \ +" + +# remove default patch +SRC_URI:remove = " \ + file://patches/${ARCH}/0001-arm64-add-zImage-support-for-arm64.patch \ +" + +# add BL31 +SRC_URI:append = " file://HiEdge-driver/firmware/arm-trusted-firmware-2.5.tar.gz " + +S = "${WORKDIR}/kernel-5.10-tag626" + +## handling for kernel meta data +# the original get_dirs_with_fragments will include OPENEULER_SP_DIR +# so that all the files under OPENEULER_SP_DIR will be in the file-checksums +# of do_kernel_metadata, which is not necessary +def get_dirs_with_metadata(d): + extrapaths = [] + extrafiles = [] + extrapathsvalue = (d.getVar("FILESEXTRAPATHS") or "") + + # Remove global openeuler src dir + openeuler_src_dir = d.getVar("OPENEULER_SP_DIR") + extrapathsvalue = extrapathsvalue.replace(openeuler_src_dir, "") + + # Remove default flag which was used for checking + extrapathsvalue = extrapathsvalue.replace("__default:", "") + extrapaths = extrapathsvalue.split(":") + + # add scc files + extrapaths += find_sccs(d) + + # add patches + extrapaths += find_patches(d, '') + for path in extrapaths: + if path and path + ":True" not in extrafiles: + extrafiles.append(path + ":" + str(os.path.exists(path))) + + return " ".join(extrafiles) + +# override the original get_dirs_with_fragments in kernel-yocto.bbclass +do_kernel_metadata[file-checksums] = "${@get_dirs_with_metadata(d)}" + + +# no external defconfig +OPENEULER_KERNEL_CONFIG = "" +# use in-tree defconfig, the defconfig is in src tree +# after patches are unpatched +KBUILD_DEFCONFIG = "ss626v100_emmc_defconfig" + +# add method to do_compile task to produce bootable Image +do_compile:append(){ + mkimage -A arm64 -O linux -T kernel -C none -a 0x000000 -e 0x000000 -n "Linux-5.10.0" -d ${KERNEL_OUTPUT_DIR}/Image uImage-tmp + oe_runmake dtbs + dtc -I dts -O dtb ${WORKDIR}/dtbs/ss626v100-demb-emmc.dts -o ${WORKDIR}/ss626.dtb + cat uImage-tmp ${WORKDIR}/ss626.dtb > ${KERNEL_OUTPUT_DIR}/uImage-edge +} + +# uImage as bl33, we need to use it to build the fip.bin. So add uImage to SYSROOT_DIR +# Since sysroot_stage_all() is rewritten as empty in meta/classes/kernel.bbclass, +# we can't use "SYSROOT_DIRS" directly, here we write a SYSROOT_PREPROCESS_FUNCS to add uImage +SYSROOT_DIRS += "/linux-img" +FILES:${KERNEL_PACKAGE_NAME} += "/linux-img" +do_install:append() { + install -d ${D}/linux-img + install -m 0644 ${KERNEL_OUTPUT_DIR}/uImage-edge ${D}/linux-img/uImage-edge +} + +SYSROOT_PREPROCESS_FUNCS += "additional_populate_sysroot" +additional_populate_sysroot() { + sysroot_stage_dir ${D}/linux-img ${SYSROOT_DESTDIR}/linux-img +} + diff --git a/bsp/meta-hisilicon/recipes-kernel/linux/linux-openeuler.bbappend b/bsp/meta-hisilicon/recipes-kernel/linux/linux-openeuler.bbappend index e79121ce137fd1ad2679d73186119979635861c8..87721b69fb8d8051b42c106237fc941e29c67b9f 100644 --- a/bsp/meta-hisilicon/recipes-kernel/linux/linux-openeuler.bbappend +++ b/bsp/meta-hisilicon/recipes-kernel/linux/linux-openeuler.bbappend @@ -1,4 +1,4 @@ # add COMPATIBLE_MACHINE -COMPATIBLE_MACHINE = "hi3093|hieulerpi1" +COMPATIBLE_MACHINE = "hi3093|hieulerpi1|hiedge1" require recipes-kernel/linux/${@bb.utils.contains('DISTRO_FEATURES', 'mpu_solution', 'linux-hi3093-mpu.inc', 'linux-${MACHINE}.inc', d)} diff --git a/bsp/meta-kunpeng/conf/layer.conf b/bsp/meta-kunpeng/conf/layer.conf new file mode 100644 index 0000000000000000000000000000000000000000..c34f1774c0528b35444bbb1bcfa7ed337990dd66 --- /dev/null +++ b/bsp/meta-kunpeng/conf/layer.conf @@ -0,0 +1,14 @@ +# 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 += "meta-kunpeng" +BBFILE_PATTERN_meta-kunpeng := "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-kunpeng = "7" + +LAYERVERSION_meta-kunpeng = "1" +LAYERDEPENDS_meta-kunpeng = "core" +LAYERSERIES_COMPAT_meta-kunpeng = "kirkstone" diff --git a/bsp/meta-kunpeng/conf/machine/kp920.conf b/bsp/meta-kunpeng/conf/machine/kp920.conf new file mode 100644 index 0000000000000000000000000000000000000000..705459ecc1e33513b48672b20b26e6c3dc4494b2 --- /dev/null +++ b/bsp/meta-kunpeng/conf/machine/kp920.conf @@ -0,0 +1,41 @@ +require conf/machine/include/arm/arch-armv8a.inc + +MACHINE_FEATURES += "efi pci vc4graphics" +MACHINEOVERRIDES =. "kp920:march64le:" +DEFAULTTUNE = "aarch64" + +require conf/multilib.conf +# currently, don't support 32 bit libs +MULTILIBS = "" + +ROOTFS_PACKAGE_ARCH = "aarch64" + +# set IMAGETYPE and dtb +KERNEL_IMAGETYPE = "zImage" +# choose dtb file +KERNEL_DEVICETREE = "" +ENABLE_UART = "1" +# serial port enabled in kp920 +CMDLINE_SERIAL = "ttyAMA0,115200" +SERIAL_CONSOLES = "115200;ttyAMA0" + +# arm and arm64 both support -mlittle-endian so no +# need to consider compat32. +TUNE_CCARGS .= " -mlittle-endian" +IMAGE_INSTALL:append = " kernel-modules" + +# the final sd image is in iso format +IMAGE_FSTYPES += "iso" + +# auto load module during startup +KERNEL_MODULE_AUTOLOAD = "" +USE_VT ?= "1" + +# set MCS_FEATURES +# kp920 only supports the "openamp" mechanism, +# and client os only supports uniproton +MCS_FEATURES = "openamp" +MCS_FEATURES := "${@bb.utils.contains('DISTRO_FEATURES', 'mcs', '${MCS_FEATURES}', '', d)}" + +# auto load module during startup +KERNEL_MODULE_AUTOLOAD = " ${@bb.utils.contains('MCS_FEATURES', 'openamp', 'mcs_km', '', d)} " diff --git a/bsp/meta-kunpeng/recipes-kernel/linux/files/config/kp920/defconfig b/bsp/meta-kunpeng/recipes-kernel/linux/files/config/kp920/defconfig new file mode 100644 index 0000000000000000000000000000000000000000..1bf73349b9a4272300d185257b10d92de50de7b6 --- /dev/null +++ b/bsp/meta-kunpeng/recipes-kernel/linux/files/config/kp920/defconfig @@ -0,0 +1,4831 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 5.10.0 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="aarch64-openeuler-linux-gnu-gcc (crosstool-NG 1.26.0) 12.3.1" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=120301 +CONFIG_LD_VERSION=241000000 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=24100 +CONFIG_LLD_VERSION=0 +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="-openeuler" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_ZSTD=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_ZSTD is not set +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_WATCH_QUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_IPI=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +# CONFIG_NO_HZ_IDLE is not set +CONFIG_NO_HZ_FULL=y +CONFIG_CONTEXT_TRACKING=y +# CONFIG_CONTEXT_TRACKING_FORCE is not set +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE is not set +# end of Timers subsystem + +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_COUNT=y + +# +# CPU/Task time and stats accounting +# +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +CONFIG_RCU_EXPERT=y +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_FANOUT=64 +CONFIG_RCU_FANOUT_LEAF=16 +# CONFIG_RCU_FAST_NO_HZ is not set +CONFIG_RCU_NOCB_CPU=y +# CONFIG_TASKS_TRACE_RCU_READ_MB is not set +# end of RCU Subsystem + +# CONFIG_IKCONFIG is not set +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=12 +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_HAS_INT128=y +CONFIG_ARCH_SUPPORTS_INT128=y +# CONFIG_NUMA_BALANCING is not set +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +# CONFIG_MEMCG_MEMFS_INFO is not set +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +# CONFIG_CGROUP_V1_WRITEBACK is not set +CONFIG_CGROUP_SCHED=y +# CONFIG_QOS_SCHED is not set +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +# CONFIG_QOS_SCHED_DYNAMIC_AFFINITY is not set +# CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_RDMA is not set +# CONFIG_CGROUP_FREEZER is not set +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_DEBUG=y +# CONFIG_CGROUP_FILES is not set +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +# CONFIG_TIME_NS is not set +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_SCHED_STEAL is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +# CONFIG_RD_BZIP2 is not set +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +CONFIG_INITRAMFS_FILE_METADATA="" +# CONFIG_BOOT_CONFIG is not set +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_LD_ORPHAN_WARN=y +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_BPF=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_HAVE_FUTEX_CMPXCHG=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +# CONFIG_IO_URING is not set +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_BPF_SYSCALL is not set +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_DEBUG_PERF_USE_VMALLOC=y +# end of Kernel Performance Events And Counters + +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_MEMCG_SYSFS_ON is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +# CONFIG_SLAB_MERGE_DEFAULT is not set +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +CONFIG_KABI_RESERVE=y +CONFIG_KABI_SIZE_ALIGN_CHECKS=y +# end of General setup + +CONFIG_ARM64=y +CONFIG_64BIT=y +CONFIG_MMU=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_CONT_PTE_SHIFT=4 +CONFIG_ARM64_CONT_PMD_SHIFT=4 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=24 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +# CONFIG_ZONE_DMA is not set +CONFIG_ZONE_DMA32=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_SMP=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ARCH_HAS_CPU_RELAX=y + +# +# Platform selection +# +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_AGILEX is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM_IPROC is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_BITMAIN is not set +# CONFIG_ARCH_BRCMSTB is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_SPARX5 is not set +# CONFIG_ARCH_K3 is not set +# CONFIG_ARCH_LAYERSCAPE is not set +# CONFIG_ARCH_LG1K is not set +CONFIG_ARCH_HISI=y +# CONFIG_ARCH_KEEMBAY is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_PHYTIUM is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_S32 is not set +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_STRATIX10 is not set +# CONFIG_ARCH_SYNQUACER is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_SPRD is not set +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_THUNDER2 is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VISCONTI is not set +# CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQMP is not set +# end of Platform selection + +CONFIG_HAVE_LIVEPATCH_WO_FTRACE=y + +# +# Enable Livepatch +# +CONFIG_LIVEPATCH=y +CONFIG_LIVEPATCH_WO_FTRACE=y +CONFIG_LIVEPATCH_STOP_MACHINE_CONSISTENCY=y +# CONFIG_LIVEPATCH_STACK is not set +CONFIG_LIVEPATCH_RESTRICT_KPROBE=y +# end of Enable Livepatch + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_1742098=y +CONFIG_ARM64_ERRATUM_845719=y +# CONFIG_ARM64_ERRATUM_843419 is not set +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y +CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_1508412=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +CONFIG_CAVIUM_ERRATUM_23144=y +# CONFIG_CAVIUM_ERRATUM_23154 is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +CONFIG_HISILICON_ERRATUM_161600802=y +# CONFIG_HISILICON_ERRATUM_1980005 is not set +CONFIG_HISILICON_ERRATUM_162100801=y +CONFIG_HISILICON_ERRATUM_162100125=y +# CONFIG_HISILICON_ERRATUM_162102203 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +CONFIG_HISILICON_ERRATUM_HIP08_RU_PREFETCH=y +# CONFIG_HISILICON_HIP08_RU_PREFETCH_DEFAULT_OFF is not set +# end of ARM errata workarounds via the alternatives framework + +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_16K_PAGES is not set +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_VA_BITS_39=y +# CONFIG_ARM64_VA_BITS_48 is not set +CONFIG_ARM64_VA_BITS=39 +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_PA_BITS=48 +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +# CONFIG_SCHED_MC is not set +# CONFIG_SCHED_CLUSTER is not set +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=64 +CONFIG_HOTPLUG_CPU=y +# CONFIG_ARM64_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_MPAM is not set +CONFIG_NUMA=y +CONFIG_NODES_SHIFT=4 +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +CONFIG_HZ_1000=y +CONFIG_HZ=1000 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_LLC_128_LINE_SIZE=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +# CONFIG_KEXEC_SIG is not set +CONFIG_CRASH_DUMP=y +# CONFIG_ARM64_CPU_PARK is not set +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_UNMAP_KERNEL_AT_EL0 is not set +CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y +# CONFIG_RODATA_FULL_DEFAULT_ENABLED is not set +# CONFIG_ARM64_PMEM_LEGACY is not set +# CONFIG_ARM64_SW_TTBR0_PAN is not set +# CONFIG_ARM64_TAGGED_ADDR_ABI is not set +CONFIG_AARCH32_EL0=y +CONFIG_KUSER_HELPERS=y +# CONFIG_ARMV8_DEPRECATED is not set + +# +# ARMv8.1 architectural features +# +# CONFIG_ARM64_HW_AFDBM is not set +# CONFIG_ARM64_PAN is not set +CONFIG_AS_HAS_LSE_ATOMICS=y +# CONFIG_ARM64_USE_LSE_ATOMICS is not set +# CONFIG_ARM64_VHE is not set +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +# CONFIG_ARM64_PMEM is not set +# CONFIG_ARM64_RAS_EXTN is not set +# CONFIG_ARM64_CNP is not set +# CONFIG_ARM64_PBHA is not set +# end of ARMv8.2 architectural features + +# +# ARMv8.3 architectural features +# +CONFIG_ARM64_PTR_AUTH=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y +CONFIG_AS_HAS_PAC=y +CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +CONFIG_AS_HAS_LDAPR=y +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +# CONFIG_ARM64_AMU_EXTN is not set +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +# CONFIG_ARM64_BTI is not set +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +# CONFIG_ARCH_RANDOM is not set +CONFIG_ARM64_AS_HAS_MTE=y +# end of ARMv8.5 architectural features + +# +# ARMv8.6 architectural features +# +CONFIG_ARM64_TWED=y +# end of ARMv8.6 architectural features + +# +# ARMv8.7 architectural features +# +# end of ARMv8.7 architectural features + +CONFIG_ARM64_SVE=y +CONFIG_ARM64_SME=y +# CONFIG_ARM64_MODULE_PLTS is not set +# CONFIG_ARM64_PSEUDO_NMI is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# CONFIG_ARCH_CUSTOM_NUMA_DISTANCE is not set +# CONFIG_ASCEND_FEATURES is not set +# end of Kernel Features + +# +# Boot options +# +# CONFIG_ARM64_ACPI_PARKING_PROTOCOL is not set +CONFIG_CMDLINE="" +CONFIG_EFI_STUB=y +CONFIG_EFI=y +CONFIG_DMI=y +# end of Boot options + +CONFIG_COMPAT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_CPU_PM=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# end of Power management options + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set + +# +# ARM CPU Idle Drivers +# +# CONFIG_ARM_CPUIDLE is not set +# CONFIG_ARM_PSCI_CPUIDLE is not set +# end of ARM CPU Idle Drivers + +CONFIG_HALTPOLL_CPUIDLE=y +# end of CPU Idle + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set +# end of CPU Frequency scaling +# end of CPU Power Management + +# +# Firmware Drivers +# +# CONFIG_ARM_SCMI_PROTOCOL is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_DMIID is not set +# CONFIG_DMI_SYSFS is not set +# CONFIG_ISCSI_IBFT is not set +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_ESRT=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_GENERIC_STUB=y +CONFIG_EFI_ZBOOT=y +# CONFIG_EFI_ZBOOT_SIGNED is not set +CONFIG_EFI_ARMSTUB_DTB_LOADER=y +# CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER is not set +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_TEST is not set +# CONFIG_RESET_ATTACK_MITIGATION is not set +# CONFIG_EFI_DISABLE_PCI_DMA is not set +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_HAVE_ARM_SMCCC=y +CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y +# CONFIG_ARM_SMCCC_SOC_ID is not set + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ACPI=y +CONFIG_ACPI_GENERIC_GSI=y +CONFIG_ACPI_CCA_REQUIRED=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_SPCR_TABLE=y +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_FAN=y +# CONFIG_ACPI_TAD is not set +# CONFIG_ACPI_DOCK is not set +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_MCFG=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_THERMAL=y +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_CONTAINER=y +# CONFIG_ACPI_HOTPLUG_MEMORY is not set +# CONFIG_ACPI_HED is not set +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_BGRT is not set +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +CONFIG_ACPI_NUMA=y +# CONFIG_ACPI_HMAT is not set +CONFIG_HAVE_ACPI_APEI=y +# CONFIG_ACPI_APEI is not set +# CONFIG_ACPI_CONFIGFS is not set +CONFIG_ACPI_IORT=y +CONFIG_ACPI_GTDT=y +CONFIG_ACPI_PPTT=y +# CONFIG_PMIC_OPREGION is not set +CONFIG_VIRTUALIZATION=y +# CONFIG_KVM is not set +# CONFIG_ARM64_CRYPTO is not set +CONFIG_SELFDECOMPRESS_ZIMAGE=y + +# +# zImage support selfdecompre features +# +# CONFIG_SELFDECOMPRESS_ZIMAGE_GZIP is not set +CONFIG_SELFDECOMPRESS_ZIMAGE_XZ=y +# CONFIG_SELFDECOMPRESS_ZIMAGE_LZ4 is not set +# CONFIG_SELFDECOMPRESS_ZIMAGE_LZMA is not set +# CONFIG_SELFDECOMPRESS_ZIMAGE_LZO is not set +# CONFIG_ZIMAGE_2M_TEXT_OFFSET is not set +# end of zImage support selfdecompre features + +# +# General architecture-dependent options +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +# CONFIG_QUICK_KEXEC is not set +CONFIG_ARCH_WANT_RESERVE_CRASH_KERNEL=y +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_UPROBES=y +# CONFIG_UPROBES_SUPPORT_PC_ALTER is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_KEEPINITRD=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_HUGE_VMALLOC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_COMPILER_H=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_GCC_PLUGINS=y +# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set +# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODVERSIONS=y +CONFIG_ASM_MODVERSIONS=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_DEBUG_FS is not set +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set +# CONFIG_BLK_DEV_DUMPINFO is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +# end of Partition Types + +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=m +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_STATE=y +CONFIG_ARCH_HAVE_ELF_PROT=y +CONFIG_ARCH_USE_GNU_PROPERTY=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +# CONFIG_SPARSEMEM_VMEMMAP is not set +CONFIG_HAVE_FAST_GUP=y +CONFIG_HOLES_IN_ZONE=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_COHERENT_DEVICE is not set +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +# CONFIG_MEMORY_HOTREMOVE is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +# CONFIG_PAGE_REPORTING is not set +CONFIG_MIGRATION=y +# CONFIG_HUGE_VMALLOC_DEFAULT_ENABLED is not set +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +# CONFIG_HWPOISON_INJECT is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +CONFIG_ARCH_WANTS_THP_SWAP=y +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_MEMCG_QOS=y +# CONFIG_MEMCG_SWAP_QOS is not set +# CONFIG_ETMEM is not set +# CONFIG_PAGE_CACHE_LIMIT is not set +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +CONFIG_ZSMALLOC=m +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_PTE_DEVMAP=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# CONFIG_PIN_MEMORY is not set +# CONFIG_MEMORY_RELIABLE is not set +# CONFIG_CLEAR_FREELIST_PAGE is not set +# CONFIG_EXTEND_HUGEPAGE_MAPPING is not set + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=m +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=m +# CONFIG_IP_MROUTE is not set +CONFIG_SYN_COOKIES=y +# CONFIG_NET_IPVTI is not set +CONFIG_NET_UDP_TUNNEL=m +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +# CONFIG_INET_DIAG_DESTROY is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +# CONFIG_IPV6_VTI is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_IPV6_RPL_LWTUNNEL is not set +CONFIG_NETLABEL=y +# CONFIG_MPTCP is not set +CONFIG_NETWORK_SECMARK=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set +CONFIG_NF_CONNTRACK=m +# CONFIG_NF_LOG_NETDEV is not set +# CONFIG_NF_CONNTRACK_MARK is not set +# CONFIG_NF_CONNTRACK_SECMARK is not set +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_LABELS is not set +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +# CONFIG_NF_CONNTRACK_AMANDA is not set +# CONFIG_NF_CONNTRACK_FTP is not set +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set +CONFIG_NF_NAT=m +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=m + +# +# Xtables combined modules +# +# CONFIG_NETFILTER_XT_MARK is not set +# CONFIG_NETFILTER_XT_CONNMARK is not set + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +# CONFIG_NETFILTER_XT_TARGET_MARK is not set +CONFIG_NETFILTER_XT_NAT=m +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set +# CONFIG_NETFILTER_XT_TARGET_MASQUERADE is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set + +# +# Xtables matches +# +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +# CONFIG_NETFILTER_XT_MATCH_STATE is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# end of Core Netfilter Configuration + +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=m +CONFIG_IP_NF_IPTABLES=m +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +CONFIG_IP_NF_NAT=m +# CONFIG_IP_NF_TARGET_MASQUERADE is not set +# CONFIG_IP_NF_TARGET_NETMAP is not set +# CONFIG_IP_NF_TARGET_REDIRECT is not set +# CONFIG_IP_NF_MANGLE is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_SECURITY is not set +# CONFIG_IP_NF_ARPTABLES is not set +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +CONFIG_NF_REJECT_IPV6=m +# CONFIG_NF_LOG_IPV6 is not set +CONFIG_IP6_NF_IPTABLES=m +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_HL is not set +# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set +# CONFIG_IP6_NF_MATCH_MH is not set +# CONFIG_IP6_NF_MATCH_RT is not set +# CONFIG_IP6_NF_MATCH_SRH is not set +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +# CONFIG_IP6_NF_TARGET_SYNPROXY is not set +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_IP6_NF_RAW is not set +# CONFIG_IP6_NF_SECURITY is not set +CONFIG_IP6_NF_NAT=m +# CONFIG_IP6_NF_TARGET_MASQUERADE is not set +# CONFIG_IP6_NF_TARGET_NPT is not set +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +# CONFIG_NF_CONNTRACK_BRIDGE is not set +# CONFIG_BPFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_UDP=y +# CONFIG_TIPC_CRYPTO is not set +# CONFIG_TIPC_DIAG is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +CONFIG_STP=m +CONFIG_GARP=m +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +# CONFIG_VLAN_8021Q_MVRP is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=m +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_JIT is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m +# CONFIG_CAN_J1939 is not set +# CONFIG_CAN_ISOTP is not set + +# +# CAN Device Drivers +# +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +# CONFIG_CAN_SLCAN is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_FLEXCAN is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +# CONFIG_CAN_XILINXCAN is not set +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_PEAK_PCIEFD is not set +# CONFIG_CAN_SJA1000 is not set +# CONFIG_CAN_SOFTING is not set + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +# CONFIG_CAN_MCP251X is not set +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB2 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +# end of CAN Device Drivers + +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +CONFIG_CFG80211_CERTIFICATION_ONUS=y +# CONFIG_CFG80211_REQUIRE_SIGNED_REGDB is not set +# CONFIG_CFG80211_REG_CELLULAR_HINTS is not set +# CONFIG_CFG80211_REG_RELAX_NO_IR is not set +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_CFG80211_WEXT=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +# CONFIG_MAC80211 is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +CONFIG_NET_9P=y +CONFIG_NET_9P_VIRTIO=y +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_NET_DEVLINK=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_POOL_STATS=y +CONFIG_FAILOVER=y +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_PF_STUB is not set +CONFIG_PCI_ATS=y +CONFIG_PCI_ECAM=y +CONFIG_PCI_IOV=y +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +CONFIG_PCI_LABEL=y +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_ACPI is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +CONFIG_PCI_HOST_COMMON=y +CONFIG_PCI_HOST_GENERIC=y +# CONFIG_PCIE_XILINX is not set +# CONFIG_PCI_XGENE is not set +# CONFIG_PCIE_ALTERA is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN is not set +# CONFIG_PCIE_HISI_STB is not set +# CONFIG_PCI_MESON is not set +# CONFIG_PCIE_AL is not set +# end of DesignWare PCI Core Support + +# +# Mobiveil PCIe Core Support +# +# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set +# end of Mobiveil PCIe Core Support + +# +# Cadence PCIe controllers support +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# CONFIG_PCI_J721E_HOST is not set +# end of Cadence PCIe controllers support +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +# CONFIG_PREVENT_FIRMWARE_BUILD is not set + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +# CONFIG_FW_CACHE is not set +# end of Firmware loader + +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_REGMAP=y +CONFIG_REGMAP_MMIO=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_GENERIC_ARCH_TOPOLOGY=y +# end of Generic Driver Options + +# +# Bus devices +# +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_MOXTET is not set +# CONFIG_HISILICON_LPC is not set +# CONFIG_SIMPLE_PM_BUS is not set +# CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_MHI_BUS is not set +# end of Bus devices + +# CONFIG_CONNECTOR is not set +# CONFIG_GNSS is not set +CONFIG_MTD=m +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_OF_PARTS=m +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +# CONFIG_MTD_CFI_NOSWAP is not set +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +CONFIG_MTD_CFI_LE_BYTE_SWAP=y +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MAP_BANK_WIDTH_16=y +CONFIG_MTD_MAP_BANK_WIDTH_32=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_OTP is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=m +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=y +# CONFIG_MTD_PHYSMAP_VERSATILE is not set +# CONFIG_MTD_PHYSMAP_GEMINI is not set +# CONFIG_MTD_PHYSMAP_GPIO_ADDR is not set +# CONFIG_MTD_PCI is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +CONFIG_MTD_PHRAM=m +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# end of Self-contained MTD device drivers + +# +# NAND +# +CONFIG_MTD_NAND_CORE=m +# CONFIG_MTD_ONENAND is not set +CONFIG_MTD_NAND_ECC_SW_HAMMING=m +# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set +CONFIG_MTD_RAW_NAND=m +# CONFIG_MTD_NAND_ECC_SW_BCH is not set + +# +# Raw/parallel NAND flash controllers +# +# CONFIG_MTD_NAND_DENALI_PCI is not set +# CONFIG_MTD_NAND_DENALI_DT is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_BRCMNAND is not set +# CONFIG_MTD_NAND_HISI504 is not set +# CONFIG_MTD_NAND_MXIC is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_NAND_CADENCE is not set +# CONFIG_MTD_NAND_ARASAN is not set + +# +# Misc +# +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_RICOH is not set +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# ECC engine support +# +CONFIG_MTD_NAND_ECC=y +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + +# CONFIG_MTD_SPI_NOR is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_FASTMAP=y +# CONFIG_MTD_UBI_GLUEBI is not set +# CONFIG_MTD_UBI_BLOCK is not set +# CONFIG_MTD_HYPERBUS is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +CONFIG_OF_NUMA=y +# CONFIG_PARPORT is not set +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_CDROM=y +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_ZRAM=m +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +# CONFIG_ZRAM_MULTI_COMP is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SKD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=30720 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +CONFIG_VIRTIO_BLK=y +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_PVPANIC is not set +# CONFIG_HISI_HIKEY_USB is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set +# CONFIG_HABANA_AI is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=y +CONFIG_SCSI_SAS_ATTRS=y +CONFIG_SCSI_SAS_LIBSAS=y +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +# CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +CONFIG_SCSI_HISI_SAS=y +CONFIG_SCSI_HISI_SAS_PCI=y +# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +CONFIG_MEGARAID_SAS=y +# CONFIG_SCSI_3SNIC_SSSRAID is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_HISI_RAID is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +# end of SCSI device support + +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_PATA_TIMINGS=y +CONFIG_ATA_VERBOSE_ERROR=y +# CONFIG_ATA_FORCE is not set +CONFIG_ATA_ACPI=y +# CONFIG_SATA_ZPODD is not set +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=m +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_QORIQ is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_SATA_ZHAOXIN is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_PATA_ACPI is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +# CONFIG_MD_LINEAR is not set +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID10=y +CONFIG_MD_RAID456=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_MD_FAULTY is not set +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_UNSTRIPED is not set +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_EBS is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_CLONE is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_RAID is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +CONFIG_BONDING=m +# CONFIG_DUMMY is not set +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +CONFIG_TUN=m +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +CONFIG_VIRTIO_NET=y +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# Distributed Switch Architecture drivers +# +# end of Distributed Switch Architecture drivers + +CONFIG_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_3SNIC is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_AURORA is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_DNET is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HISI_FEMAC is not set +# CONFIG_HIP04_ETH is not set +CONFIG_HNS_MDIO=y +CONFIG_HNS=y +CONFIG_HNS_DSAF=y +CONFIG_HNS_ENET=y +CONFIG_HNS3=y +CONFIG_HNS3_HCLGE=y +CONFIG_HNS3_DCB=y +CONFIG_HNS3_HCLGEVF=y +CONFIG_HNS3_ENET=y +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_HINIC=y +# CONFIG_HINIC3 is not set +# CONFIG_BMA is not set +# CONFIG_NET_VENDOR_INTEL is not set +CONFIG_NET_VENDOR_MUCSE=y +# CONFIG_MXGBE is not set +# CONFIG_MXGBEM is not set +CONFIG_NET_VENDOR_NETSWIFT=y +# CONFIG_NGBE is not set +# CONFIG_TXGBE is not set +# CONFIG_JME is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETERION is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_ETHOC is not set +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +# CONFIG_NET_VENDOR_NEBULA_MATRIX is not set +CONFIG_NET_VENDOR_YUNSILICON=y +# CONFIG_YUNSILICON_XSC_PCI is not set +# CONFIG_NET_VENDOR_YUSUR is not set +CONFIG_NET_VENDOR_BZWX=y +# CONFIG_NCE is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_UBL is not set +# CONFIG_NET_SB1000 is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +CONFIG_FIXED_PHY=y + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_REALTEK_PHY=y +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_OF_MDIO=y +CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_IPQ4019 is not set +# CONFIG_MDIO_IPQ8064 is not set +# CONFIG_MDIO_THUNDER is not set + +# +# MDIO Multiplexers +# +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set + +# +# PCS device drivers +# +# CONFIG_PCS_XPCS is not set +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=m +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_NCM=m +# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set +# CONFIG_USB_NET_CDC_MBIM is not set +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_SR9700 is not set +# CONFIG_USB_NET_SR9800 is not set +# CONFIG_USB_NET_SMSC75XX is not set +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +# CONFIG_USB_ALI_M5632 is not set +# CONFIG_USB_AN2720 is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_KC2190 is not set +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_KALMIA is not set +# CONFIG_USB_NET_QMI_WWAN is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_VL600 is not set +# CONFIG_USB_NET_CH9200 is not set +# CONFIG_USB_NET_AQC111 is not set +CONFIG_WLAN=y +# CONFIG_WIRELESS_WDS is not set +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_HOSTAP=m +# CONFIG_HOSTAP_FIRMWARE is not set +# CONFIG_HOSTAP_PLX is not set +# CONFIG_HOSTAP_PCI is not set +# CONFIG_HERMES is not set +# CONFIG_PRISM54 is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_MICROCHIP is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_WLAN_VENDOR_QUANTENNA is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_VIRT_WIFI is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_FUJITSU_ES is not set +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=y +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_SMBUS=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LDISC_AUTOLOAD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=y +# CONFIG_SERIAL_8250_EXAR is not set +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_DWLIB=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_OF_PLATFORM=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SIFIVE is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_NOZOMI is not set +# CONFIG_NULL_TTY is not set +# CONFIG_TRACE_SINK is not set +CONFIG_HVC_DRIVER=y +# CONFIG_HVC_DCC is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +CONFIG_VIRTIO_CONSOLE=m +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=m +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +# CONFIG_HW_RANDOM_VIRTIO is not set +# CONFIG_HW_RANDOM_HISI is not set +CONFIG_HW_RANDOM_HISI_GM=m +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +# CONFIG_APPLICOM is not set +CONFIG_DEVMEM=y +# CONFIG_RAW_DRIVER is not set +CONFIG_DEVPORT=y +# CONFIG_TCG_TPM is not set +# CONFIG_XILLYBUS is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_AMD_MP2 is not set +# CONFIG_I2C_HIX5HD2 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# ACPI drivers +# +# CONFIG_I2C_SCMI is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CADENCE is not set +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_HISI is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_THUNDERX is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# end of I2C Hardware Bus support + +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +# CONFIG_SPI_MEM is not set + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_HISI_KUNPENG is not set +# CONFIG_SPI_HISI_SFC_V3XX is not set +# CONFIG_SPI_NXP_FLEXSPI is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_MXIC is not set +# CONFIG_SPI_THUNDERX is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set +# CONFIG_SPI_AMD is not set + +# +# SPI Multiplexer support +# +# CONFIG_SPI_MUX is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +CONFIG_SPI_DYNAMIC=y +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +# CONFIG_PPS is not set + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_HISI is not set +# end of PTP clock support + +CONFIG_PINCTRL=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_AMD is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_SX150X is not set +# CONFIG_PINCTRL_STMFX is not set +# CONFIG_PINCTRL_OCELOT is not set + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIO_ACPI=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +# CONFIG_GPIO_CDEV_V1 is not set +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_AMDPT is not set +# CONFIG_GPIO_CADENCE is not set +CONFIG_GPIO_DWAPB=y +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HISI is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set +# CONFIG_GPIO_MB86S7X is not set +CONFIG_GPIO_PL061=y +# CONFIG_GPIO_SAMA5D2_PIOBU is not set +# CONFIG_GPIO_SIFIVE is not set +# CONFIG_GPIO_SYSCON is not set +CONFIG_GPIO_XGENE=y +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_AMD_FCH is not set +# end of Memory mapped GPIO drivers + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_GW_PLD is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCA9570 is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +# end of USB GPIO expanders + +# CONFIG_GPIO_AGGREGATOR is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_W1 is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_HISI is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +# CONFIG_SYSCON_REBOOT_MODE is not set +# CONFIG_NVMEM_REBOOT_MODE is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_CW2015 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ2515X is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_BATTERY_RT5033 is not set +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_HWMON is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_NETLINK is not set +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_OF=y +# CONFIG_THERMAL_WRITABLE_TRIPS is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_CPU_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +CONFIG_HISI_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED is not set +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +# CONFIG_WATCHDOG_SYSFS is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_WDAT_WDT is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_ARM_SP805_WATCHDOG is not set +# CONFIG_ARM_SBSA_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ARM_SMC_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_GATEWORKS_GSC is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MP2629 is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_MFD_HI655X_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_IQS62X is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77650 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6360 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_LOCHNAGAR is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_ROHM_BD718XX is not set +# CONFIG_MFD_ROHM_BD70528 is not set +# CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_STPMIC1 is not set +# CONFIG_MFD_STMFX is not set +# CONFIG_MFD_INTEL_M10_BMC is not set +# end of Multifunction device drivers + +# CONFIG_REGULATOR is not set +# CONFIG_RC_CORE is not set +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_USB_PULSE8_CEC is not set +# CONFIG_USB_RAINSHADOW_CEC is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_VGA_ARB is not set +CONFIG_DRM=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +# CONFIG_DRM_DP_CEC is not set +CONFIG_DRM_TTM=y +CONFIG_DRM_TTM_DMA_PAGE_POOL=y +CONFIG_DRM_VRAM_HELPER=y +CONFIG_DRM_TTM_HELPER=y + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +# end of I2C encoder or helper chips + +# +# ARM devices +# +# CONFIG_DRM_HDLCD is not set +# CONFIG_DRM_MALI_DISPLAY is not set +# CONFIG_DRM_KOMEDA is not set +# end of ARM devices + +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_AMDGPU is not set +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_INSPUR is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_VIRTIO_GPU is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_LG_LB035Q02 is not set +# CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_CHRONTEL_CH7033 is not set +# CONFIG_DRM_DISPLAY_CONNECTOR is not set +# CONFIG_DRM_LONTIUM_LT9611 is not set +# CONFIG_DRM_LVDS_CODEC is not set +# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NWL_MIPI_DSI is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set +# CONFIG_DRM_PARADE_PS8640 is not set +# CONFIG_DRM_SIL_SII8620 is not set +# CONFIG_DRM_SII902X is not set +# CONFIG_DRM_SII9234 is not set +# CONFIG_DRM_SIMPLE_BRIDGE is not set +# CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358762 is not set +# CONFIG_DRM_TOSHIBA_TC358764 is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TOSHIBA_TC358768 is not set +# CONFIG_DRM_TOSHIBA_TC358775 is not set +# CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_TI_SN65DSI86 is not set +# CONFIG_DRM_TI_TPD12S015 is not set +# CONFIG_DRM_ANALOGIX_ANX6345 is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_ARCPGU is not set +CONFIG_DRM_HISI_HIBMC=y +# CONFIG_DRM_HISI_KIRIN is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_GM12U320 is not set +# CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9225 is not set +# CONFIG_TINYDRM_ILI9341 is not set +# CONFIG_TINYDRM_ILI9486 is not set +# CONFIG_TINYDRM_MI0283QT is not set +# CONFIG_TINYDRM_REPAPER is not set +# CONFIG_TINYDRM_ST7586 is not set +# CONFIG_TINYDRM_ST7735R is not set +# CONFIG_DRM_PL111 is not set +# CONFIG_DRM_LIMA is not set +# CONFIG_DRM_PANFROST is not set +# CONFIG_DRM_TIDSS is not set +# CONFIG_DRM_LEGACY is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_MODE_HELPERS is not set +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_EFI=y +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set +# CONFIG_FB_LS2K500 is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +# end of Backlight & LCD device support + +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +# CONFIG_LOGO is not set +# end of Graphics support + +# CONFIG_SOUND is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CREATIVE_SB0540 is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_VIVALDI is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_REDRAGON is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# CONFIG_HID_MCP2221 is not set +# end of Special HID drivers + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +CONFIG_USB_HIDDEV=y +# end of USB HID support + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +# end of I2C HID support +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_FEW_INIT_RETRIES is not set +CONFIG_USB_DYNAMIC_MINORS=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_MON=y + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PCI_RENESAS is not set +CONFIG_USB_XHCI_PLATFORM=m +# CONFIG_USB_XHCI_HISTB is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_UHCI_HCD=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_CDNS3 is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_SIMPLE is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_F8153X is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +CONFIG_USB_SERIAL_MOS7720=y +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MXUPORT is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QCAUX is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +CONFIG_USB_SERIAL_SAFE=y +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_APPLE_MFI_FASTCHARGE is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +# end of USB Physical Layer drivers + +# CONFIG_USB_GADGET is not set +# CONFIG_TYPEC is not set +CONFIG_USB_ROLE_SWITCH=y +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=8 +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_CQHCI is not set +# CONFIG_MMC_HSQ is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_HCTOSYS is not set +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_DEBUG is not set +# CONFIG_RTC_NVMEM is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12026 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +CONFIG_RTC_DRV_EFI=y +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_CADENCE is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_SELFTESTS is not set +# CONFIG_DMABUF_HEAPS is not set +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +CONFIG_UIO=m +# CONFIG_UIO_CIF is not set +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +# CONFIG_UIO_AEC is not set +# CONFIG_UIO_SERCOS3 is not set +# CONFIG_UIO_PCI_GENERIC is not set +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PRUSS is not set +# CONFIG_UIO_MF624 is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_INPUT is not set +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +# CONFIG_VDPA is not set +# CONFIG_VHOST_MENU is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_LOONGARCH_PLATFORM_DEVICES=y +CONFIG_HAVE_CLK=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_COMMON_CLK_SI5341 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_XGENE is not set +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set +# CONFIG_COMMON_CLK_HI3516CV300 is not set +# CONFIG_COMMON_CLK_HI3519 is not set +# CONFIG_COMMON_CLK_HI3660 is not set +# CONFIG_COMMON_CLK_HI3670 is not set +# CONFIG_COMMON_CLK_HI3798CV200 is not set +CONFIG_COMMON_CLK_HI6220=y +# CONFIG_RESET_HISI is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_ACPI=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y +CONFIG_FSL_ERRATUM_A008585=y +CONFIG_HISILICON_ERRATUM_161010101=y +CONFIG_ARM64_ERRATUM_858921=y +CONFIG_ARM_TIMER_SP804=y +# CONFIG_MICROCHIP_PIT64B is not set +# end of Clock Source drivers + +# CONFIG_MAILBOX is not set +# CONFIG_IOMMU_SUPPORT is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Aspeed SoC drivers +# +# end of Aspeed SoC drivers + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# CONFIG_QUICC_ENGINE is not set +# CONFIG_FSL_RCPM is not set +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers + +# +# Hisilicon SoC drivers +# +# CONFIG_HISI_HBMCACHE is not set +# end of Hisilicon SoC drivers +# end of SOC (System On Chip) specific Drivers + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +# CONFIG_AL_FIC is not set +CONFIG_PARTITION_PERCPU=y +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_TI_SYSCON is not set +CONFIG_COMMON_RESET_HI3660=y +CONFIG_COMMON_RESET_HI6220=y + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +# CONFIG_PHY_XGENE is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_CADENCE_TORRENT is not set +# CONFIG_PHY_CADENCE_DPHY is not set +# CONFIG_PHY_CADENCE_SIERRA is not set +# CONFIG_PHY_CADENCE_SALVO is not set +# CONFIG_PHY_FSL_IMX8MQ_USB is not set +# CONFIG_PHY_MIXEL_MIPI_DPHY is not set +# CONFIG_PHY_HI6220_USB is not set +# CONFIG_PHY_HI3660_USB is not set +# CONFIG_PHY_HISTB_COMBPHY is not set +# CONFIG_PHY_HISI_INNO_USB2 is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_OCELOT_SERDES is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +CONFIG_ARM_CCI_PMU=y +CONFIG_ARM_CCI400_PMU=y +# CONFIG_ARM_CCI5xx_PMU is not set +CONFIG_ARM_CCN=y +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +CONFIG_ARM_PMU_ACPI=y +# CONFIG_ARM_SMMU_V3_PMU is not set +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# CONFIG_ARM64_BRBE is not set +# CONFIG_HISI_PMU is not set +# CONFIG_HISI_PCIE_PMU is not set +# CONFIG_HNS3_PMU is not set +# end of Performance monitor support + +CONFIG_RAS=y +CONFIG_PAGE_EJECT=m +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# +# Vendor Hooks +# +# CONFIG_VENDOR_HOOKS is not set +# end of Vendor Hooks + +# CONFIG_LIBNVDIMM is not set +CONFIG_DAX=y +# CONFIG_NVMEM is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_HISI_PTT is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_ROH is not set +# CONFIG_UB is not set + +# +# CPU Inspect +# +# CONFIG_CPU_INSPECT is not set +# end of CPU Inspect +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_POSIX_ACL is not set +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=m +# CONFIG_EXT3_FS_POSIX_ACL is not set +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +# CONFIG_EXT4_ERROR_REPORT is not set +# CONFIG_EXT4_MITIGATION_FALSE_SHARING is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_FS_DAX=y +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_MANDATORY_FILE_LOCKING is not set +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set +CONFIG_QUOTA=y +# CONFIG_QUOTA_NETLINK_INTERFACE is not set +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_FUSE_FS=y +CONFIG_CUSE=m +CONFIG_VIRTIO_FS=y +CONFIG_OVERLAY_FS=m +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set + +# +# Caches +# +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_STATS is not set +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set +# CONFIG_CACHEFILES is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_DIRTY_PAGES=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_TMPFS_INODE64 is not set +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y +# CONFIG_DYNAMIC_HUGETLB is not set +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +# CONFIG_CONFIGFS_FS is not set +# CONFIG_EFIVAR_FS is not set +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_FS_ZSTD is not set +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_SECURITY=y +# CONFIG_UBIFS_FS_AUTHENTICATION is not set +CONFIG_CRAMFS=m +# CONFIG_CRAMFS_BLOCKDEV is not set +# CONFIG_CRAMFS_MTD is not set +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_FILE_CACHE=y +# CONFIG_SQUASHFS_FILE_DIRECT is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set +# CONFIG_SQUASHFS_LZO is not set +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_ZSTD is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +# CONFIG_NFS_V2 is not set +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +# CONFIG_NFS_SWAP is not set +CONFIG_NFS_V4_1=y +# CONFIG_NFS_V4_2 is not set +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +# CONFIG_NFS_V4_1_MIGRATION is not set +# CONFIG_NFS_FSCACHE is not set +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +# CONFIG_NFSD_BLOCKLAYOUT is not set +# CONFIG_NFSD_SCSILAYOUT is not set +# CONFIG_NFSD_FLEXFILELAYOUT is not set +# CONFIG_NFSD_V4_SECURITY_LABEL is not set +CONFIG_GRACE_PERIOD=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_BACKCHANNEL=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +# CONFIG_CIFS_WEAK_PW_HASH is not set +# CONFIG_CIFS_UPCALL is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set +# CONFIG_CIFS_DFS_UPCALL is not set +# CONFIG_CIFS_FSCACHE is not set +# CONFIG_SMB_SERVER is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_9P_FS=y +CONFIG_9P_FS_POSIX_ACL=y +# CONFIG_9P_FS_SECURITY is not set +# CONFIG_EULER_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +CONFIG_NLS_UTF8=m +# CONFIG_UNICODE is not set +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +CONFIG_SECURITY_DMESG_RESTRICT=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +# CONFIG_SECURITY_PATH is not set +CONFIG_LSM_MMAP_MIN_ADDR=32768 +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY_FALLBACK=y +# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +# CONFIG_SECURITY_SELINUX_DISABLE is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +CONFIG_SECURITY_SMACK=y +# CONFIG_SECURITY_SMACK_BRINGUP is not set +# CONFIG_SECURITY_SMACK_NETFILTER is not set +# CONFIG_SECURITY_SMACK_APPEND_SIGNALS is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_LOADPIN is not set +CONFIG_SECURITY_YAMA=y +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_SECURITY_LANDLOCK is not set +# CONFIG_INTEGRITY is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +CONFIG_INIT_STACK_NONE=y +# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +# CONFIG_INIT_STACK_ALL_ZERO is not set +# CONFIG_GCC_PLUGIN_STACKLEAK is not set +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +# end of Memory initialization +# end of Kernel hardening options + +CONFIG_SECURITY_BOOT_INIT=y +# end of Security options + +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=y +CONFIG_ASYNC_MEMCPY=y +CONFIG_ASYNC_XOR=y +CONFIG_ASYNC_PQ=y +CONFIG_ASYNC_RAID6_RECOV=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +# CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set +# CONFIG_CRYPTO_CURVE25519 is not set + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_SEQIV is not set +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +# CONFIG_CRYPTO_CFB is not set +CONFIG_CRYPTO_CTR=m +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_ADIANTUM is not set +# CONFIG_CRYPTO_ESSIV is not set + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_HMAC=m +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_XXHASH is not set +# CONFIG_CRYPTO_BLAKE2B is not set +# CONFIG_CRYPTO_BLAKE2S is not set +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_GHASH=m +# CONFIG_CRYPTO_POLY1305 is not set +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_MICHAEL_MIC=m +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3_GENERIC is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4_GENERIC is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_LZO=m +# CONFIG_CRYPTO_842 is not set +CONFIG_CRYPTO_LZ4=m +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m +CONFIG_CRYPTO_USER_API=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +CONFIG_CRYPTO_HASH_INFO=y +# CONFIG_CRYPTO_HW is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set + +# +# Certificates for signature checking +# +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# CONFIG_PGP_PRELOAD_PUBLIC_KEYS is not set +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_RAID6_PQ=y +CONFIG_RAID6_PQ_BENCHMARK=y +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y +# CONFIG_INDIRECT_PIO is not set + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=m +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_SHA256=m +# end of Crypto library routines + +CONFIG_LIB_MEMNEQ=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_XXHASH=y +CONFIG_AUDIT_GENERIC=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUDIT_COMPAT_GENERIC=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=m +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=m +CONFIG_XZ_DEC=y +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_IA64 is not set +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +# CONFIG_XZ_DEC_SPARC is not set +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y +CONFIG_SWIOTLB=y +# CONFIG_DMA_RESTRICTED_POOL is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_REMAP=y +CONFIG_DMA_DIRECT_REMAP=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +# CONFIG_FORCE_NR_CPUS is not set +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_IRQ_POLL=y +CONFIG_DIMLIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=m +CONFIG_UCS2_STRING=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set +# end of Library routines + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DYNAMIC_DEBUG_CORE is not set +# CONFIG_SYMBOLIC_ERRNAME is not set +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_COMPRESSED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_BTF is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_OPTIMIZE_INLINING is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_PGO_KERNEL is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +# CONFIG_MAGIC_SYSRQ_SERIAL is not set +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_KCSAN_COMPILER=y +# end of Generic Kernel Debugging Instruments + +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_MISC is not set + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_GENERIC_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_DEBUG_KMEMLEAK=y +CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE=2000 +# CONFIG_DEBUG_KMEMLEAK_TEST is not set +CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y +# CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN is not set +CONFIG_DEBUG_STACK_USAGE=y +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +CONFIG_PANIC_ON_OOPS=y +CONFIG_PANIC_ON_OOPS_VALUE=1 +CONFIG_PANIC_TIMEOUT=0 +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 + +# +# ARM64 NMI watchdog configuration +# +# end of ARM64 NMI watchdog configuration + +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1 +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_INFO=y +# CONFIG_SCHEDSTATS is not set +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +CONFIG_DEBUG_ATOMIC_SLEEP=y +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_HAVE_DEBUG_BUGVERBOSE=y + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +CONFIG_DEBUG_SG=y +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=65 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_RCU_STRICT_GRACE_PERIOD is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_LATENCYTOP is not set +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_SCHED_TRACER=y +# CONFIG_HWLAT_TRACER is not set +# CONFIG_OSNOISE_TRACER is not set +# CONFIG_TIMERLAT_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_KPROBE_EVENTS=y +CONFIG_UPROBE_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +# CONFIG_SYNTH_EVENTS is not set +# CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACE_EVENT_INJECT is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_KPROBE_EVENT_GEN_TEST is not set +# CONFIG_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +CONFIG_IO_STRICT_DEVMEM=y + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_DEBUG_EFI is not set +# CONFIG_ARM64_RELOC_TEST is not set +# CONFIG_CORESIGHT is not set +# end of arm64 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +CONFIG_FUNCTION_ERROR_INJECTION=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +# CONFIG_RUNTIME_TESTING_MENU is not set +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/bsp/meta-kunpeng/recipes-kernel/linux/linux-kp920.inc b/bsp/meta-kunpeng/recipes-kernel/linux/linux-kp920.inc new file mode 100644 index 0000000000000000000000000000000000000000..1f519749ac61584b96e2d6d28ae9c3f90f79a3f4 --- /dev/null +++ b/bsp/meta-kunpeng/recipes-kernel/linux/linux-kp920.inc @@ -0,0 +1,7 @@ +# add recipes-kernel path to find patch and defconfig +FILESEXTRAPATHS:append := "${THISDIR}/files/:" + +OPENEULER_KERNEL_CONFIG = "file://config/kp920/defconfig" + +# add COMPATIBLE_MACHINE +COMPATIBLE_MACHINE = "kp920" diff --git a/bsp/meta-kunpeng/recipes-kernel/linux/linux-openeuler-rt.bbappend b/bsp/meta-kunpeng/recipes-kernel/linux/linux-openeuler-rt.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..b09bcc7227d3d7eb9f48dd5650589766e2682c94 --- /dev/null +++ b/bsp/meta-kunpeng/recipes-kernel/linux/linux-openeuler-rt.bbappend @@ -0,0 +1 @@ +require recipes-kernel/linux/linux-kp920.inc diff --git a/bsp/meta-kunpeng/recipes-kernel/linux/linux-openeuler.bbappend b/bsp/meta-kunpeng/recipes-kernel/linux/linux-openeuler.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..b09bcc7227d3d7eb9f48dd5650589766e2682c94 --- /dev/null +++ b/bsp/meta-kunpeng/recipes-kernel/linux/linux-openeuler.bbappend @@ -0,0 +1 @@ +require recipes-kernel/linux/linux-kp920.inc diff --git a/bsp/meta-phytium/conf/machine/include/tengrui.inc b/bsp/meta-phytium/conf/machine/include/tengrui.inc index 46e4de5fb9297f7e9031f626b3ba902e99900de1..3dc548b16ff8ae2f85539b4d3a25b7929e35cc40 100644 --- a/bsp/meta-phytium/conf/machine/include/tengrui.inc +++ b/bsp/meta-phytium/conf/machine/include/tengrui.inc @@ -15,3 +15,7 @@ SERIAL_CONSOLES = "115200;ttyAMA0" # arm and arm64 both support -mlittle-endian so no # need to consider compat32. TUNE_CCARGS .= " -mlittle-endian" + +# recovery EFI_PROVIDER option, which is removed in packagegroup-core-boot +EFI_PROVIDER ??= "grub-efi" +IMAGE_INSTALL:append = " ${@bb.utils.contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)} " diff --git a/bsp/meta-phytium/recipes-core/images/openeuler-image-tiny.bbappend b/bsp/meta-phytium/recipes-core/images/openeuler-image-tiny.bbappend deleted file mode 100644 index d4ad638496100b18d1cea2485954d8617612e7b7..0000000000000000000000000000000000000000 --- a/bsp/meta-phytium/recipes-core/images/openeuler-image-tiny.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -#fix no efi in openeuler-image-tiny wic image -EFI_PROVIDER ??= "grub-efi" - -RDEPENDS:${PN}:append = " \ - ${@bb.utils.contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)} \ -" diff --git a/bsp/meta-visionfive2/recipes-kernel/linux/files/patch/0002-fix-timer-starfive-error.patch b/bsp/meta-visionfive2/recipes-kernel/linux/files/patch/0002-fix-timer-starfive-error.patch new file mode 100644 index 0000000000000000000000000000000000000000..2a051eccc39be28d1e5e09e50e3e7ce1aa36aaa1 --- /dev/null +++ b/bsp/meta-visionfive2/recipes-kernel/linux/files/patch/0002-fix-timer-starfive-error.patch @@ -0,0 +1,21 @@ +diff -uprN a/drivers/clocksource/timer-starfive.c b/drivers/clocksource/timer-starfive.c +--- a/drivers/clocksource/timer-starfive.c 2024-06-17 08:13:39.196587501 +0000 ++++ b/drivers/clocksource/timer-starfive.c 2024-06-17 08:09:04.226584831 +0000 +@@ -132,7 +132,7 @@ static inline void timer_disable(struct + writel(TIMER_ENA_DIS, clkevt->enable); + } + +-static void timer_shutdown(struct starfive_clkevt *clkevt) ++static void timer_shutdown_tmp(struct starfive_clkevt *clkevt) + { + timer_int_disable(clkevt); + timer_disable(clkevt); +@@ -207,7 +207,7 @@ static int starfive_timer_shutdown(struc + struct starfive_clkevt *clkevt; + + clkevt = to_starfive_clkevt(evt); +- timer_shutdown(clkevt); ++ timer_shutdown_tmp(clkevt); + + return 0; + } diff --git a/bsp/meta-visionfive2/recipes-kernel/linux/linux-visionfive2.inc b/bsp/meta-visionfive2/recipes-kernel/linux/linux-visionfive2.inc index 5a93112bdff5164ff1739e6a0f6f10680809ac0f..71e40a8c90f937cd3d3e0ed4837017b01a897110 100755 --- a/bsp/meta-visionfive2/recipes-kernel/linux/linux-visionfive2.inc +++ b/bsp/meta-visionfive2/recipes-kernel/linux/linux-visionfive2.inc @@ -3,6 +3,7 @@ FILESEXTRAPATHS:append := "${THISDIR}/files/:" SRC_URI:append = " \ file://config \ file://patch/0001-support-jh7110-starfive.patch \ + file://patch/0002-fix-timer-starfive-error.patch \ " OPENEULER_KERNEL_CONFIG = "file://config/visionfive2-jh7110_defconfig" diff --git a/docs/source/bsp/arm64/d2000/d2000-image/login.png b/docs/source/bsp/arm64/d2000/d2000-image/login.png new file mode 100644 index 0000000000000000000000000000000000000000..0d878b7adb33ec10d5deeee089e338e5065048d9 Binary files /dev/null and b/docs/source/bsp/arm64/d2000/d2000-image/login.png differ diff --git a/docs/source/bsp/arm64/d2000/d2000.rst b/docs/source/bsp/arm64/d2000/d2000.rst new file mode 100644 index 0000000000000000000000000000000000000000..d14ac4b672ed74a8d907462c4a06010b9b5e6016 --- /dev/null +++ b/docs/source/bsp/arm64/d2000/d2000.rst @@ -0,0 +1,132 @@ +d2000 镜像构建与说明 +####################################### + +本章主要介绍openEuler Embedded中d2000系列板卡的镜像构建,使用和特性介绍。 + +d2000板卡支持SATA硬盘/U盘启动(具体根据UEFI提供的设备支持),构建工程可生成预分区的WIC镜像,对存储介质直接进行烧录即可 + + +镜像构建与使用 +================= + +1. 构建机器和oebuild工具准备: + +(1)准备一个 ubuntu x86 构建主机环境(建议22.04,依赖Python>=3.10,配置建议预留200G存储) + +(2)安装oebuild(具体 oebuild 用法可参见 :ref:`oebuild_install`),注意以普通用户安装oebuild,例: + + .. code-block:: console + + sudo apt install python3 python3-pip + # 如果python3和pip模块已安装,请忽略此python3的安装命令 + pip install oebuild + + +(3)准备 oebuild 的工具依赖(docker): + + .. code-block:: console + + sudo apt install docker docker.io -y + sudo groupadd docker + sudo usermod -a -G docker $(whoami) + sudo systemctl-reload && systemctl restart docker + sudo chmod o+rw /var/run/docker.sock + + +2. oebuild 构建代码准备: + +(1)初始化构建分支代码(请不要以root及sudo权限执行): + + .. code-block:: console + + oebuild init buildwork + # 说明: + # * buildwork为存放目录, + # * 未使用-b指定分支,默认使用master分支,等同于 oebuild init buildwork -b master + # 假设执行路径位于 /home/user/ ,执行后根据提示进入对应目录 + + cd /home/user/buildwork + oebuild update + #执行完成后,将在 /home/user/buildwork/src/ 目录下载好主构建源码,并初始化构建虚拟环境。 + + +(2)初始化d2000构建源码及配置: + + .. code-block:: console + + cd /home/user/buildwork + oebuild generate -p d2000 -f systemd + # 以上命令可追加-f参数,通过 oebuild generate -l 查看支持的配置,比如-f openeuler-rt开启软实时 + + +3. 镜像构建和部署: + +(1)构建d2000镜像: + + .. code-block:: console + + cd /home/user/buildwork/d2000 + oebuild bitbake + # oebuild bitbake 执行后将进入构建交互环境 + # 注意您此时应该处于进入 oebuild bitbkae 环境的工作根目录(如/home/openeuler/d2000) + bitbake openeuler-image + +构建完成后,输出件见 /home/user/buildwork/d2000/output/[时间戳],备用组件内容如下 + + .. code-block:: console + + ├── Image + ├── openeuler-image-d2000-[时间戳].rootfs.wic + └── vmlinux + + + .. note:: + + openeuler-image-d2000-[时间戳].rootfs.wic 已经包含了BootLoader,kernel以及文件系统。 + + vmlinux为未加工的原始内核基础格式文件。 + + +若需要交叉编译工具链,可通过如下命令生成,将在output目录下有新时间戳子目录得到输出件。 + + .. code-block:: console + + # 注意您此时应该处于进入 oebuild bitbake 环境的工作根目录(如/home/openeuler/d2000) + bitbake openeuler-image -c populate_sdk + + +(2)烧录d2000镜像到SATA硬盘: + +烧录d2000镜像仅仅需要将rootfs.wic文件烧录到SD卡中即可,我们将介绍在linux平台下使用dd命令制作镜像方式。 + + .. code-block:: console + + # 使用 df -h 查看挂载点 + + # u盘去掉挂载。然后可以查看,已经无u盘的挂载: + umount /dev/sdb1 + + # 写入u盘,注意:sdb,没有标号。 + sudo dd if=openeuler-image-d2000-[时间戳].rootfs.wic of=/dev/sdb status=progress + +(3)启动 d2000 并连接调试: + +**启用d2000** + +默认用户名:root,密码:第一次启动没有默认密码,需重新配置,且密码强度有相应要求,需要数字、字母、特殊字符组合最少8位,例如abcd@2024。 + +将刷写镜像后的SATA硬盘插入主机,通电启用。 + +**d2000登录方式** + ++ 串口登录: + +镜像使能了串口登录功能,通过ttyusb转接器连接板卡对应CPU调试串口,使用串口终端工具连接串口,波特率115200,登录即可。 + ++ 显示器登录: + +部分板卡没有引出CPU调试串口,但往往有附带PCIE显卡并配合efifb提供基本的显示,建议使用显示器登录。 + +将刷写镜像后的SATA硬盘插入主机,显示器通过VGA/HDMI连接板卡,等待系统启动后即可登录。 + +.. image:: d2000-image/login.png diff --git a/docs/source/bsp/arm64/d2000/index.rst b/docs/source/bsp/arm64/d2000/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..53deacfc6164a592b86e8304d77f3950cfe534c7 --- /dev/null +++ b/docs/source/bsp/arm64/d2000/index.rst @@ -0,0 +1,11 @@ +.. _board_d2000: + + +d2000 +######################### + + +.. toctree:: + :maxdepth: 1 + + d2000.rst diff --git a/docs/source/bsp/arm64/ft2000-4/ft2000-4-image/login.png b/docs/source/bsp/arm64/ft2000-4/ft2000-4-image/login.png new file mode 100644 index 0000000000000000000000000000000000000000..67cef77eae344cada5e080c0aca57e948089cd42 Binary files /dev/null and b/docs/source/bsp/arm64/ft2000-4/ft2000-4-image/login.png differ diff --git a/docs/source/bsp/arm64/ft2000-4/ft2000-4.rst b/docs/source/bsp/arm64/ft2000-4/ft2000-4.rst new file mode 100644 index 0000000000000000000000000000000000000000..1202c09ae2b2ed04206c45482c23c9dc566d7610 --- /dev/null +++ b/docs/source/bsp/arm64/ft2000-4/ft2000-4.rst @@ -0,0 +1,132 @@ +ft2000-4 镜像构建与说明 +####################################### + +本章主要介绍openEuler Embedded中ft2000-4系列板卡的镜像构建,使用和特性介绍。 + +ft2000-4板卡支持SATA硬盘/U盘启动(具体根据UEFI提供的设备支持),构建工程可生成预分区的WIC镜像,对存储介质直接进行烧录即可 + + +镜像构建与使用 +================= + +1. 构建机器和oebuild工具准备: + +(1)准备一个 ubuntu x86 构建主机环境(建议22.04,依赖Python>=3.10,配置建议预留200G存储) + +(2)安装oebuild(具体 oebuild 用法可参见 :ref:`oebuild_install`),注意以普通用户安装oebuild,例: + + .. code-block:: console + + sudo apt install python3 python3-pip + # 如果python3和pip模块已安装,请忽略此python3的安装命令 + pip install oebuild + + +(3)准备 oebuild 的工具依赖(docker): + + .. code-block:: console + + sudo apt install docker docker.io -y + sudo groupadd docker + sudo usermod -a -G docker $(whoami) + sudo systemctl-reload && systemctl restart docker + sudo chmod o+rw /var/run/docker.sock + + +2. oebuild 构建代码准备: + +(1)初始化构建分支代码(请不要以root及sudo权限执行): + + .. code-block:: console + + oebuild init buildwork + # 说明: + # * buildwork为存放目录, + # * 未使用-b指定分支,默认使用master分支,等同于 oebuild init buildwork -b master + # 假设执行路径位于 /home/user/ ,执行后根据提示进入对应目录 + + cd /home/user/buildwork + oebuild update + #执行完成后,将在 /home/user/buildwork/src/ 目录下载好主构建源码,并初始化构建虚拟环境。 + + +(2)初始化ft2000-4构建源码及配置: + + .. code-block:: console + + cd /home/user/buildwork + oebuild generate -p ft2000-4 -f systemd + # 以上命令可追加-f参数,通过 oebuild generate -l 查看支持的配置,比如-f openeuler-rt开启软实时 + + +3. 镜像构建和部署: + +(1)构建ft2000-4镜像: + + .. code-block:: console + + cd /home/user/buildwork/ft2000-4 + oebuild bitbake + # oebuild bitbake 执行后将进入构建交互环境 + # 注意您此时应该处于进入 oebuild bitbkae 环境的工作根目录(如/home/openeuler/ft2000-4) + bitbake openeuler-image + +构建完成后,输出件见 /home/user/buildwork/ft2000-4/output/[时间戳],备用组件内容如下 + + .. code-block:: console + + ├── Image + ├── openeuler-image-ft2000-4-[时间戳].rootfs.wic + └── vmlinux + + + .. note:: + + openeuler-image-ft2000-4-[时间戳].rootfs.wic 已经包含了BootLoader,kernel以及文件系统。 + + vmlinux为未加工的原始内核基础格式文件。 + + +若需要交叉编译工具链,可通过如下命令生成,将在output目录下有新时间戳子目录得到输出件。 + + .. code-block:: console + + # 注意您此时应该处于进入 oebuild bitbake 环境的工作根目录(如/home/openeuler/ft2000-4) + bitbake openeuler-image -c populate_sdk + + +(2)烧录ft2000-4镜像到SATA硬盘: + +烧录ft2000-4镜像仅仅需要将rootfs.wic文件烧录到SD卡中即可,我们将介绍在linux平台下使用dd命令制作镜像方式。 + + .. code-block:: console + + # 使用 df -h 查看挂载点 + + # u盘去掉挂载。然后可以查看,已经无u盘的挂载: + umount /dev/sdb1 + + # 写入u盘,注意:sdb,没有标号。 + sudo dd if=openeuler-image-ft2000-4-[时间戳].rootfs.wic of=/dev/sdb status=progress + +(3)启动 ft2000-4 并连接调试: + +**启用ft2000-4** + +默认用户名:root,密码:第一次启动没有默认密码,需重新配置,且密码强度有相应要求,需要数字、字母、特殊字符组合最少8位,例如abcd@2024。 + +将刷写镜像后的SATA硬盘插入主机,通电启用。 + +**ft2000-4登录方式** + ++ 串口登录: + +镜像使能了串口登录功能,通过ttyusb转接器连接板卡对应CPU调试串口,使用串口终端工具连接串口,波特率115200,登录即可。 + ++ 显示器登录: + +部分板卡没有引出CPU调试串口,但往往有附带PCIE显卡并配合efifb提供基本的显示,建议使用显示器登录。 + +将刷写镜像后的SATA硬盘插入主机,显示器通过VGA/HDMI连接板卡,等待系统启动后即可登录。 + +.. image:: ft2000-4-image/login.png diff --git a/docs/source/bsp/arm64/ft2000-4/index.rst b/docs/source/bsp/arm64/ft2000-4/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..0732aab1b83d96eadd3ffd2f576051f58f4fedc7 --- /dev/null +++ b/docs/source/bsp/arm64/ft2000-4/index.rst @@ -0,0 +1,11 @@ +.. _board_ft2000-4: + + +ft2000-4 +######################### + + +.. toctree:: + :maxdepth: 1 + + ft2000-4.rst diff --git a/docs/source/bsp/arm64/hieulerpi/update.rst b/docs/source/bsp/arm64/hieulerpi/update.rst index b4dbc3f53643f1910268ee50a18c3e41530892e9..f69bc9dd781f2492e4858953a2bcd848172c7f10 100644 --- a/docs/source/bsp/arm64/hieulerpi/update.rst +++ b/docs/source/bsp/arm64/hieulerpi/update.rst @@ -116,34 +116,40 @@ ToolPlatform工具是烧录芯片镜像的最基本工具,未烧录任何芯 1) 创建启动SD卡 ~~~~~~~~~~~~~~~ -启动SD卡只需在SD卡中创建ext4格式的文件系统即可,并通过修改\ ``sd_rootfs_num``\ 环境变量指定正确的分区。 +从SD卡启动需在SD卡中创建对应boot文件分区表及rootfs系统分区表,可以通过修改\ ``sd_rootfs_num``\ 环境变量指定正确的分区。 【注】: 1. 若正常进行分区sd卡的第一分区,分区号为1,后续分区以此类推。 - 2. 若不创建分区表直接在SD卡上创建文件系统,分区号为0。 - - 3. 默认从2号分区启动。 + 2. 默认从2号分区启动。 .. code:: bash - # fdisk 创建分区表,具体设备节点根据实际情况修改 - sudo fidsk /dev/sdb - # mkfs.ext4创建文件系统 - sudo mkfs.ext4 /dev/sdb1 - # 将分区镜像写入分区 - sudo dd if=rootfs.ext4 of=/dev/sdb1 - -.. code:: bash + # 使用 fdisk 创建两个分区表,具体设备节点根据实际情况修改,此处需创建好对应1和2分区 + sudo fdisk /dev/sdb + # 将分区号为1的分区格式化为 FAT32 格式,用于存储boot相关文件 + sudo mkfs.vfat -F 32 /dev/sdb1 + # 将该FAT32分区表挂载 + sudo mount /dev/sdb1 /mnt/xxx + # 并在挂载后的路径内创建boot文件夹后拷入boot/kernel/rootfs等文件 + # 注意此处boot文件夹内不要放入env_append.txt文件 + . + └── boot +   ├── boot_env.bin # uboot + ├── boot_image.bin # uboot环境变量 + ├── kernel # linux内核 + └── rootfs.ext4 # 根文件系统 - # 在uboot终端中执行以下命令设置SD卡启动分区 - setenv sd_rootfs_num 1 + # 将分区号为2的分区格式化为 ext4,用于写入rootfs + sudo mkfs.ext4 /dev/sdb2 + # 将rootfs镜像写入2号分区 + sudo dd if=rootfs.ext4 of=/dev/sdb2 2) 从SD卡启动 ~~~~~~~~~~~~~ -若要从SD卡启动则需要修改启动参数\ ``boot_media``\ ,在uboot的串口终端中输入\ ``print boot_media``\ 命令可查看当前的启动方式,boot_media为\ ``emmc``\ 时从板载的emmc启动,boot_media为\ ``sd``\ 时从SD卡启动。 +若要从SD卡启动则需要在uboot内修改启动参数\ ``boot_media``\ ,在uboot的串口终端中输入\ ``print boot_media``\ 命令可查看当前的启动方式,boot_media为\ ``emmc``\ 时从板载的emmc启动,boot_media为\ ``sd``\ 时从SD卡启动。 .. code:: @@ -167,6 +173,8 @@ ToolPlatform工具是烧录芯片镜像的最基本工具,未烧录任何芯 2. 默认从SD卡的第二分区启动,若要修改启动分区可修改环境变量\ ``sd_rootfs_num`` + 3. 完成对应操作后需要使用\ ``saveenv``\ 保存环境变量 + 五、常见问题 ------------ diff --git a/meta-musl/conf/machine/qemu-riscv64.conf b/meta-musl/conf/machine/qemu-riscv64.conf new file mode 100644 index 0000000000000000000000000000000000000000..bd245fc072078f701877c37b55ffca05db9d6957 --- /dev/null +++ b/meta-musl/conf/machine/qemu-riscv64.conf @@ -0,0 +1,39 @@ +# Description: Config for riscv64 machine + +require conf/machine/include/qemu.inc + +DEFAULTTUNE = "riscv64" + +export ROOTFS_PACKAGE_ARCH = "riscv64" + +KERNEL_IMAGETYPE = "Image" +KERNEL_IMAGETYPE_FOR_MAKE = "Image" + +require conf/machine/include/riscv/tune-riscv.inc +BASE_LIB:tune-riscv64 = "lib" + +require conf/multilib.conf +MULTILIBS ?= "" + +# simplest serial console setting, no VT +SERIAL_CONSOLES ?= "115200;ttyS0" +USE_VT="0" + +# qemuboot options +QB_SYSTEM_NAME = "qemu-system-riscv64" +# get the first item from IMAGE_FSTYPES +QB_DEFAULT_FSTYPE = "${@d.getVar('IMAGE_FSTYPES').split(' ')[0]}" +QB_SMP = "-smp 4" +QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi" +QB_MACHINE = "-machine virt" +QB_DEFAULT_BIOS = "fw_jump.elf" +# QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" +# QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" +# set network configure like as openeuler guidance +QB_TAP_OPT = "-netdev tap,id=tap0,script=/etc/qemu-ifup" +QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=tap0" +QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0" +QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon" +QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon" +QB_GRAPHICS = "-device bochs-display" +QB_OPT_APPEND = "-device virtio-tablet-pci -device virtio-keyboard-pci" diff --git a/meta-musl/recipes-external/gcompat/gcompat_%.bbappend b/meta-musl/recipes-external/gcompat/gcompat_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..07cb0052870f30d6f3feb2373ed50b49826f6385 --- /dev/null +++ b/meta-musl/recipes-external/gcompat/gcompat_%.bbappend @@ -0,0 +1,15 @@ + +do_install:append:riscv64 () { + install -d ${D}${libdir} + install -m 0755 ${S}/libgcompat.so.0 ${D}${libdir}/ + install -m 0755 ${S}/libgcompat.a ${D}${libdir}/ + +} + +INSANE_SKIP_{$PN}:append:riscv64 = "installed-vs-shipped" + +FILES:${PN}:append:riscv64 = " /lib64" +FILES:${PN}-dev:append:riscv64 = " /lib64/libgcompat.so.0" +FILES:${PN}:append:riscv64 = " /usr/lib64" +FILES:${PN}-staticdev:append:riscv64 = " /usr/lib64/libgcompat.a" + diff --git a/meta-musl/recipes-external/musl/musl_%.bbappend b/meta-musl/recipes-external/musl/musl_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..c5bc706b017dc2e487244e47489e8f8b73b741f7 --- /dev/null +++ b/meta-musl/recipes-external/musl/musl_%.bbappend @@ -0,0 +1,23 @@ +musl_external_do_install_extra:riscv64 (){ + # Modify musl dynamic library search path + mkdir -p ${D}${sysconfdir} + touch ${D}${sysconfdir}/ld-musl-riscv64.path + echo "${base_libdir}" > ${D}${sysconfdir}/ld-musl-riscv64.path + echo "${libdir}" >> ${D}${sysconfdir}/ld-musl-riscv64.path + + # Support perf compile + # Due to musl missing __always_inline definition + sed -i '/#include /a\#include ' ${D}${includedir}/linux/swab.h + sed -i '/#include /a\#include ' ${D}${includedir}/linux/byteorder/little_endian.h + + # Delete conflict file + rm -f ${D}${base_libdir}/libgcc_s.so + rm -f ${D}${base_libdir}/libgcc_s.so.1 +} + +# In case of conflict +FILES:${PN}:append:riscv64 = " \ + ${base_libdir}/../lib64/lp64d/ld-musl-riscv64.so.1 \ + ${sysconfdir}/ld-musl-riscv64.path \ +" + diff --git a/meta-openeuler/classes/qemuboot-xen-defaults.bbclass b/meta-openeuler/classes/qemuboot-xen-defaults.bbclass new file mode 100644 index 0000000000000000000000000000000000000000..a9acdd06fcab7a9ae9550838e35b89f87042c83e --- /dev/null +++ b/meta-openeuler/classes/qemuboot-xen-defaults.bbclass @@ -0,0 +1,52 @@ +# Set defaults for booting Xen images with qemuboot +# NOTE: From meta-virtualization, add some configurations for openeuler +# 1. Set KERNEL_IMAGETYPE, xen doesn't support zImage; +# 2. Add qemu-aarch64 support +# 3. Increase dom0_mem/QB_MEM for openeuler + +KERNEL_IMAGETYPE = "Image" + +# Xen and Dom0 command line options +QB_XEN_CMDLINE_EXTRA ??= "dom0_mem=512M" +QB_XEN_DOM0_BOOTARGS ??= \ + "console=hvc0 earlyprintk clk_ignore_unused root=/dev/vda" + +# Launch with one initial domain, dom0, with one boot module, the kernel +DOM0_KERNEL ??= "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}" +DOM0_KERNEL_LOAD_ADDR ??= "0x45000000" +QB_XEN_DOMAIN_MODULES ??= "${DOM0_KERNEL}:${DOM0_KERNEL_LOAD_ADDR}:multiboot,kernel" + +# Qemuboot for Arm uses the QB_DEFAULT_KERNEL method to load Xen +# and the device loader option for the dom0 kernel: +QB_OPT_APPEND:append:aarch64 = " \ + -device loader,file=${DOM0_KERNEL},addr=${DOM0_KERNEL_LOAD_ADDR} \ + " +QB_OPT_APPEND:append:qemuarm = " \ + -device loader,file=${DOM0_KERNEL},addr=${DOM0_KERNEL_LOAD_ADDR} \ + " +QB_DEFAULT_KERNEL:qemuarm64 = "xen-${MACHINE}" +QB_DEFAULT_KERNEL:qemu-aarch64 = "xen-${MACHINE}" +QB_DEFAULT_KERNEL:qemuarm = "xen-${MACHINE}" + +# 64-bit Arm: gic version 3 +QB_MACHINE:qemuarm64 = "-machine virt,gic-version=3 -machine virtualization=true" +QB_MACHINE:qemu-aarch64 = "-machine virt,gic-version=3 -machine virtualization=true" +# 32-bit Arm: highmem=off +# Disable highmem so that qemu does not use highmem IO regions that end up +# being placed at the 256GiB mark (e.g. ECAM space) and can cause issues in Xen. +QB_MACHINE:qemuarm = "-machine virt,highmem=off -machine virtualization=true" + +# Increase the default qemu memory allocation to allow for the hypervisor. +# Use a weak assignment to allow for change of default and override elsewhere. +QB_MEM_VALUE ??= "1024" +QB_MEM = "-m ${QB_MEM_VALUE}" + +# 64-bit Arm: qemuboot with a device tree binary +QB_DTB:qemuarm64 = "${IMAGE_NAME}.qemuboot.dtb" +QB_DTB_LINK:qemuarm64 = "${IMAGE_LINK_NAME}.qemuboot.dtb" +QB_DTB:qemu-aarch64 = "${IMAGE_NAME}.qemuboot.dtb" +QB_DTB_LINK:qemu-aarch64 = "${IMAGE_LINK_NAME}.qemuboot.dtb" + +# 32-bit Arm: qemuboot with a device tree binary +QB_DTB:qemuarm = "${IMAGE_NAME}.qemuboot.dtb" +QB_DTB_LINK:qemuarm = "${IMAGE_LINK_NAME}.qemuboot.dtb" diff --git a/meta-openeuler/classes/qemuboot-xen-dtb.bbclass b/meta-openeuler/classes/qemuboot-xen-dtb.bbclass new file mode 100644 index 0000000000000000000000000000000000000000..d43d23a3827166680ca99d90812e617698afc001 --- /dev/null +++ b/meta-openeuler/classes/qemuboot-xen-dtb.bbclass @@ -0,0 +1,210 @@ +# Enable booting Xen with qemuboot / runqemu: generate device tree +# +# Copyright (c) 2021 Star Lab Corp. All rights reserved. +# +# Author: Christopher Clark + +# Interface variables: +# +# QB_DTB : defined in qemuboot.bbclass. +# If set, this class will generate the specified device tree file. +# +# QB_XEN_CMDLINE_EXTRA : +# A string to be appended to the default Xen hypervisor boot command line, +# for supplying Xen boot options. +# The device tree that this bbclass generates will contain Xen command +# line options to connect the Xen console to the Qemu serial port. +# +# QB_XEN_DOMAIN_MODULES : +# A space-separated list of colon-separated entries: +# "::" +# +# QB_XEN_DOM0_BOOTARGS : +# A string for specifying Dom0 boot options for the Xen section of the device +# tree. +# +# QB_XEN_DTB_TASK_DEPENDS : +# The task dependencies for the DTB generation. A default is provided. +# +# See also: Other QB_ variables as defined by the qemuboot.bbclass. + +write_lops_xen_section() { + DOM0_BOOTARGS="$2" + cat <"$1" +/dts-v1/; +/ { + compatible = "system-device-tree-v1"; + lops { + /* Connect the Xen console to Qemu dtuart */ + lop_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + chosen = node.tree['/chosen'] + stdout_path = str(chosen['stdout-path'].value[0]) + chosen['xen,xen-bootargs'] = \ + 'console=dtuart dtuart=%s' % stdout_path + return True + "; + }; + lop_2 { + compatible = "system-device-tree-v1,lop,modify"; + modify = "/chosen:xen,dom0-bootargs:${DOM0_BOOTARGS}"; + }; + lop_3 { + compatible = "system-device-tree-v1,lop,modify"; + modify = "/chosen:#address-cells:<1>"; + }; + lop_4 { + compatible = "system-device-tree-v1,lop,modify"; + modify = "/chosen:#size-cells:<1>"; + }; + }; +}; +EOF +} + +write_lop_add_to_xen_cmdline() { + EXTRA_XEN_BOOTARGS="$2" + cat <"$1" +/dts-v1/; +/ { + compatible = "system-device-tree-v1"; + lops { + lop_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + options = "extra_xen_bootargs:${EXTRA_XEN_BOOTARGS}"; + code = " + chosen = node.tree['/chosen'] + xen_bootargs = str(chosen['xen,xen-bootargs'].value) + chosen['xen,xen-bootargs'] = '%s %s' % \ + (xen_bootargs, extra_xen_bootargs) + return True + "; + }; + }; +}; +EOF +} + +write_lop_add_chosen_module() { + ADDR="$2" + SIZE="$3" + MODULE_TYPE="$4" + cat <"$1" +/dts-v1/; +/ { + compatible = "system-device-tree-v1"; + lops { + lop_1 { + compatible = "system-device-tree-v1,lop,add"; + node_src = "module@${ADDR}"; + node_dest = "/chosen/module@${ADDR}"; + + module@${ADDR} { + compatible = "multiboot,module", "${MODULE_TYPE}"; + reg = <${ADDR} ${SIZE}>; + }; + }; + }; +}; +EOF +} + +generate_xen_qemuboot_dtb() { + # First: invoke qemu to generate an initial device tree. + # Parameters supplied here inspired by inspection of: + # runqemu "${IMAGE_BASENAME}" nographic slirp \ + # qemuparams='-dtb "" -machine dumpdtb=${B}/qemu-dumped.dtb' + ${QB_SYSTEM_NAME} \ + -device qemu-xhci \ + -device usb-tablet \ + -device usb-kbd \ + ${QB_MACHINE} \ + ${QB_CPU} \ + ${QB_SMP} \ + ${QB_MEM} \ + -nographic \ + -serial mon:stdio \ + -machine "dumpdtb=${B}/qemu-dumped.dtb" + + # Lopper generates temporary files in cwd, so run it within ${B} + cd "${B}" + write_lops_xen_section "${B}/lop-insert-xen-section.dts" \ + "${QB_XEN_DOM0_BOOTARGS}" + + write_lop_add_to_xen_cmdline "${B}/lop-xen-cmdline.dts" \ + "${QB_XEN_CMDLINE_EXTRA}" + + if [ -z "${QB_XEN_DOMAIN_MODULES}" ]; then + bbwarn "No domain modules: please set QB_XEN_DOMAIN_MODULES" + fi + + for DOMAIN_MODULE in ${QB_XEN_DOMAIN_MODULES} + do + MODULE_FILE="$(echo ${DOMAIN_MODULE} | cut -f1 -d:)" + ADDR="$(echo ${DOMAIN_MODULE} | cut -f2 -d:)" + MODULE_TYPE="$(echo ${DOMAIN_MODULE} | cut -f3 -d:)" + RESOLVED_FILE="$(readlink -f ${MODULE_FILE})" + SIZE=$(printf '0x%x\n' $(stat -c '%s' "${RESOLVED_FILE}")) + [ "x${SIZE}" != "x0x0" ] || bbfatal No module: "${MODULE_FILE}" + write_lop_add_chosen_module "${B}/lop-add-module-${ADDR}.dts" \ + "${ADDR}" "${SIZE}" "${MODULE_TYPE}" + LOP_MODULE_ARGS="${LOP_MODULE_ARGS} -i ${B}/lop-add-module-${ADDR}.dts" + done + + QEMUBOOT_DTB="${IMGDEPLOYDIR}/${QB_DTB}" + QEMUBOOT_DTB_LINK="${IMGDEPLOYDIR}/${QB_DTB_LINK}" + + lopper --werror --verbose \ + -i "${B}/lop-insert-xen-section.dts" \ + -i "${B}/lop-xen-cmdline.dts" \ + ${LOP_MODULE_ARGS} \ + -f -o "${QEMUBOOT_DTB}" \ + "${B}/qemu-dumped.dtb" + + # To assist debugging: + dtc -I dtb -O dts -o "${B}/output.dts" "${QEMUBOOT_DTB}" + + if [ "${QEMUBOOT_DTB_LINK}" != "${QEMUBOOT_DTB}" ] ; then + if [ -e "${QEMUBOOT_DTB_LINK}" ] ; then + rm "${QEMUBOOT_DTB_LINK}" + fi + ln -s "${QB_DTB}" "${QEMUBOOT_DTB_LINK}" + fi +} + +do_write_xen_qemuboot_dtb() { + # Not all architectures qemuboot with a device tree binary, so check + # to see if one is needed. This allows this bbclass file to be used + # in the same image recipe for multiple architectures. + if [ -n "${QB_DTB}" ] && [ -n "${QB_SYSTEM_NAME}" ] ; then + generate_xen_qemuboot_dtb + fi +} + +addtask do_write_xen_qemuboot_dtb after do_write_qemuboot_conf before do_image +# Task dependency: +# An expected common case is that the kernel for at least one of the initial +# domains (eg. dom0) is deployed from the virtual/kernel recipe, so +# add virtual/kernel:do_deploy as a task dependency here since the kernel size +# needs to be known for generating the device tree. +# Dependencies are only introduced if a device tree will be generated. +QB_XEN_DTB_TASK_DEPENDS ?= " \ + ${@[ ' \ + qemu-helper-native:do_populate_sysroot \ + lopper-native:do_populate_sysroot \ + dtc-native:do_populate_sysroot \ + virtual/kernel:do_deploy \ + ', ''][d.getVar('QB_DTB') == '' or d.getVar('QB_DTB') is None]} \ + " +do_write_xen_qemuboot_dtb[depends] = "${QB_XEN_DTB_TASK_DEPENDS}" + +def qemuboot_dtb_vars(d): + build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE', + 'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME', + 'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE', + 'STAGING_DIR_HOST', 'SERIAL_CONSOLES'] + return build_vars + [k for k in d.keys() if k.startswith('QB_')] + +do_write_qemuboot_dtb[vardeps] += "${@' '.join(qemuboot_dtb_vars(d))}" +do_write_qemuboot_dtb[vardepsexclude] += "TOPDIR" diff --git a/meta-openeuler/conf/distro/openeuler.conf b/meta-openeuler/conf/distro/openeuler.conf index aacb5f9087e98d4782f81ed28d83da2ea38cc026..02646b7f663c65e244360f9b727f64c868fe59ef 100644 --- a/meta-openeuler/conf/distro/openeuler.conf +++ b/meta-openeuler/conf/distro/openeuler.conf @@ -148,3 +148,5 @@ INITRAMFS_MAXSIZE = "" # alsa-utils-scripts merge to alsa-utils from 1.2.8 PREFERRED_PROVIDER_alsa-utils-scripts ?= "alsa-utils" +PREFERRED_VERSION_xen ?= "4.18%" +PREFERRED_VERSION_xen-tools ?= "4.18%" diff --git a/meta-openeuler/conf/machine/generic-x86-64.conf b/meta-openeuler/conf/machine/generic-x86-64.conf index 113d6148ae0c5d69fc2d80b8ca216f8c7b512483..269f334b7c655f1b10e87787dd6f715e1f706246 100644 --- a/meta-openeuler/conf/machine/generic-x86-64.conf +++ b/meta-openeuler/conf/machine/generic-x86-64.conf @@ -52,6 +52,5 @@ QB_AUDIO_OPT = "-device AC97" QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1" QB_OPT_APPEND = "-usb -device usb-tablet" -# set network configure like openeuler guide -QB_TAP_OPT = "-netdev tap,id=tap0,script=/etc/qemu-ifup" -QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=tap0" +QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" +QB_NETWORK_DEVICE = "-net nic" diff --git a/meta-openeuler/conf/machine/include/qemu-aarch64-common.inc b/meta-openeuler/conf/machine/include/qemu-aarch64-common.inc index 2ec33f473c5335768ed14e3331303ced85e8a914..cdd31391416ecc64469e7841d5405777c0201ae0 100644 --- a/meta-openeuler/conf/machine/include/qemu-aarch64-common.inc +++ b/meta-openeuler/conf/machine/include/qemu-aarch64-common.inc @@ -25,6 +25,8 @@ MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa9', 'armv7a:' TUNE_FEATURES:append:virtclass-multilib-lib32 = " cortexa9" TUNE_FEATURES:remove:virtclass-multilib-lib32 = " vfp" +require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'qemu-xen.inc', '', d)} + # simplest serial console setting, no VT SERIAL_CONSOLES ?= "115200;ttyAMA0" USE_VT ?= "0" diff --git a/meta-openeuler/conf/machine/include/qemu-xen.inc b/meta-openeuler/conf/machine/include/qemu-xen.inc new file mode 100644 index 0000000000000000000000000000000000000000..97c4d7ef52aae3d9866ea6e723bd59752df9fd58 --- /dev/null +++ b/meta-openeuler/conf/machine/include/qemu-xen.inc @@ -0,0 +1,2 @@ +# Set serial for working qemuboot console +SERIAL_CONSOLES = "115200;hvc0" diff --git a/meta-openeuler/conf/machine/qemu-aarch64.conf b/meta-openeuler/conf/machine/qemu-aarch64.conf index bf044dea144211b2f69fce2d92ab7a731d972b0f..34ac683c00348da4abb2429c20ca0334e4e5b1dc 100644 --- a/meta-openeuler/conf/machine/qemu-aarch64.conf +++ b/meta-openeuler/conf/machine/qemu-aarch64.conf @@ -34,11 +34,8 @@ QB_CPU_KVM = "-cpu host -machine gic-version=3" QB_GRAPHICS = "-device virtio-gpu-pci" QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd" # Virtio Networking support -# QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" -# QB_NETWORK_DEVICE = "-device virtio-net-pci,netdev=net0,mac=@MAC@" -# set network configure like openeuler guide -QB_TAP_OPT = "-netdev tap,id=tap0,script=/etc/qemu-ifup" -QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=tap0" +QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" +QB_NETWORK_DEVICE = "-device virtio-net-pci,netdev=net0,mac=@MAC@" # Virtio block device QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=disk0" # Virtio serial console diff --git a/meta-openeuler/conf/machine/qemu-arm.conf b/meta-openeuler/conf/machine/qemu-arm.conf index 81edeb5f341637967fbec32b46ed7f5935a1bcbd..7adee19961b66323eb773d2e9750293151558a51 100644 --- a/meta-openeuler/conf/machine/qemu-arm.conf +++ b/meta-openeuler/conf/machine/qemu-arm.conf @@ -21,11 +21,8 @@ QB_KERNEL_CMDLINE_APPEND = "vmalloc=256" QB_GRAPHICS = "-device virtio-gpu-pci" QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd" # Virtio Networking support -# QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" -# QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" -# set network configure like openeuler guide -QB_TAP_OPT = "-netdev tap,id=tap0,script=/etc/qemu-ifup" -QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=tap0" +QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" +QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" # Virtio block device QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0" # Virtio serial console diff --git a/meta-openeuler/conf/machine/qemu-riscv64.conf b/meta-openeuler/conf/machine/qemu-riscv64.conf index 8eef57887485f1a8a4532f54e3d0155c6465fdba..5176233dd963cd1a6222288be318a7e08bbc0322 100644 --- a/meta-openeuler/conf/machine/qemu-riscv64.conf +++ b/meta-openeuler/conf/machine/qemu-riscv64.conf @@ -27,11 +27,8 @@ QB_SMP = "-smp 4" QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi" QB_MACHINE = "-machine virt" QB_DEFAULT_BIOS = "fw_jump.elf" -# QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" -# QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" -# set network configure like as openeuler guidance -QB_TAP_OPT = "-netdev tap,id=tap0,script=/etc/qemu-ifup" -QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=tap0" +QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" +QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0" QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon" QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon" diff --git a/meta-openeuler/dynamic-layers/meta-python/recipes-devtools/python/python3-coloredlogs_%.bbappend b/meta-openeuler/dynamic-layers/meta-python/recipes-devtools/python/python3-coloredlogs_%.bbappend index 3f619d93a6df5f5d100ab467d686eff16576453b..9e02ec5f91efefd8664455f391ad3d149496c9ce 100644 --- a/meta-openeuler/dynamic-layers/meta-python/recipes-devtools/python/python3-coloredlogs_%.bbappend +++ b/meta-openeuler/dynamic-layers/meta-python/recipes-devtools/python/python3-coloredlogs_%.bbappend @@ -1,3 +1,2 @@ PV = "15.0.1" require pypi-src-openeuler.inc - diff --git a/meta-openeuler/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend b/meta-openeuler/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend index dc7b56930c6deb51c79cf80ef2f7513141276e44..cf332dd215b6f16e281ea2bc166a58d380be83b1 100644 --- a/meta-openeuler/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend +++ b/meta-openeuler/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwebengine_%.bbappend @@ -2,12 +2,14 @@ require qt5-src.inc FILESEXTRAPATHS:append := "${THISDIR}/qtwebengine/:" +OPENEULER_REPO_NAMES = "qtwebengine ${@bb.utils.contains('DISTRO_FEATURES', 'LICENSE_AT_OWN_RISK', ' third_party_openh264 ', '', d)} " + SRC_URI:remove = " file://${BPN}-everywhere-opensource-src-${PV}.tar.xz " # remove: riscv64 conflict patches with meta-qt5 patches # riscv-v8.patch # riscv-qt5-qtwebengine.patch -# qtwebengine-ffmpeg5.patch +# need qtwebengine-ffmpeg5.patch to uss oee ffmpeg # force-to-build-dir-path.patch fix: # ERROR Can't get the real build dir path. @@ -35,6 +37,8 @@ SRC_URI:prepend = " \ file://fix-build-tools-to-run-with-python3.11.patch \ file://fix-qt5-qtwebengine-build-with-clang-17.patch \ file://force-to-build-dir-path.patch \ + file://qtwebengine-ffmpeg5.patch \ + ${@bb.utils.contains('DISTRO_FEATURES', 'LICENSE_AT_OWN_RISK', ' file://third_party_openh264 ', '', d)} \ " # this patch same as qtwebengine-everywhere-src-5.15.5-TRUE.patch @@ -55,4 +59,34 @@ do_configure:append() { mkdir -p ${S}/include/QtWebEngine/private cp -f ${S}/include/QtWebEngine/5.15.10/QtWebEngine/private/* ${S}/include/QtWebEngine/private sed -i 's#\.\./\.\./\.\./\.\./\.\./#\.\./\.\./#g' ${S}/include/QtWebEngine/private/* + + mkdir -p ${S}/src/3rdparty/chromium/third_party/openh264/src + if [ -d ${WORKDIR}/third_party_openh264 ];then + cp -r ${WORKDIR}/third_party_openh264/* ${S}/src/3rdparty/chromium/third_party/openh264/src/ + fi } + +# fix libwebp err depend, add libwebp-native, sync from new version upstream-recipes +PACKAGECONFIG[libwebp] = "-feature-webengine-system-libwebp,-no-feature-webengine-system-libwebp,libwebp libwebp-native" +# use oee's ffmpeg, third_party source from qtwebengine in src-openeuler have removed +PACKAGECONFIG[ffmpeg] = "-feature-webengine-system-ffmpeg,-no-feature-webengine-system-ffmpeg,ffmpeg" + +# video need proprietary-codecs(include openh264) to enable, +# If used for commercial purposes, self evaluation and authorization are required +# openh264 LICENSE notice: https://www.openh264.org/faq.html. +PACKAGECONFIG = " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'LICENSE_AT_OWN_RISK', ' proprietary-codecs ', '', d)} \ + webrtc \ + ffmpeg \ + libwebp \ + opus \ + libvpx \ + libevent \ + libpng \ + glib \ + zlib \ + pepper-plugins \ + printing-and-pdf \ + spellchecker \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \ +" diff --git a/meta-openeuler/dynamic-layers/ros2-layer/recipes-ros/python/python3-distlib_%.bbappend b/meta-openeuler/dynamic-layers/ros2-layer/recipes-ros/python/python3-distlib_%.bbappend index 4d1264fa2dbdc2142b1c80456486be7bfce9a99c..5f76258c1dfe88988046bd31877f2dd6989e61ff 100644 --- a/meta-openeuler/dynamic-layers/ros2-layer/recipes-ros/python/python3-distlib_%.bbappend +++ b/meta-openeuler/dynamic-layers/ros2-layer/recipes-ros/python/python3-distlib_%.bbappend @@ -1,10 +1,5 @@ PV = "0.3.6" - -OPENEULER_REPO_NAME = "python-${PYPI_PACKAGE}" - -# use openeuler's pkg src - -SRC_URI:prepend = "file://${PYPI_PACKAGE}-${PV}.tar.gz " +require pypi-src-openeuler.inc SRC_URI += " \ file://0001-add-setup.py.patch \ diff --git a/meta-openeuler/recipes-arm/arm-compute-library/arm-compute-library_%.bbappend b/meta-openeuler/recipes-arm/arm-compute-library/arm-compute-library_%.bbappend index 1c4ad36a0da54606725cc2146098021d2110c633..9583beb352dc3351d5178d3eb9d7f44faee6f6b2 100644 --- a/meta-openeuler/recipes-arm/arm-compute-library/arm-compute-library_%.bbappend +++ b/meta-openeuler/recipes-arm/arm-compute-library/arm-compute-library_%.bbappend @@ -13,7 +13,7 @@ SRC_URI[arm-compute-library.sha256sum] = "2f70f54d84390625222503ea38650c00c49d4b S = "${WORKDIR}/ComputeLibrary-${PV}" -EXTRA_OESCONS = "arch=arm64-v8a extra_cxx_flags="-fPIC -Wno-unused-but-set-variable -Wno-ignored-qualifiers -Wno-noexcept" benchmark_tests=1 validation_tests=0 set_soname=1" +EXTRA_OESCONS = "arch=arm64-v8a extra_cxx_flags="-fPIC -Wno-unused-but-set-variable -Wno-ignored-qualifiers -Wno-noexcept -Wno-strict-overflow -Wno-array-bounds" benchmark_tests=1 validation_tests=0 set_soname=1" EXTRA_OESCONS += "neon=1 opencl=0 embed_kernels=1" EXTRA_OESCONS:remove = "MAXLINELENGTH=2097152" diff --git a/meta-openeuler/recipes-arm/armnn/armnn/0002-add-inculde-iterator.patch b/meta-openeuler/recipes-arm/armnn/armnn/0002-add-inculde-iterator.patch new file mode 100644 index 0000000000000000000000000000000000000000..201b5b306cc1ad626f7fb33a51de62d76cf233f7 --- /dev/null +++ b/meta-openeuler/recipes-arm/armnn/armnn/0002-add-inculde-iterator.patch @@ -0,0 +1,11 @@ +diff -uprN a/tests/TfLiteYoloV3Big-Armnn/TfLiteYoloV3Big-Armnn.cpp b/tests/TfLiteYoloV3Big-Armnn/TfLiteYoloV3Big-Armnn.cpp +--- a/tests/TfLiteYoloV3Big-Armnn/TfLiteYoloV3Big-Armnn.cpp 2024-07-17 07:58:32.244108640 +0000 ++++ b/tests/TfLiteYoloV3Big-Armnn/TfLiteYoloV3Big-Armnn.cpp 2024-07-17 07:56:31.949756463 +0000 +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + using namespace armnnTfLiteParser; + using namespace armnn; diff --git a/meta-openeuler/recipes-arm/armnn/armnn/0003-change-absl-libs-path.patch b/meta-openeuler/recipes-arm/armnn/armnn/0003-change-absl-libs-path.patch new file mode 100644 index 0000000000000000000000000000000000000000..947fc1e7d381c866f921073d0f9ff5528d5d3a9c --- /dev/null +++ b/meta-openeuler/recipes-arm/armnn/armnn/0003-change-absl-libs-path.patch @@ -0,0 +1,18 @@ +diff -urpN a/delegate/cmake/Modules/FindTfLite.cmake b/delegate/cmake/Modules/FindTfLite.cmake +--- a/delegate/cmake/Modules/FindTfLite.cmake 2024-07-21 21:41:44.597112645 +0800 ++++ b/delegate/cmake/Modules/FindTfLite.cmake 2024-07-21 21:40:25.159199380 +0800 +@@ -22,10 +22,10 @@ find_library(TfLite_LIB NAMES "libtensor + # If the static library was found, gather all of its dependencies + if (TfLite_LIB MATCHES .a$) + message("-- Static tensorflow lite library found, using for ArmNN build") +- find_library(TfLite_abseilstrings_LIB "libabsl_strings.a" +- PATH ${TFLITE_LIB_ROOT}/_deps/abseil-cpp-build/absl/strings) +- find_library(TfLite_abseil_synchronization_LIB "libabsl_synchronization.a" +- PATH ${TFLITE_LIB_ROOT}/_deps/abseil-cpp-build/absl/synchronization) ++ find_library(TfLite_abseilstrings_LIB "libabsl_strings.so" ++ PATH ${TFLITE_LIB_ROOT}) ++ find_library(TfLite_abseil_synchronization_LIB "libabsl_synchronization.so" ++ PATH ${TFLITE_LIB_ROOT}) + + + find_library(TfLite_farmhash_LIB "libfarmhash.a" diff --git a/meta-openeuler/recipes-arm/armnn/armnn_%.bbappend b/meta-openeuler/recipes-arm/armnn/armnn_%.bbappend index 0759fdc4ce7e68884994b5b556f06a0c28f753e1..3516a50bad9a4eefcba56dee2652c54603d6553d 100644 --- a/meta-openeuler/recipes-arm/armnn/armnn_%.bbappend +++ b/meta-openeuler/recipes-arm/armnn/armnn_%.bbappend @@ -76,6 +76,8 @@ SRC_URI += " \ file://${BP}.tar.gz \ file://armnn-use-static-libraries.patch \ file://0001-modify-cmake-files.patch \ + file://0002-add-inculde-iterator.patch \ + file://0003-change-absl-libs-path.patch \ " S = "${WORKDIR}/${BP}" diff --git a/meta-openeuler/recipes-browser/firefox/firefox-bin_115.bb b/meta-openeuler/recipes-browser/firefox/firefox-bin_115.bb index 8f2f703599b77e80a7ac7d7217cab157e2dd6cdb..1688ada0b278355b72d056a0c02e79f06b3a0fd9 100644 --- a/meta-openeuler/recipes-browser/firefox/firefox-bin_115.bb +++ b/meta-openeuler/recipes-browser/firefox/firefox-bin_115.bb @@ -29,7 +29,7 @@ SRC_URI[x86.md5sum] = "14974c129ca66e9227535836468d70ba" S = "${WORKDIR}/${BP}" -RDEPENDS:${PN} += "libvpx libwebp ffmpeg dbus-glib" +RDEPENDS:${PN} += "libvpx libwebp ffmpeg dbus-glib nss nspr " do_install:append() { # openeuler embedded shell binary not in usr, fix it diff --git a/meta-openeuler/recipes-containers/kubeedge/kubeedge_1.8.0.bb b/meta-openeuler/recipes-containers/kubeedge/kubeedge_1.8.0.bb index 9a0747889d010c073ad1df2dcaa5781adafb380a..61a8d85e8a5b535f3099dd583e9ddfb2d1bf8a45 100644 --- a/meta-openeuler/recipes-containers/kubeedge/kubeedge_1.8.0.bb +++ b/meta-openeuler/recipes-containers/kubeedge/kubeedge_1.8.0.bb @@ -160,7 +160,7 @@ FILES:edgesite = " \ ${bindir}/edgesite-server \ " -FILES:keadmtarball = "/${TARBALL_NAME}.tar.gz /checksum_${TARBALL_NAME}.tar.gz.txt /kubeedge-v1.8.0-linux-arm64" +FILES:keadmtarball = "/${TARBALL_NAME}.tar.gz /checksum_${TARBALL_NAME}.tar.gz.txt /${TARBALL_NAME} " # If board config use =y instead ko, remove it from bbappend. RDEPENDS:edgecore += " \ diff --git a/meta-openeuler/recipes-core/images/openeuler-image-mcs.bb b/meta-openeuler/recipes-core/images/openeuler-image-mcs.bb index c5a98a4f386c14fb34c64d18646364892278ba58..b961b464f25a08eadddc8ae5721a7647c4b39598 100644 --- a/meta-openeuler/recipes-core/images/openeuler-image-mcs.bb +++ b/meta-openeuler/recipes-core/images/openeuler-image-mcs.bb @@ -6,8 +6,12 @@ require openeuler-image-common.inc inherit features_check REQUIRED_DISTRO_FEATURES = "mcs" -# currently, only openamp requrires re-generating dtb -inherit ${@bb.utils.contains('MCS_FEATURES', 'openamp', 'qemuboot-mcs-dtb', '', d)} +# Only inherit the qemuboot classes when building for a qemu machine +QB_QEMU_CLASSES = "" +QB_QEMU_CLASSES:append:qemuall = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' qemuboot-xen-defaults qemuboot-xen-dtb', '', d)}" +QB_QEMU_CLASSES:append:qemuall = "${@bb.utils.contains('MCS_FEATURES', 'openamp', ' qemuboot-mcs-dtb', '', d)}" +QB_MEM = "-m 1048" +inherit ${QB_QEMU_CLASSES} IMAGE_FEATURES:remove = "weston" @@ -25,7 +29,6 @@ python () { # qemu-aarch64 related handling if 'qemu-aarch64' in machine: - d.setVar('QB_MEM', '-m 2G') mcs_features = d.getVar('MCS_FEATURES').split() if 'openamp' in mcs_features: d.setVar('QB_KERNEL_CMDLINE_APPEND', 'maxcpus=3') diff --git a/meta-openeuler/recipes-core/images/openeuler-image-sdk.inc b/meta-openeuler/recipes-core/images/openeuler-image-sdk.inc index 8028eff166064f3662873e944e7567d462ba1a77..2fdf7b7b26ce4f16301c8a0926f95622fbb9295d 100644 --- a/meta-openeuler/recipes-core/images/openeuler-image-sdk.inc +++ b/meta-openeuler/recipes-core/images/openeuler-image-sdk.inc @@ -1,14 +1,16 @@ # set IMAGE_LOCALES_ARCHIVE to 0 and unset SDKIMAGE_LINGUAS, to avoid run generate_locale_archive() IMAGE_LOCALES_ARCHIVE = "0" + + # currently we don't install language configurations SDKIMAGE_LINGUAS = "" -SDK_RELOCATE_AFTER_INSTALL = "0" - +SDK_RELOCATE_AFTER_INSTALL = "${@['1', '0']['${OPENEULER_PREBUILT_TOOLS_ENABLE}' == 'yes']}" export SDK_OS = "linux" - +# when PREBUILT_TOOLCHAIN_ENABLE is yes # no need generate host packages, we directly use them in docker env, default in populate_sdk_base.bbclass -TOOLCHAIN_HOST_TASK:remove = "nativesdk-packagegroup-sdk-host" - +# when PREBUILT_TOOLCHAIN_ENABLE is no, most native/nativesdk packages can be built +# so we can follow poky's original way to handle sdk +TOOLCHAIN_HOST_TASK:remove = "${@["", 'nativesdk-packagegroup-sdk-host']['${OPENEULER_PREBUILT_TOOLS_ENABLE}' == 'yes']}" # use prebuilt tools build SDK_DEPENDS:remove = "${@['', '${SDK_ARCHIVE_DEPENDS} cross-localedef-native']['${OPENEULER_PREBUILT_TOOLS_ENABLE}' == 'yes']}" @@ -64,6 +66,10 @@ add_include_link() { # must relative path, otherwise will not found after decompression. ln -s ../../../${REAL_MULTIMACH_TARGET_SYS}/usr/include include cd - + +# the external toolchain in container may be read-only because of container configuration, +# so we need to make it writable here to guarantee the SDK after installation is writeable + chmod -R u+w ${SDK_OUTPUT}/${SDKPATH}/sysroots } # functions added to last after sdk has been created @@ -83,4 +89,3 @@ libstdc++-dev \ # static lib need for sdk toolchian SDKIMAGE_FEATURES:append = " staticdev-pkgs dev-pkgs src-pkgs dbg-pkgs " - diff --git a/meta-openeuler/recipes-core/libboundscheck/libboundscheck_1.1.11.bb b/meta-openeuler/recipes-core/libboundscheck/libboundscheck_1.1.11.bb index 06c29d2d815ba158710acdce97929f06daff9535..b1f583855eda6839cd357b2f985e049d8fc3104a 100644 --- a/meta-openeuler/recipes-core/libboundscheck/libboundscheck_1.1.11.bb +++ b/meta-openeuler/recipes-core/libboundscheck/libboundscheck_1.1.11.bb @@ -7,9 +7,8 @@ PV = "v1.1.11" SRC_URI = "file://${BP}.tar.gz" -INSANE_SKIP:${PN} += "already-stripped" -FILES:${PN}-dev = "${includedir}" -FILES:${PN} = "${libdir}" +# Makefile does not use the LDFLAGS environment variable, so the CC environment variable is used to include LDFLAGS +TARGET_CC_ARCH += "${LDFLAGS}" do_install () { install -d ${D}${libdir}/ @@ -17,3 +16,8 @@ do_install () { install -m 0755 ${S}/lib/libboundscheck.so ${D}${libdir}/ install -m 554 ${S}/include/*.h ${D}${includedir}/ } + +FILES:${PN} = "${libdir}" +FILES:${PN}-dev = "${includedir}" + +INSANE_SKIP:${PN} += "already-stripped" diff --git a/meta-openeuler/recipes-core/ncurses/ncurses_%.bbappend b/meta-openeuler/recipes-core/ncurses/ncurses_%.bbappend index abaf642702b495f435267f896610075b4c785a87..a970549a83d4a114584f90b64757be8795ef5518 100644 --- a/meta-openeuler/recipes-core/ncurses/ncurses_%.bbappend +++ b/meta-openeuler/recipes-core/ncurses/ncurses_%.bbappend @@ -1,5 +1,5 @@ - PV = "6.4" +CVE_VERSION = "${PV}" # files, patches can't be applied in openeuler or conflict with openeuler # CVE-2021-39537.patch from poky is for 6.2 and no need for openeuler 6.3 version @@ -9,8 +9,6 @@ SRC_URI:remove = " \ file://CVE-2021-39537.patch \ " -S = "${WORKDIR}/${BP}" -FILESEXTRAPATHS:prepend := "${THISDIR}/files/:" # files, patches that come from openeuler SRC_URI += "file://${BP}.tar.gz \ file://ncurses-config.patch \ @@ -25,7 +23,10 @@ SRC_URI += "file://${BP}.tar.gz \ file://backport-CVE-2023-45918.patch \ " +FILESEXTRAPATHS:prepend := "${THISDIR}/files/:" # from oe-core SRC_URI += "\ - file://exit_prototype.patch \ -" \ No newline at end of file + file://exit_prototype.patch \ +" + +S = "${WORKDIR}/${BP}" diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-hmi.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-hmi.bb index 11641d4c2486d5ec3f38b7ff2f235d0d51f5353e..f9f3b44ad77602ddbf206a23b813f5b06b58a7b4 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-hmi.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-hmi.bb @@ -6,8 +6,6 @@ PR = "r1" PACKAGES = "${PN}" RDEPENDS:${PN} = " \ -qtwebbrowser \ -wayfire \ pcmanfm \ lxterminal \ lxtask \ @@ -17,5 +15,6 @@ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'udev-extraconf', d)} \ adwaita-icon-theme \ ttf-wqy-zenhei \ firefox-bin \ +labwc \ " diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-mcs.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-mcs.bb index 1b7db55bd37b9681c3b0a5d33d10bc3d44d281ad..9fc796882e8e4c8d806a3490dc8c08280686eb64 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-mcs.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-mcs.bb @@ -19,6 +19,7 @@ mcs-linux \ ${@bb.utils.contains('MCS_FEATURES', 'openamp', 'mcs-km', '', d)} \ ${@bb.utils.contains('MCS_FEATURES', 'jailhouse', 'jailhouse', '', d)} \ ${@bb.utils.contains('MCS_FEATURES', 'zephyr', 'zephyr-image', '', d)} \ +${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'packagegroup-xen', '', d)} \ " ### MCS DEPLOY TOOLS diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-xen.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-xen.bb new file mode 100644 index 0000000000000000000000000000000000000000..3e37d0b16f37c638d16781133b64bfa1f39ac2f4 --- /dev/null +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-xen.bb @@ -0,0 +1,35 @@ +SUMMARY = "packages for xen dom0" +PACKAGE_ARCH = "${MACHINE_ARCH}" +inherit packagegroup + +PR = "r1" + +PACKAGES = "${PN}" + +XEN_KERNEL_MODULES ?= "kernel-module-xen-blkback kernel-module-xen-gntalloc \ + kernel-module-xen-gntdev kernel-module-xen-netback kernel-module-xen-wdt \ + ${@bb.utils.contains('MACHINE_FEATURES', 'pci', "${XEN_PCIBACK_MODULE}", '', d)} \ + ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', '${XEN_ACPI_PROCESSOR_MODULE}', '', d)} \ + " + +RDEPENDS:${PN} = " \ + ${XEN_KERNEL_MODULES} \ + xen-tools \ + " + +# The hypervisor may not be within the dom0 filesystem image but at least +# ensure that it is deployable: +DEPENDS = " \ + xen \ + " + +# Networking for HVM-mode guests (x86/64 only) requires the tun kernel module +RDEPENDS:${PN}:append:x86-64 = " kernel-module-tun" + +# Linux kernel option CONFIG_XEN_PCIDEV_BACKEND depends on X86 +XEN_PCIBACK_MODULE = "" +XEN_PCIBACK_MODULE:x86 = "kernel-module-xen-pciback" +XEN_PCIBACK_MODULE:x86-64 = "kernel-module-xen-pciback" +XEN_ACPI_PROCESSOR_MODULE = "" +XEN_ACPI_PROCESSOR_MODULE:x86 = "kernel-module-xen-acpi-processor" +XEN_ACPI_PROCESSOR_MODULE:x86-64 = "kernel-module-xen-acpi-processor" diff --git a/meta-openeuler/recipes-devtools/gdb/gdb-cross-canadian_%.bbappend b/meta-openeuler/recipes-devtools/gdb/gdb-cross-canadian_%.bbappend index c18229809af885c829d5b057a62e17c9fa0ff2be..a5edcaddeecdb071ccbb0a788f264338a8f5aaa8 100644 --- a/meta-openeuler/recipes-devtools/gdb/gdb-cross-canadian_%.bbappend +++ b/meta-openeuler/recipes-devtools/gdb/gdb-cross-canadian_%.bbappend @@ -1 +1,4 @@ require gdb-src.inc + +# keep same with upstream +DEPENDS += "nativesdk-mpfr" diff --git a/meta-openeuler/recipes-devtools/gdb/gdb-cross_%.bbappend b/meta-openeuler/recipes-devtools/gdb/gdb-cross_%.bbappend index c18229809af885c829d5b057a62e17c9fa0ff2be..42549686c560c97d4af23dea9a8c9a4a38e3c754 100644 --- a/meta-openeuler/recipes-devtools/gdb/gdb-cross_%.bbappend +++ b/meta-openeuler/recipes-devtools/gdb/gdb-cross_%.bbappend @@ -1 +1,4 @@ require gdb-src.inc + +# keep same with upstream +DEPENDS += "mpfr-native" diff --git a/meta-openeuler/recipes-devtools/gdb/gdb-src.inc b/meta-openeuler/recipes-devtools/gdb/gdb-src.inc index dda2436376263eb5728440057fc7fda0a0d1320b..82bbb1640b7f8fa49df35d9296b62aed19cddd7a 100644 --- a/meta-openeuler/recipes-devtools/gdb/gdb-src.inc +++ b/meta-openeuler/recipes-devtools/gdb/gdb-src.inc @@ -98,4 +98,3 @@ do_install:append:riscv64() { rm -rf ${D}/usr/lib64 } -DEPENDS += "mpfr" diff --git a/meta-openeuler/recipes-devtools/gdb/gdb_%.bbappend b/meta-openeuler/recipes-devtools/gdb/gdb_%.bbappend index f8756bdbb5d78521e6d9744a0e5d050b283bea5a..d24ee137d13c63e8f8fa964817c2d9cd24086080 100644 --- a/meta-openeuler/recipes-devtools/gdb/gdb_%.bbappend +++ b/meta-openeuler/recipes-devtools/gdb/gdb_%.bbappend @@ -2,3 +2,6 @@ # ref: http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-devtools/gdb/gdb_12.1.bb?id=8d42315c074a97 require gdb-src.inc + +# keep same with upstream +DEPENDS += "mpfr" diff --git a/meta-openeuler/recipes-devtools/jsoncpp/jsoncpp_%.bbappend b/meta-openeuler/recipes-devtools/jsoncpp/jsoncpp_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..3a91f5ba7c8f6bb56ffbdeafe127c7bcb0d4041d --- /dev/null +++ b/meta-openeuler/recipes-devtools/jsoncpp/jsoncpp_%.bbappend @@ -0,0 +1,12 @@ +# main bb: yocto-meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.5.bb + +PV = "1.9.5" + +SRC_URI:prepend = " \ + file://${BP}.tar.gz \ + file://0001-Parse-large-floats-as-infinity-1349-1353.patch \ + file://0001-Use-default-rather-than-hard-coded-8-for-maximum-agg.patch \ +" + +S = "${WORKDIR}/${BP}" + diff --git a/meta-openeuler/recipes-extended/libvarlink/libvarlink_%.bbappend b/meta-openeuler/recipes-extended/libvarlink/libvarlink_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..1990d5f89721e3c9ec55000f09438915bc5f03f5 --- /dev/null +++ b/meta-openeuler/recipes-extended/libvarlink/libvarlink_%.bbappend @@ -0,0 +1,13 @@ +# main bb: meta-wayland/recipes-extended/libvarlink/libvarlink_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" + +PV = "23" + +SRC_URI += " \ + file://${BP}.tar.gz \ +" + +S = "${WORKDIR}/${BP}" + diff --git a/meta-openeuler/recipes-extended/libvarlink/libvarlink_git.bb b/meta-openeuler/recipes-extended/libvarlink/libvarlink_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..4b88e0d19b82b9fb484d7dd4030b5adfaa5056da --- /dev/null +++ b/meta-openeuler/recipes-extended/libvarlink/libvarlink_git.bb @@ -0,0 +1,21 @@ +SUMMARY = "varlink is an interface description format and protocol accessible to both humans and machines." +HOMEPAGE = "https://varlink.org" +LICENSE = "Apache-2.0 & BSD-3-Clause" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=e316e9609dd7672b87ff25b46b2cf3e1" + +SRC_URI = " \ + git://github.com/varlink/libvarlink.git;protocol=https;branch=master \ +" + +inherit meson + +S = "${WORKDIR}/git" +PV = "23" +SRCREV = "d377218338b706ce3ff517a80fc0f1b1cfd8fe80" + +EXTRA_OEMESON += "--buildtype release" + +FILES:${PN} += "${datadir}" + +BBCLASSEXTEND = "" diff --git a/meta-openeuler/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_%.bbappend b/meta-openeuler/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..9e5b2d194c0c97c563bfbe08cd331477a51a37a9 --- /dev/null +++ b/meta-openeuler/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_%.bbappend @@ -0,0 +1,10 @@ +# main bb: yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_42.0.bb + +PV = "45.0" + +SRC_URI:prepend = " \ + file://${BP}.tar.xz \ +" + +S = "${WORKDIR}/${BP}" + diff --git a/meta-openeuler/recipes-graphics/kmscube/kmscube_%.bbappend b/meta-openeuler/recipes-graphics/kmscube/kmscube_%.bbappend index 7c87aed17e1793da02500fba337e644d065ffd66..427c2a6eb84d39b00f5add871f75ed50c8aa232e 100644 --- a/meta-openeuler/recipes-graphics/kmscube/kmscube_%.bbappend +++ b/meta-openeuler/recipes-graphics/kmscube/kmscube_%.bbappend @@ -3,6 +3,6 @@ OPENEULER_LOCAL_NAME = "oee_archive" -SRC_URI = "file://${OPENEULER_LOCAL_NAME}/${BPN}/${BPN}.tar.gz" +SRC_URI += "file://${OPENEULER_LOCAL_NAME}/${BPN}/${BPN}.tar.gz" SRC_URI[sha256sum] = "9095a2093ea8ac3991da45b1bce872c4f90b262aa8076a227d5af35144cb5c0b" diff --git a/meta-openeuler/recipes-kernel/linux/files/meta-data/features/xen/xen.cfg b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/xen/xen.cfg new file mode 100644 index 0000000000000000000000000000000000000000..af821d2f2e379d7b3cfb0a608a6a5b423d92897c --- /dev/null +++ b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/xen/xen.cfg @@ -0,0 +1,49 @@ +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_XEN=y +CONFIG_XEN_DOM0=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_SAVE_RESTORE=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_PVH=y +CONFIG_MMU_NOTIFIER=y +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_PCI_XEN=y +CONFIG_XEN_PCIDEV_FRONTEND=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_XEN_WDT=m +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_XEN_FBDEV_FRONTEND=y +CONFIG_XEN_BALLOON=y +CONFIG_XEN_SCRUB_PAGES_DEFAULT=y +CONFIG_XEN_DEV_EVTCHN=y +CONFIG_XEN_BACKEND=y +CONFIG_XENFS=y +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_SWIOTLB_XEN=y +CONFIG_XEN_PCIDEV_BACKEND=m +CONFIG_XEN_PRIVCMD=y +CONFIG_XEN_ACPI_PROCESSOR=m +CONFIG_XEN_MCE_LOG=y +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_EFI=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_ACPI=y diff --git a/meta-openeuler/recipes-kernel/linux/files/meta-data/features/xen/xen.scc b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/xen/xen.scc new file mode 100644 index 0000000000000000000000000000000000000000..b588e5df94558f88446a5e4f037c9355e6b6d043 --- /dev/null +++ b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/xen/xen.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Xen Kernel Support" +define KFEATURE_COMPATIBILITY arch + +kconf non-hardware xen.cfg diff --git a/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc b/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc index 7cde97d420da7bc38bd6a9aa07cee65ed7a83065..bbbd1f9d1011473748722c5773503897cfa6ef15 100644 --- a/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc +++ b/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc @@ -95,6 +95,8 @@ KERNEL_FEATURES:append = " \ KERNEL_FEATURES:append:x86-64 = " \ ${@bb.utils.contains('MCS_FEATURES', 'openamp', 'features/mcs/0001-x86-irq-add-a-vector-define-for-mcs.patch', '', d)} \ " +# xen kernel support +KERNEL_FEATURES:append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' features/xen/xen.scc', '', d)}" KERNEL_FEATURES:append = " \ ${@bb.utils.contains('DISTRO_FEATURES', 'kubeedge', 'features/kubeedge/kubeedge.scc', '', d)} \ diff --git a/meta-openeuler/recipes-mcs/xen/files/0001-arm-silence-gcc14-warning-error-on-irq-bounds-check.patch b/meta-openeuler/recipes-mcs/xen/files/0001-arm-silence-gcc14-warning-error-on-irq-bounds-check.patch new file mode 100644 index 0000000000000000000000000000000000000000..a3dbbbb4f422a76d73e54c50794c157c63b5d33f --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/files/0001-arm-silence-gcc14-warning-error-on-irq-bounds-check.patch @@ -0,0 +1,68 @@ +From 2258853a19b2d0b1fafd901cddf69f730c38d450 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield +Date: Fri, 31 May 2024 14:50:33 +0000 +Subject: [PATCH] arm: silence gcc14 warning (error) on irq bounds check + +While we wait for upstream to update to gcc14, we add a quick +check to avoid gcc14 not being able to confirm that IRQ is +greater than 0 and hence throws a warning, which leads to an +error. + +| In function '__irq_to_desc', +| inlined from 'route_irq_to_guest' at arch/arm/irq.c:467:12: +| arch/arm/irq.c:65:16: error: array subscript -2 is below array bounds of 'irq_desc_t[32]' {aka 'struct irq_desc[32]'} [-Werror=array-bounds=] +| 65 | return &this_cpu(local_irq_desc)[irq]; +| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Upstream-Status: Pending [the xen folks understand the code and the right fix .. I don't] + +Signed-off-by: Bruce Ashfield +--- + xen/arch/arm/irq.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c +index ae69fb4aeb..dcac86bd84 100644 +--- a/xen/arch/arm/irq.c ++++ b/xen/arch/arm/irq.c +@@ -58,8 +58,13 @@ hw_irq_controller no_irq_type = { + static irq_desc_t irq_desc[NR_IRQS]; + static DEFINE_PER_CPU(irq_desc_t[NR_LOCAL_IRQS], local_irq_desc); + ++ + struct irq_desc *__irq_to_desc(int irq) + { ++ /* silence gcc14 warning */ ++ if ( irq < 0 ) ++ return &this_cpu(local_irq_desc)[0]; ++ + if ( irq < NR_LOCAL_IRQS ) + return &this_cpu(local_irq_desc)[irq]; + +@@ -723,16 +728,16 @@ int platform_get_irq(const struct dt_device_node *device, int index) + + int platform_get_irq_byname(const struct dt_device_node *np, const char *name) + { +- int index; ++ int index; + +- if ( unlikely(!name) ) +- return -EINVAL; ++ if ( unlikely(!name) ) ++ return -EINVAL; + +- index = dt_property_match_string(np, "interrupt-names", name); +- if ( index < 0 ) +- return index; ++ index = dt_property_match_string(np, "interrupt-names", name); ++ if ( index < 0 ) ++ return index; + +- return platform_get_irq(np, index); ++ return platform_get_irq(np, index); + } + + /* +-- +2.39.2 + diff --git a/meta-openeuler/recipes-mcs/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch b/meta-openeuler/recipes-mcs/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch new file mode 100644 index 0000000000000000000000000000000000000000..b8711756bc3423e23f3e512d80a19b4a118c30cb --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch @@ -0,0 +1,57 @@ +From b300c18ab899b3c899e5405c96c20a32e51d77c8 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield +Date: Mon, 2 Jul 2018 23:10:28 -0400 +Subject: [PATCH] xen: Fix menuconfig and add support for config fragments and + +Upstream-Status: Inappropriate [oe specific, cross compile issue] + +Signed-off-by: Diego Sueiro +commit e6972e689a980ab28637e94e48c77eeace6abde5 + + xen/kconfig,menuconfig,mconf-cfg: Allow specification of ncurses location + + In some cross build environments such as the Yocto Project build + environment it provides an ncurses library that is compiled + differently than the host's version. This causes display corruption + problems when the host's curses includes are used instead of the + includes from the provided compiler are overridden. There is a second + case where there is no curses libraries at all on the host system and + menuconfig will just fail entirely. + + The solution is simply to allow an override variable in + check-lxdialog.sh for environments such as the Yocto Project. Adding + a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing + compiling and linking against the right headers and libraries. + + Change-Id: Ibe8dfafc90655e3be2671dbbb0cb7f5631fc4d44 + Signed-off-by: Jason Wessel + cc: Michal Marek + cc: linux-kbuild@vger.kernel.org + Signed-off-by: Bruce Ashfield + +--- + xen/tools/kconfig/mconf-cfg.sh | 8 ++++++++ + 1 file changed, 8 insertions(+) + mode change 100755 => 100644 xen/tools/kconfig/mconf-cfg.sh + +diff --git a/xen/tools/kconfig/mconf-cfg.sh b/xen/tools/kconfig/mconf-cfg.sh +old mode 100755 +new mode 100644 +index c812872d7f..56eb4fc79f +--- a/xen/tools/kconfig/mconf-cfg.sh ++++ b/xen/tools/kconfig/mconf-cfg.sh +@@ -4,6 +4,14 @@ + PKG="ncursesw" + PKG2="ncurses" + ++if [ "$CROSS_CURSES_LIB" != "" ]; then ++ echo libs=\'$CROSS_CURSES_LIB\' ++ if [ x"$CROSS_CURSES_INC" != x ]; then ++ echo cflags=\'$CROSS_CURSES_INC\' ++ fi ++ exit 0 ++fi ++ + if [ -n "$(command -v pkg-config)" ]; then + if pkg-config --exists $PKG; then + echo cflags=\"$(pkg-config --cflags $PKG)\" diff --git a/meta-openeuler/recipes-mcs/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch b/meta-openeuler/recipes-mcs/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch new file mode 100644 index 0000000000000000000000000000000000000000..7ac1a399a2db24ac1440f0fff7d40c171f592aad --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch @@ -0,0 +1,43 @@ +Upstream-Status: Pending + +diff --git a/tools/pygrub/Makefile b/tools/pygrub/Makefile +index 4963bc89c6..c1c05eb421 100644 +--- a/tools/pygrub/Makefile ++++ b/tools/pygrub/Makefile +@@ -13,14 +13,14 @@ setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLA + all: build + .PHONY: build + build: +- $(setup.py) build ++ $(setup.py) build $(DISTUTILS_BUILD_ARGS) + + .PHONY: install + install: all + $(INSTALL_DIR) $(DESTDIR)/$(bindir) + $(INSTALL_DIR) $(DESTDIR)/$(LIBEXEC_BIN) + $(setup.py) install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \ +- --root="$(DESTDIR)" --force ++ --root="$(DESTDIR)" --force $(DISTUTILS_INSTALL_ARGS) + $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(LIBEXEC_BIN)/pygrub + set -e; if [ $(bindir) != $(LIBEXEC_BIN) -a \ + "`readlink -f $(DESTDIR)/$(bindir)`" != \ +diff --git a/tools/python/Makefile b/tools/python/Makefile +index 437431c48e..0a99c2067e 100644 +--- a/tools/python/Makefile ++++ b/tools/python/Makefile +@@ -16,13 +16,13 @@ setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLA + + .PHONY: build + build: +- $(setup.py) build ++ $(setup.py) build $(DISTUTILS_BUILD_ARGS) + + .PHONY: install + install: + $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN) + $(setup.py) install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \ +- --root="$(DESTDIR)" --force ++ --root="$(DESTDIR)" --force $(DISTUTILS_INSTALL_ARGS) + $(INSTALL_PYTHON_PROG) scripts/convert-legacy-stream $(DESTDIR)$(LIBEXEC_BIN) + $(INSTALL_PYTHON_PROG) scripts/verify-stream-v2 $(DESTDIR)$(LIBEXEC_BIN) + diff --git a/meta-openeuler/recipes-mcs/xen/xen-arch.inc b/meta-openeuler/recipes-mcs/xen/xen-arch.inc new file mode 100644 index 0000000000000000000000000000000000000000..fb0093e3926c95645641a6826e69c83b37a2652b --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-arch.inc @@ -0,0 +1,18 @@ + +valid_xen_archs = " \ + x86_64 x86_32 \ + arm32 arm64 \ + " + +def map_xen_arch(a, d): + import re + valid_archs = d.getVar('valid_xen_archs').split() + + if re.match("i.86", a): return "x86_32" + elif re.match("x86.64", a): return "x86_64" + elif re.match("arm.*", a): return "arm32" + elif re.match("aarch64.*", a): return "arm64" + elif a in valid_archs: return a + else: + return "INVALID" + diff --git a/meta-openeuler/recipes-mcs/xen/xen-blktap.inc b/meta-openeuler/recipes-mcs/xen/xen-blktap.inc new file mode 100644 index 0000000000000000000000000000000000000000..2c8cb1fd4dbb9b3cb535fc665c5a866c0ab191fd --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-blktap.inc @@ -0,0 +1,76 @@ +# The Xen block tap components are packaged separately here to support +# the option to build them in a separate recipe from xen-tools. + +BLKTAP_PACKAGES ?= " \ + ${PN}-blktap \ + ${PN}-libblktap \ + ${PN}-libblktapctl \ + ${PN}-libblktapctl-dev \ + ${PN}-libblktap-dev \ + ${PN}-libvhd \ + ${PN}-libvhd-dev \ + ${PN}-blktap-staticdev \ + " + +BLKTAP_PROVIDES ?= " \ + virtual/blktap \ + virtual/libblktap \ + virtual/libblktapctl \ + virtual/libvhd \ + " + +BLKTAP_RRECOMMENDS ?= " \ + virtual-blktap \ + virtual-libblktap \ + virtual-libblktapctl \ + virtual-libvhd \ + " + +RPROVIDES:${PN}-blktap = "virtual-blktap" +RPROVIDES:${PN}-libblktap = "virtual-libblktap" +RPROVIDES:${PN}-libblktapctl = "virtual-libblktapctl" +RPROVIDES:${PN}-libvhd = "virtual-libvhd" + +FILES:${PN}-blktap-staticdev += "\ + ${libdir}/libblktapctl.a \ + ${libdir}/libvhd.a \ + ${libdir}/libblktap.a \ + " + +FILES:${PN}-libblktapctl = "${libdir}/libblktapctl.so.*" +FILES:${PN}-libblktapctl-dev = " \ + ${libdir}/libblktapctl.so \ + ${libdir}/pkgconfig/xenblktapctl.pc \ + ${datadir}/pkgconfig/xenblktapctl.pc \ + " + +FILES:${PN}-libvhd = "${libdir}/libvhd.so.*" +FILES:${PN}-libvhd-dev = " \ + ${libdir}/libvhd.so \ + ${libdir}/pkgconfig/vhd.pc \ + ${datadir}/pkgconfig/vhd.pc \ + " + +FILES:${PN}-libblktap = "${libdir}/libblktap.so.*" +FILES:${PN}-libblktap-dev = " \ + ${libdir}/libblktap.so \ + ${libdir}/pkgconfig/blktap.pc \ + ${datadir}/pkgconfig/blktap.pc \ + " + +FILES:${PN}-blktap = "\ + ${sbindir}/blktapctrl \ + ${sbindir}/img2qcow \ + ${sbindir}/lock-util \ + ${sbindir}/qcow2raw \ + ${sbindir}/qcow-create \ + ${sbindir}/tap-ctl \ + ${sbindir}/tapdisk \ + ${sbindir}/tapdisk2 \ + ${sbindir}/tapdisk-client \ + ${sbindir}/tapdisk-diff \ + ${sbindir}/tapdisk-stream \ + ${sbindir}/td-util \ + ${sbindir}/vhd-update \ + ${sbindir}/vhd-util \ + " diff --git a/meta-openeuler/recipes-mcs/xen/xen-hypervisor.inc b/meta-openeuler/recipes-mcs/xen/xen-hypervisor.inc new file mode 100644 index 0000000000000000000000000000000000000000..6f3d24d0c257d28a114ec40f1b92b41cea554232 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-hypervisor.inc @@ -0,0 +1,117 @@ +SUMMARY = "Xen hypervisor" +DESCRIPTION = "The Xen hypervisor" + +# This recipe is for just the Xen hypervisor. +# Separate recipes are used to build Xen and its components: +# this allows for varying the target architecture or toolchain used +# to build the different components. eg. 32-bit tools and a 64-bit hypervisor. + +# The Xen hypervisor has a narrower compatible platform range than the Xen tools +COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi' + +inherit deploy python3native cml1 + +PACKAGES = " \ + ${PN} \ + ${PN}-dbg \ + ${PN}-efi \ + " + +FILES:${PN} = " \ + /boot/xen-* \ + /boot/xen \ + /boot/xen-*.gz \ + /boot/xen.gz \ + /boot/xen-syms-* \ + " + +FILES:${PN}-dbg += "${libdir}/debug/*" + +FILES:${PN}-efi = " \ + /boot/xen.efi \ + ${exec_prefix}/lib64/efi/xen* \ + " + +do_configure() { + do_configure_common + + # Handle the config fragments + cfgs="${@' '.join(find_cfgs(d))}" + if [ -n "${cfgs}" ]; then + # If .config is not present generate one in order + # to use the merge_config.sh + if [ ! -f "${S}/xen/.config" ] ; then + oe_runmake -C ${S}/xen defconfig + fi + ${S}/xen/tools/kconfig/merge_config.sh -m -O \ + ${S}/xen ${S}/xen/.config "${cfgs}" + fi +} + +# The hypervisor binary for arm must not be built with the hard floating point +# ABI. Override CC and CPP when invoking make so that they do not contain +# TUNE_CCARGS. +EXTRA_OEMAKE:arm += "CC='${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} \ + ${CC_REPRODUCIBLE_OPTIONS}' \ + CPP='${CCACHE}${HOST_PREFIX}gcc -E ${TOOLCHAIN_OPTIONS} \ + ${CC_REPRODUCIBLE_OPTIONS}'" + +do_compile() { + oe_runmake xen PYTHON="${PYTHON}" \ + EXTRA_CFLAGS_XEN_CORE="${EXTRA_CFLAGS_XEN_CORE}" +} + +do_install() { + oe_runmake DESTDIR="${D}" install-xen +} +# The do_install also ships files in /boot and /usr/lib64 +SYSROOT_DIRS += "/boot ${exec_prefix}/lib64" + +do_deploy() { + install -d ${DEPLOYDIR} + + if [ -f ${B}/xen/xen ]; then + install -m 0644 ${B}/xen/xen ${DEPLOYDIR}/xen-${MACHINE} + fi + + if [ -f ${B}/xen/xen.gz ]; then + install -m 0644 ${B}/xen/xen.gz ${DEPLOYDIR}/xen-${MACHINE}.gz + fi + + if [ -f ${B}/xen/xen.efi ]; then + install -m 0644 ${B}/xen/xen.efi ${DEPLOYDIR}/xen-${MACHINE}.efi + fi +} +# Scheduling the do_deploy task: +# - deploy copies files from ${B} that are written during do_compile so must +# at least run afer that task has completed +# - the hypervisor binaries may be included in the image filesystem, so we +# must ensure that the binaries deployed match what is staged in the sysroot: +# so do_deploy must run after do_populate_sysroot and after do_compile is +# also needed for when having rm_work and bitbake needs to re-run do_deploy, +# we ensure that the ${B} is re-generated, otherwise the deploy-xen will be +# empty +# - add the task before do_build to ensure that deployment has completed when +# the recipe build done stamp is written +addtask deploy after do_compile do_populate_sysroot before do_build +# To ensure that a deployed hypervisor has matching tools, add a dependency to +# make sure that the tools have built and been staged: +do_deploy[depends] += "xen-tools:do_populate_sysroot" +# Also ensure anything that the tools recipe needs to deploy, such as a +# XSM policy file, has been deployed first: +do_deploy[depends] += "xen-tools:do_deploy" + +# Enable use of menuconfig directly from bitbake and also within the devshell +do_devshell[depends] += "ncurses-native:do_populate_sysroot" + +# Pass the native library path for kconfig build when running the do_menuconfig +# task +CROSS_CURSES_LIB += "-L${STAGING_LIBDIR_NATIVE}" + +# Specify the root dir of the .config file for do_menuconfig and do_diffconfig +# tasks +KCONFIG_CONFIG_ROOTDIR = "${S}/xen" + +# Xen is setting all CC flags on its own. Make sure that they are not modified +# for aarch64, e.g. with architecture-specific optimizations. +TUNE_CCARGS:aarch64="" diff --git a/meta-openeuler/recipes-mcs/xen/xen-openeuler.inc b/meta-openeuler/recipes-mcs/xen/xen-openeuler.inc new file mode 100644 index 0000000000000000000000000000000000000000..bf4d051af994adafd6ebe9778d18d7476a35c9b9 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-openeuler.inc @@ -0,0 +1,18 @@ +PV = "4.18.2" + +# set repo name for xen-tools +OPENEULER_REPO_NAME = "xen" +SRC_URI = " \ + file://RELEASE-${PV}.tar.gz \ + " + +# xen-tools also uses the xen source pkg, so specify "xen" instead of "BPN". +S = "${WORKDIR}/xen-RELEASE-${PV}" + +# Remove some packages that are less suitable for embedded or are not used by openeuler. +RRECOMMENDS:${PN}-scripts-network:remove = "\ + ifupdown \ + " +RRECOMMENDS:${PN}:remove = " \ + qemu \ + " diff --git a/meta-openeuler/recipes-mcs/xen/xen-tools.inc b/meta-openeuler/recipes-mcs/xen/xen-tools.inc new file mode 100644 index 0000000000000000000000000000000000000000..5f010a5d8a7218b5c8d8d2e2785605f2b7be7741 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-tools.inc @@ -0,0 +1,859 @@ +SUMMARY = "Xen hypervisor tools" +DESCRIPTION = "Tools and utility software for the Xen hypervisor" + +COMPATIBLE_HOST = 'i686-.*-linux|(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi' + +inherit setuptools3 update-rc.d systemd deploy +require xen-blktap.inc + +RDEPENDS:${PN} = "\ + bash perl xz \ + ${PN}-console \ + ${PN}-libxenguest \ + ${PN}-libxenlight \ + ${PN}-libxenvchan \ + ${PN}-libxenctrl \ + ${PN}-libxlutil \ + ${PN}-libxenstat \ + ${PN}-libxenstore \ + ${PN}-libfsimage \ + ${PN}-fsimage \ + ${PN}-scripts-block \ + ${PN}-scripts-network \ + ${PN}-xen-watchdog \ + ${PN}-xencommons \ + ${PN}-xendomains \ + ${PN}-xenstore \ + virtual-xenstored \ + ${PN}-xl \ + " + +RDEPENDS:${PN}-dev = "" + +RRECOMMENDS:${PN} = " \ + qemu \ + ${@bb.utils.contains('DISTRO_FEATURES', 'vmsep', 'qemu-x86_64 qemu-i386', '', d)} \ + ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'seabios ipxe vgabios', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_RRECOMMENDS}', d)} \ + ${PN}-flask \ + ${PN}-hvmloader \ + ${PN}-libxenhypfs \ + ${PN}-shim \ + ${PN}-ucode \ + ${PN}-vchan \ + ${PN}-xenpaging \ + ${PN}-xenhypfs \ + " + +RDEPENDS:${PN}-devd = " \ + ${PN}-xl \ + " + +RDEPENDS:${PN}-fsimage = " \ + libext2fs \ + " + +RDEPENDS:${PN}-misc = " \ + perl \ + python3 \ + ${PN}-xencov \ + " + +RSUGGESTS:${PN}-misc = " \ + ${PN}-xencons \ + ${PN}-xenpvnetboot \ + " + +RDEPENDS:${PN}-python = " \ + python3 \ + " + +RDEPENDS:${PN}-pygrub = " \ + python3 \ + ${PN}-python \ + " + +RDEPENDS:${PN}-remus = "bash" + +RDEPENDS:${PN}-scripts-block = "\ + bash \ + ${PN}-scripts-common \ + ${PN}-volatiles \ + " + +RDEPENDS:${PN}-scripts-common = "bash" + +RDEPENDS:${PN}-scripts-network = "\ + bash \ + bridge-utils \ + ${PN}-scripts-common \ + ${PN}-volatiles \ + " + +RRECOMMENDS:${PN}-scripts-network = "\ + ifupdown \ + " + +RSUGGESTS:${PN}-xencov = "${PN}-xencov-split" + +RDEPENDS:${PN}-xencommons = "\ + bash \ + util-linux-prlimit \ + ${PN}-console \ + ${PN}-xenstore \ + virtual-xenstored \ + ${PN}-xl \ + ${PN}-scripts-common \ + " + +RDEPENDS:${PN}-xendomains = "\ + bash \ + ${PN}-console \ + ${PN}-scripts-block \ + ${PN}-scripts-common \ + virtual-xenstored \ + " + +RDEPENDS:${PN}-xenhypfs = " \ + ${PN}-libxenhypfs \ + " + +RDEPENDS:${PN}-xl = "libgcc" + +RDEPENDS:${PN}-xenmon = " \ + python3 \ + " + +RSUGGESTS:${PN}-xentrace = "${PN}-xentrace-format" + +RDEPENDS:${PN}-xen-watchdog = "bash" + +PACKAGES = " \ + ${PN} \ + ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_PACKAGES}', d)} \ + ${PN}-console \ + ${PN}-cpuid \ + ${PN}-dbg \ + ${PN}-dev \ + ${PN}-devd \ + ${PN}-doc \ + ${PN}-flask \ + ${PN}-flask-tools \ + ${PN}-fsimage \ + ${PN}-gdbsx \ + ${PN}-hvmloader \ + ${PN}-init-xenstore-dom \ + ${PN}-kdd \ + ${PN}-libfsimage \ + ${PN}-libfsimage-dev \ + ${PN}-libxencall \ + ${PN}-libxencall-dev \ + ${PN}-libxenctrl \ + ${PN}-libxenctrl-dev \ + ${PN}-libxendevicemodel \ + ${PN}-libxendevicemodel-dev \ + ${PN}-libxenevtchn \ + ${PN}-libxenevtchn-dev \ + ${PN}-libxenforeignmemory \ + ${PN}-libxenforeignmemory-dev \ + ${PN}-libxengnttab \ + ${PN}-libxengnttab-dev \ + ${PN}-libxenguest \ + ${PN}-libxenguest-dev \ + ${PN}-libxenhypfs \ + ${PN}-libxenhypfs-dev \ + ${PN}-libxenlight \ + ${PN}-libxenlight-dev \ + ${PN}-libxenstat \ + ${PN}-libxenstat-dev \ + ${PN}-libxenstore \ + ${PN}-libxenstore-dev \ + ${PN}-libxentoolcore \ + ${PN}-libxentoolcore-dev \ + ${PN}-libxentoollog \ + ${PN}-libxentoollog-dev \ + ${PN}-libxenvchan \ + ${PN}-libxenvchan-dev \ + ${PN}-libxlutil \ + ${PN}-libxlutil-dev \ + ${PN}-livepatch \ + ${PN}-misc \ + ${PN}-pygrub \ + ${PN}-python \ + ${PN}-remus \ + ${PN}-scripts-block \ + ${PN}-scripts-common \ + ${PN}-scripts-network \ + ${PN}-shim \ + ${PN}-staticdev \ + ${PN}-ucode \ + ${PN}-vchan \ + ${PN}-volatiles \ + ${PN}-xcutils \ + ${PN}-xencommons \ + ${PN}-xencov \ + ${PN}-xend \ + ${PN}-xend-examples \ + ${PN}-xendomains \ + ${PN}-xenhypfs \ + ${PN}-xenmon \ + ${PN}-xenpaging \ + ${PN}-xenpmd \ + ${PN}-xenstat \ + ${PN}-xenstore \ + ${PN}-xenstored \ + ${PN}-xentrace \ + ${PN}-xen-watchdog \ + ${PN}-xl \ + ${PN}-xl-examples \ + ${PN}-xm \ + ${PN}-xm-examples \ + ${PN}-xen-access \ + ${PN}-xen-memshare \ + ${PN}-test \ + ${PN}-xen-vmtrace \ + ${PN}-xen-mceinj \ + " + +PROVIDES =+ " \ + virtual-xenstored \ + ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_PROVIDES}', d)} \ + " + +# There are multiple implementations of the XenStore daemon, so we use a +# virtual package to allow for substitution. +RPROVIDES:${PN}-xenstored = "virtual-xenstored" + +FILES:${PN}-dbg += "\ + ${libdir}/xen/bin/.debug \ + ${nonarch_libdir}/${PYTHON_DIR}/site-packages/.debug \ + ${nonarch_libdir}/${PYTHON_DIR}/site-packages/xen/lowlevel/.debug \ + ${libdir}/fs/xfs/.debug \ + ${libdir}/fs/ufs/.debug \ + ${libdir}/fs/ext2fs-lib/.debug \ + ${libdir}/fs/fat/.debug \ + ${libdir}/fs/zfs/.debug \ + ${libdir}/fs/reiserfs/.debug \ + ${libdir}/fs/iso9660/.debug \ + ${libdir}/fs/**/.debug \ + ${sbindir}/.debug \ + ${libdir}exec/.debug \ + ${libdir}/xen/libexec/.debug \ + ${bindir}/.debug \ + ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/.debug \ + ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/xen/lowlevel/.debug \ + " + +FILES:${PN}-dev = "\ + ${includedir} \ + " + +FILES:${PN}-doc = "\ + ${sysconfdir}/xen/README \ + ${sysconfdir}/xen/README.incompatibilities \ + ${datadir}/doc \ + ${datadir}/man \ + " + +FILES:${PN}-staticdev += "\ + ${libdir}/libxenguest.a \ + ${libdir}/libxenlight.a \ + ${libdir}/libxenvchan.a \ + ${libdir}/libxenctrl.a \ + ${libdir}/libxlutil.a \ + ${libdir}/libxenstat.a \ + ${libdir}/libxenstore.a \ + " + +FILES:${PN}-libxencall = "${libdir}/libxencall.so.*" +FILES:${PN}-libxencall-dev = " \ + ${libdir}/libxencall.so \ + ${libdir}/pkgconfig/xencall.pc \ + ${datadir}/pkgconfig/xencall.pc \ + " + +FILES:${PN}-libxenctrl = "${libdir}/libxenctrl.so.*" +FILES:${PN}-libxenctrl-dev = " \ + ${libdir}/libxenctrl.so \ + ${libdir}/pkgconfig/xencontrol.pc \ + ${datadir}/pkgconfig/xencontrol.pc \ + " + +FILES:${PN}-libxendevicemodel = "${libdir}/libxendevicemodel.so.*" +FILES:${PN}-libxendevicemodel-dev = " \ + ${libdir}/libxendevicemodel.so \ + ${libdir}/pkgconfig/xendevicemodel.pc \ + ${datadir}/pkgconfig/xendevicemodel.pc \ + " + +FILES:${PN}-libxenevtchn = "${libdir}/libxenevtchn.so.*" +FILES:${PN}-libxenevtchn-dev = " \ + ${libdir}/libxenevtchn.so \ + ${libdir}/pkgconfig/xenevtchn.pc \ + ${datadir}/pkgconfig/xenevtchn.pc \ + " + +FILES:${PN}-libxenforeignmemory = "${libdir}/libxenforeignmemory.so.*" +FILES:${PN}-libxenforeignmemory-dev = " \ + ${libdir}/libxenforeignmemory.so \ + ${libdir}/pkgconfig/xenforeignmemory.pc \ + ${datadir}/pkgconfig/xenforeignmemory.pc \ + " + +FILES:${PN}-libxengnttab = "${libdir}/libxengnttab.so.*" +FILES:${PN}-libxengnttab-dev = " \ + ${libdir}/libxengnttab.so \ + ${libdir}/pkgconfig/xengnttab.pc \ + ${datadir}/pkgconfig/xengnttab.pc \ + " + +FILES:${PN}-libxenguest = "${libdir}/libxenguest.so.*" +FILES:${PN}-libxenguest-dev = " \ + ${libdir}/libxenguest.so \ + ${libdir}/pkgconfig/xenguest.pc \ + ${datadir}/pkgconfig/xenguest.pc \ + " + +FILES:${PN}-libxenhypfs = "${libdir}/libxenhypfs.so.*" +FILES:${PN}-libxenhypfs-dev = " \ + ${libdir}/libxenhypfs.so \ + ${libdir}/pkgconfig/xenhypfs.pc \ + " + +FILES:${PN}-libxenlight = "${libdir}/libxenlight.so.*" +FILES:${PN}-libxenlight-dev = " \ + ${libdir}/libxenlight.so \ + ${libdir}/pkgconfig/xenlight.pc \ + ${datadir}/pkgconfig/xenlight.pc \ + " + +FILES:${PN}-libxenstat = "${libdir}/libxenstat.so.*" +FILES:${PN}-libxenstat-dev = " \ + ${libdir}/libxenstat.so \ + ${libdir}/pkgconfig/xenstat.pc \ + ${datadir}/pkgconfig/xenstat.pc \ + " + +FILES:${PN}-libxenstore = "${libdir}/libxenstore.so.*" +FILES:${PN}-libxenstore-dev = " \ + ${libdir}/libxenstore.so \ + ${libdir}/pkgconfig/xenstore.pc \ + ${datadir}/pkgconfig/xenstore.pc \ + " + +FILES:${PN}-libxentoolcore = "${libdir}/libxentoolcore.so.*" +FILES:${PN}-libxentoolcore-dev = " \ + ${libdir}/libxentoolcore.so \ + ${libdir}/pkgconfig/xentoolcore.pc \ + ${datadir}/pkgconfig/xentoolcore.pc \ + " + +FILES:${PN}-libxentoollog = "${libdir}/libxentoollog.so.*" +FILES:${PN}-libxentoollog-dev = " \ + ${libdir}/libxentoollog.so \ + ${libdir}/pkgconfig/xentoollog.pc \ + ${datadir}/pkgconfig/xentoollog.pc \ + " + +FILES:${PN}-libxenvchan = "${libdir}/libxenvchan.so.*" +FILES:${PN}-libxenvchan-dev = " \ + ${libdir}/libxenvchan.so \ + ${libdir}/pkgconfig/xenvchan.pc \ + ${datadir}/pkgconfig/xenvchan.pc \ + " + +FILES:${PN}-libxlutil = "${libdir}/libxlutil.so.*" +FILES:${PN}-libxlutil-dev = " \ + ${libdir}/libxlutil.so \ + ${libdir}/pkgconfig/xlutil.pc \ + ${datadir}/pkgconfig/xlutil.pc \ + " +FILES:${PN}-libvhd = "${libdir}/libvhd.so.*" +FILES:${PN}-libvhd-dev = " \ + ${libdir}/libvhd.so \ + ${libdir}/pkgconfig/vhd.pc \ + ${datadir}/pkgconfig/vhd.pc \ + " + +FILES:${PN}-libfsimage = " \ + ${libdir}/libfsimage.so.* \ + ${libdir}/libxenfsimage.so.* \ + " + +FILES:${PN}-libfsimage-dev = " \ + ${libdir}/libfsimage.so \ + ${libdir}/libxenfsimage.so \ + ${libdir}/pkgconfig/fsimage.pc \ + ${datadir}/pkgconfig/fsimage.pc \ + ${libdir}/pkgconfig/xenfsimage.pc \ + ${datadir}/pkgconfig/xenfsimage.pc \ + " + +FILES:${PN}-fsimage = " \ + ${libdir}/fs/**/[a-z]*fsimage.so \ + ${libdir}/xenfsimage/**/fsimage.so \ + " + +FILES:${PN}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain" + +FILES:${PN} = "\ + ${sysconfdir}/xen/auto \ + ${sysconfdir}/xen/cpupool \ + ${localstatedir}/xen/dump \ + " + +FILES:${PN}-console = "\ + ${libdir}/xen/bin/xenconsole \ + ${sbindir}/xenconsoled \ + " + +FILES:${PN}-cpuid = "\ + ${bindir}/xen-cpuid \ + " + +FILES:${PN}-devd = "\ + ${sysconfdir}/init.d/xendriverdomain \ + ${systemd_unitdir}/system/xendriverdomain.service \ + " + +FILES:${PN}-flask = "\ + /boot/xenpolicy-* \ + " + +FILES:${PN}-flask-tools = "\ + ${sbindir}/flask-get-bool \ + ${sbindir}/flask-getenforce \ + ${sbindir}/flask-label-pci \ + ${sbindir}/flask-loadpolicy \ + ${sbindir}/flask-set-bool \ + ${sbindir}/flask-setenforce \ + " + +FILES:${PN}-gdbsx = "\ + ${sbindir}/gdbsx \ + " + +INSANE_SKIP:${PN}-hvmloader = "arch" +FILES:${PN}-hvmloader = "\ + ${libdir}/xen/boot/hvmloader \ + " + +FILES:${PN}-kdd = "\ + ${sbindir}/kdd \ + ${sbindir}/xen-kdd \ + " + +FILES:${PN}-livepatch += " \ + ${sbindir}/xen-livepatch \ + " + +FILES:${PN}-misc = "\ + ${bindir}/xen-detect \ + ${libdir}/xen/bin/depriv-fd-checker \ + ${sbindir}/gtracestat \ + ${sbindir}/gtraceview \ + ${sbindir}/xen-bugtool \ + ${sbindir}/xenperf \ + ${sbindir}/xenpm \ + ${sbindir}/xsview \ + ${sbindir}/xen-diag \ + ${sbindir}/xen-tmem-list-parse \ + ${sbindir}/xen-python-path \ + ${sbindir}/xen-ringwatch \ + ${sbindir}/xen-hptool \ + ${sbindir}/xen-hvmcrash \ + ${sbindir}/xen-hvmctx \ + ${sbindir}/xenlockprof \ + ${sbindir}/xen-lowmemd \ + ${sbindir}/xen-mfndump \ + ${libdir}/xen/bin/verify-stream-v2 \ + ${libdir}/xen/bin/convert-legacy-stream \ + " + +FILES:${PN}-pygrub = "\ + ${bindir}/pygrub \ + ${libdir}/xen/bin/pygrub \ + " + +# Depending on the version of Xen libdir or nonarch libdir is used +FILES:${PN}-python = "\ + ${libdir}/${PYTHON_DIR} \ + ${nonarch_libdir}/${PYTHON_DIR} \ + " + +FILES:${PN}-remus = "\ + ${sysconfdir}/xen/scripts/remus-netbuf-setup \ + " + +FILES:${PN}-scripts-network = " \ + ${sysconfdir}/xen/scripts/colo-proxy-setup \ + ${sysconfdir}/xen/scripts/network-bridge \ + ${sysconfdir}/xen/scripts/network-nat \ + ${sysconfdir}/xen/scripts/network-route \ + ${sysconfdir}/xen/scripts/qemu-ifup \ + ${sysconfdir}/xen/scripts/vif2 \ + ${sysconfdir}/xen/scripts/vif-bridge \ + ${sysconfdir}/xen/scripts/vif-common.sh \ + ${sysconfdir}/xen/scripts/vif-nat \ + ${sysconfdir}/xen/scripts/vif-openvswitch \ + ${sysconfdir}/xen/scripts/vif-route \ + ${sysconfdir}/xen/scripts/vif-setup \ + " + +FILES:${PN}-scripts-block = " \ + ${sysconfdir}/xen/scripts/blktap \ + ${sysconfdir}/xen/scripts/block \ + ${sysconfdir}/xen/scripts/block-common.sh \ + ${sysconfdir}/xen/scripts/block-dummy \ + ${sysconfdir}/xen/scripts/block-enbd \ + ${sysconfdir}/xen/scripts/block-iscsi \ + ${sysconfdir}/xen/scripts/block-nbd \ + ${sysconfdir}/xen/scripts/block-drbd-probe \ + ${sysconfdir}/xen/scripts/block-tap \ + ${sysconfdir}/xen/scripts/vscsi \ + " + +FILES:${PN}-scripts-common = " \ + ${sysconfdir}/xen/scripts/external-device-migrate \ + ${sysconfdir}/xen/scripts/hotplugpath.sh \ + ${sysconfdir}/xen/scripts/locking.sh \ + ${sysconfdir}/xen/scripts/logging.sh \ + ${sysconfdir}/xen/scripts/xen-hotplug-cleanup \ + ${sysconfdir}/xen/scripts/xen-hotplug-common.sh \ + ${sysconfdir}/xen/scripts/xen-network-common.sh \ + ${sysconfdir}/xen/scripts/xen-script-common.sh \ + " + +INSANE_SKIP:${PN}-shim = "arch" +FILES:${PN}-shim = " \ + ${libdir}/xen/boot/xen-shim \ + " + +FILES:${PN}-ucode = "\ + ${sbindir}/xen-ucode \ + " + +FILES:${PN}-vchan = "\ + ${bindir}/vchan-socket-proxy \ + " + +FILES:${PN}-volatiles = "\ + ${sysconfdir}/default/volatiles/99_xen \ + ${sysconfdir}/tmpfiles.d/xen.conf \ + " + +FILES:${PN}-xcutils = "\ + ${libdir}/xen/bin/lsevtchn \ + ${libdir}/xen/bin/readnotes \ + ${libdir}/xen/bin/xc_restore \ + ${libdir}/xen/bin/xc_save \ + " + +FILES:${PN}-xencov = "\ + ${sbindir}/xencov \ + " + +FILES:${PN}-xend-examples = "\ + ${sysconfdir}/xen/xend-config.sxp \ + ${sysconfdir}/xen/xend-pci-permissive.sxp \ + ${sysconfdir}/xen/xend-pci-quirks.sxp \ + " + +FILES:${PN}-xenhypfs = "\ + ${sbindir}/xenhypfs \ + " + +FILES:${PN}-xenpaging = "\ + ${libdir}/xen/bin/xenpaging \ + ${localstatedir}/lib/xen/xenpaging \ + " + +FILES:${PN}-xenpmd = "\ + ${sbindir}/xenpmd \ + " + +FILES:${PN}-xenstat = "\ + ${sbindir}/xentop \ + " + +FILES:${PN}-xenstore = "\ + ${bindir}/xenstore \ + ${bindir}/xenstore-chmod \ + ${bindir}/xenstore-control \ + ${bindir}/xenstore-exists \ + ${bindir}/xenstore-list \ + ${bindir}/xenstore-ls \ + ${bindir}/xenstore-read \ + ${bindir}/xenstore-rm \ + ${bindir}/xenstore-watch \ + ${bindir}/xenstore-write \ + " + +FILES:${PN}-xenstored = "\ + ${sbindir}/xenstored \ + ${localstatedir}/lib/xenstored \ + " + +FILES:${PN}-xentrace = "\ + ${bindir}/xentrace \ + ${bindir}/xentrace_setsize \ + ${libdir}/xen/bin/xenctx \ + ${bindir}/xenalyze \ + ${sbindir}/xentrace \ + ${sbindir}/xentrace_setsize \ + ${sbindir}/xentrace_setmask \ + " + +FILES:${PN}-xen-watchdog = "\ + ${sbindir}/xenwatchdogd \ + ${sysconfdir}/init.d/xen-watchdog \ + ${systemd_unitdir}/system/xen-watchdog.service \ + " + +FILES:${PN}-xl = "\ + ${sysconfdir}/bash_completion.d/xl.sh \ + ${sysconfdir}/bash_completion.d/xl \ + ${sysconfdir}/xen/xl.conf \ + ${libdir}/xen/bin/libxl-save-helper \ + ${sbindir}/xl \ + ${libdir}/xen/bin/xen-init-dom0 \ + ${libdir}/xen/bin/init-dom0less \ + " + +FILES:${PN}-xl-examples = "\ + ${sysconfdir}/xen/xlexample.hvm \ + ${sysconfdir}/xen/xlexample.pvlinux \ + ${sysconfdir}/xen/xlexample.pvhlinux \ + " + +FILES:${PN}-xm-examples = "\ + ${sysconfdir}/xen/xmexample1 \ + ${sysconfdir}/xen/xmexample2 \ + ${sysconfdir}/xen/xmexample3 \ + ${sysconfdir}/xen/xmexample.hvm \ + ${sysconfdir}/xen/xmexample.hvm-stubdom \ + ${sysconfdir}/xen/xmexample.nbd \ + ${sysconfdir}/xen/xmexample.pv-grub \ + ${sysconfdir}/xen/xmexample.vti \ + " + +FILES:${PN}-xenmon = "\ + ${sbindir}/xenbaked \ + ${sbindir}/xenmon.py \ + ${sbindir}/xenmon \ + " + +FILES:${PN}-xm = "\ + ${sysconfdir}/xen/xm-config.xml \ + ${datadir}/xen/create.dtd \ + ${sbindir}/xm \ + " + +FILES:${PN}-xencommons += "\ + ${nonarch_libdir}/modules-load.d/xen.conf \ + ${sysconfdir}/default/xencommons \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${sysconfdir}/init.d/xencommons', d)} \ + ${sysconfdir}/xen/scripts/launch-xenstore \ + ${systemd_unitdir}/system/proc-xen.mount \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xenconsoled.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xen-init-dom0.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xenstored.service', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/var-lib-xenstored.mount', '', d)} \ + ${localstatedir} \ + " + +FILES:${PN}-xend += " \ + ${sysconfdir}/init.d/xend \ + ${sbindir}/xend \ + " + +FILES:${PN}-xendomains += "\ + ${libdir}/xen/bin/xendomains \ + ${sysconfdir}/default/xendomains \ + ${sysconfdir}/init.d/xendomains \ + ${sysconfdir}/sysconfig/xendomains \ + ${systemd_unitdir}/system/xendomains.service \ + " +FILES:${PN}-xen-access += "\ + ${sbindir}/xen-access \ + " + +FILES:${PN}-xen-memshare += "\ + ${sbindir}/xen-memshare \ + " + +# memshare is only built for x86, so allow empty package for other archs +ALLOW_EMPTY:${PN}-xen-memshare = "1" + +FILES:${PN}-test += "\ + ${libdir}/xen/bin/test-xenstore \ + ${libdir}/xen/bin/test-resource \ + ${libdir}/xen/bin/test-cpu-policy \ + ${libdir}/xen/bin/test-tsx \ + ${libdir}/xen/bin/test-paging-mempool \ + " + +# test-xenstore and test-resource currently only exist in 4.16 +# test-cpu-policy and test-tsx only exist in 4.16 for x86 +ALLOW_EMPTY:${PN}-test = "1" + +FILES:${PN}-xen-mceinj +="\ + ${sbindir}/xen-mceinj \ + " + +# xen-mceinj is only built for x86 4.16, so allow empty package +ALLOW_EMPTY:${PN}-xen-mceinj = "1" + +FILES:${PN}-xen-vmtrace +="\ + ${sbindir}/xen-vmtrace \ + " + +# xen-vmtrace is only built for x86 4.16, so allow empty package +ALLOW_EMPTY:${PN}-xen-vmtrace = "1" + +INSANE_SKIP:${PN} = "already-stripped" + +# configure init.d scripts +INITSCRIPT_PACKAGES = "${PN}-xend ${PN}-xen-watchdog ${PN}-xendomains ${PN}-devd" +INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${PN}-xencommons', d)}" +INITSCRIPT_NAME:${PN}-xencommons = "xencommons" +INITSCRIPT_PARAMS:${PN}-xencommons = "defaults 80" +INITSCRIPT_NAME:${PN}-xen-watchdog = "xen-watchdog" +INITSCRIPT_PARAMS:${PN}-xen-watchdog = "defaults 81" +INITSCRIPT_NAME:${PN}-xend = "xend" +INITSCRIPT_PARAMS:${PN}-xend = "defaults 82" +INITSCRIPT_NAME:${PN}-xendomains = "xendomains" +INITSCRIPT_PARAMS:${PN}-xendomains = "defaults 83" +INITSCRIPT_NAME:${PN}-devd = "xendriverdomain" +INITSCRIPT_PARAMS:${PN}-devd = "defaults 82" + +# systemd packages +SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains ${PN}-devd" +SYSTEMD_SERVICE:${PN}-devd = "xendriverdomain.service" +SYSTEMD_SERVICE:${PN}-xen-watchdog = "xen-watchdog.service" +SYSTEMD_SERVICE:${PN}-xencommons = " \ + proc-xen.mount \ + xen-qemu-dom0-disk-backend.service \ + xenconsoled.service \ + xen-init-dom0.service \ + xenstored.service \ + " +SYSTEMD_SERVICE:${PN}-xendomains = "xendomains.service" + +EXTRA_OECONF += " \ + --with-systemd=${systemd_unitdir}/system \ + --with-initddir=${INIT_D_DIR} \ + --with-sysconfig-leaf-dir=default \ + --with-system-qemu=${bindir}/qemu-system-i386 \ + " + +do_configure() { + do_configure_common +} + +do_compile() { + cd ${S} + oe_runmake tools PYTHON="${PYTHON}" \ + EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}" +} + +do_install() { + cd ${S} + oe_runmake DESTDIR="${D}" install-tools + + # Remove unported python 2 scripts -- see the separate xen-python2 recipe + rm -f ${D}${bindir}/xentrace_format \ + ${D}${bindir}/xencons \ + ${D}${bindir}/xencov_split \ + ${D}${libdir}/xen/bin/xenpvnetboot + + # remove installed volatiles + rm -rf ${D}${base_prefix}/run \ + ${D}${localstatedir}/run \ + ${D}${localstatedir}/lock \ + ${D}${localstatedir}/log \ + ${D}${localstatedir}/volatile \ + ${D}${localstatedir}/lib/xen + + VOLATILE_DIRS=" \ + ${base_prefix}/run/xenstored \ + ${base_prefix}/run/xend \ + ${base_prefix}/run/xend/boot \ + ${base_prefix}/run/xen \ + ${localstatedir}/log/xen \ + ${localstatedir}/lock/xen \ + ${localstatedir}/lock/subsys \ + ${localstatedir}/lib/xen \ + " + + # install volatiles using populate_volatiles mechanism + install -d ${D}${sysconfdir}/default/volatiles + for i in $VOLATILE_DIRS; do + echo "d root root 0755 $i none" >> ${D}${sysconfdir}/default/volatiles/99_xen + done + + # workaround for xendomains script which searchs sysconfig if directory exists + install -d ${D}${sysconfdir}/sysconfig + ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains + + # systemd + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + # install volatiles using systemd tmpfiles.d + install -d ${D}${sysconfdir}/tmpfiles.d + for i in $VOLATILE_DIRS; do + echo "d $i 0755 root root - -" >> ${D}${sysconfdir}/tmpfiles.d/xen.conf + done + fi + + if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then + sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \ + ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service + fi + + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + rm -f ${D}/${sysconfdir}/init.d/xencommons + else + # fixup default path to qemu-system-i386 + sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons + + # remove the uncondiontally installed systemd service files + rm -f ${D}/${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service + rm -f ${D}/${systemd_unitdir}/system/xenconsoled.service + rm -f ${D}/${systemd_unitdir}/system/xen-init-dom0.service + rm -f ${D}/${systemd_unitdir}/system/xenstored.service + rm -f ${D}/${systemd_unitdir}/system/var-lib-xenstored.mount + fi +} + +pkg_postinst:${PN}-volatiles() { + if [ -z "$D" ]; then + if command -v systemd-tmpfiles >/dev/null; then + systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf + elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then + ${sysconfdir}/init.d/populate-volatile.sh update + fi + fi +} + +do_deploy() { + XEN_FULLVERSION=$(oe_runmake -C ${S}/xen xenversion --no-print-directory) + FLASK_POLICY_FILE="xenpolicy-${XEN_FULLVERSION}" + + install -d ${DEPLOYDIR} + + # Install the flask policy in the deploy directory if it exists + if [ -f ${D}/boot/${FLASK_POLICY_FILE} ]; then + install -m 0644 ${D}/boot/${FLASK_POLICY_FILE} ${DEPLOYDIR} + ln -sf ${FLASK_POLICY_FILE} ${DEPLOYDIR}/xenpolicy-${MACHINE} + fi +} +# Scheduling the do_deploy task: +# - deploy copies files from ${D} that are written during do_install so must run +# after that task +# - the tools binaries are included in the image filesystem, so we must ensure +# that the binaries deployed match what is staged in the sysroot: +# so do_deploy must run after do_populate_sysroot +# - add the task before do_build to ensure that deployment has completed when +# the recipe build done stamp is written +addtask deploy after do_install do_populate_sysroot before do_build diff --git a/meta-openeuler/recipes-mcs/xen/xen-tools_%.bbappend b/meta-openeuler/recipes-mcs/xen/xen-tools_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..7089c54fec07a8fdc15dc7237f05b77fa7b07c36 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-tools_%.bbappend @@ -0,0 +1 @@ +require xen-openeuler.inc diff --git a/meta-openeuler/recipes-mcs/xen/xen-tools_4.18.bb b/meta-openeuler/recipes-mcs/xen/xen-tools_4.18.bb new file mode 100644 index 0000000000000000000000000000000000000000..5dbe180a8163109301fdd97615ee706f498e818c --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen-tools_4.18.bb @@ -0,0 +1,21 @@ +# tag: RELEASE-4.18.0 +SRCREV ?= "4da8ca9cb9cfdb92c9dd09d5270ae16a3b2dbc89" + +XEN_REL ?= "4.18" +XEN_BRANCH ?= "stable-4.18" + +SRC_URI = " \ + git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \ + file://0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch \ + " + +LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9" + +PV = "${XEN_REL}+stable" + +S = "${WORKDIR}/git" + +DEFAULT_PREFERENCE ??= "-1" + +require xen.inc +require xen-tools.inc diff --git a/meta-openeuler/recipes-mcs/xen/xen.inc b/meta-openeuler/recipes-mcs/xen/xen.inc new file mode 100644 index 0000000000000000000000000000000000000000..dcd281b5a21bddc7dac068cc67365af106e880b3 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen.inc @@ -0,0 +1,235 @@ +HOMEPAGE = "http://xen.org" +LICENSE = "GPL-2.0-only" +SECTION = "console/tools" + +TOOLCHAIN = "gcc" + +inherit autotools-brokensep pkgconfig + +require xen-arch.inc + +PACKAGECONFIG ??= " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ + " + +PACKAGECONFIG[lzo] = ",,lzo" +PACKAGECONFIG[xsm] = "--enable-xsmpolicy,--disable-xsmpolicy,checkpolicy-native," +PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd," +PACKAGECONFIG[externalblktap] = ",,," + +DEPENDS = " \ + ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'dev86-native', '', d)} \ + bison-native \ + flex-native \ + file-native \ + gettext-native \ + acpica-native \ + ncurses-native \ + util-linux-native \ + xz-native \ + bridge-utils \ + curl \ + dtc \ + gettext \ + glib-2.0 \ + gnutls \ + iproute2 \ + libnl \ + ncurses \ + openssl \ + pciutils \ + pixman \ + procps \ + python3 \ + libaio \ + util-linux \ + xz \ + yajl \ + zlib \ + gnu-efi \ + " + +#### REQUIRED ENVIRONMENT VARIABLES #### +export BUILD_SYS +export HOST_SYS +export STAGING_INCDIR +export STAGING_LIBDIR + +# specify xen hypervisor to build/target +export XEN_TARGET_ARCH = "${@map_xen_arch(d.getVar('TARGET_ARCH'), d)}" +export XEN_COMPILE_ARCH = "${@map_xen_arch(d.getVar('BUILD_ARCH'), d)}" + +python () { + if d.getVar('XEN_TARGET_ARCH') == 'INVALID': + raise bb.parse.SkipPackage('Cannot map `%s` to a xen architecture' % d.getVar('TARGET_ARCH')) +} + +# Yocto appends ${PN} to libexecdir by default and Xen appends 'xen' as well +# the result is a nested xen/xen/ so let's avoid that by shunning Yocto's +# extra ${PN} appended. +libexecdir = "${libdir}" + +# hardcoded as Linux, as the only compatible hosts are Linux. +export XEN_OS = "Linux" + +# this is used for the header (#!${bindir}/python) of the install python scripts +export PYTHONPATH="${bindir}/env python3" +export ac_cv_path_PYTHONPATH="${bindir}/env python3" +export DISTUTILS_BUILD_ARGS +export DISTUTILS_INSTALL_ARGS + +# xen and seabios require HOSTCC and HOSTCXX set to cross-compile +export HOSTCC="${BUILD_CC}" +export HOSTCXX="${BUILD_CXX}" + +# make xen requires CROSS_COMPILE set by hand as it does not abide by ./configure +export CROSS_COMPILE="${TARGET_PREFIX}" + +# overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'" +export LDFLAGS="" + +# No additional C flags for the main hypervisor build +EXTRA_CFLAGS_XEN_CORE ?= "" +# Add prefix maps to support buildpaths QA test and reproducibility +DEBUG_PREFIX_MAP:append = " \ + -ffile-prefix-map=${S}=${PN}-source \ + -fdebug-prefix-map=${WORKDIR}=${PN} \ + " + +# - The Xen tools build for x86 systems with HVM-mode enabled includes hvmloader +# which fails to build when "-m64" is included in flags set via the +# EXTRA_CFLAGS_XEN_TOOLS: so clear TUNE_CCARGS on x86 to prevent that. +TUNE_CCARGS:x86-64="" + +# - Yocto supplies the _FORTIFY_SOURCE flag via CC/CPP/CXX but then passes the +# optimization -O via C*FLAGS which is problematic when the CFLAGS are cleared +# within the build because compilation fails with the compiler stating +# "_FORTIFY_SOURCE requires compiling with optimization (-O)". +# - Move HOST_CC_ARCH into the Xen-provided CFLAGS variables and keep +# TOOLCHAIN_OPTIONS set via CC: this enables hvmloader to be built correctly. +# It must not be compiled with SSE compiler options enabled and the Xen build +# explicitly clears CFLAGS to ensure that, so such options must not be passed +# in via the tool variable. hvmloader is required to run HVM-mode guest VMs. +CC="${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}" +EXTRA_CFLAGS_XEN_TOOLS="${HOST_CC_ARCH} ${CFLAGS}" +# 32-bit ARM needs the TUNE_CCARGS component of HOST_CC_ARCH to be passed +# in CC to ensure that configure can compile binaries for the right arch. +CC:arm="${CCACHE}${HOST_PREFIX}gcc ${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}" + +# There are no Xen-provided variables for C++, so append to the tool variables: +CPP:append = " ${CPPFLAGS}" +CXX:append = " ${CXXFLAGS}" + +EXTRA_OECONF += " \ + --exec-prefix=${prefix} \ + --prefix=${prefix} \ + --host=${HOST_SYS} \ + --disable-stubdom \ + --disable-ioemu-stubdom \ + --disable-pv-grub \ + --disable-xenstore-stubdom \ + --disable-rombios \ + --disable-ocamltools \ + --disable-qemu-traditional \ + ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', \ + '--enable-pvshim --with-system-seabios="/usr/share/firmware/bios.bin"', \ + '--disable-pvshim --disable-seabios', d)} \ + " + +EXTRA_OEMAKE += "STDVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.8a.bin" +EXTRA_OEMAKE += "CIRRUSVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.8a.cirrus.bin" +EXTRA_OEMAKE += "SEABIOS_ROM=${STAGING_DIR_HOST}/usr/share/firmware/bios.bin" +EXTRA_OEMAKE += "ETHERBOOT_ROMS=${STAGING_DIR_HOST}/usr/share/firmware/rtl8139.rom" + +# prevent the Xen build scripts from fetching things during the build +# all dependencies should be reflected in the Yocto recipe +EXTRA_OEMAKE += "WGET=/bin/false" +EXTRA_OEMAKE += "GIT=/bin/false" + +# Improve build reproducibility: provide values for build variables. +def get_build_time_vars(d): + source_date_epoch = d.getVar('SOURCE_DATE_EPOCH') + if source_date_epoch is not None: + import datetime + utc_datetime = datetime.datetime.utcfromtimestamp(float(source_date_epoch)) + return " XEN_BUILD_DATE=" + utc_datetime.strftime("%Y-%m-%d") + \ + " XEN_BUILD_TIME=" + utc_datetime.strftime("%H:%M:%S") + return "" +EXTRA_OEMAKE += "${@['', 'XEN_WHOAMI=${PF} XEN_DOMAIN=${DISTRO} XEN_BUILD_HOST=${PN}-buildhost'] \ + [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}${@get_build_time_vars(d)}" + +# Improve build reproducibility: compiler flags to remove filesystem differences. +CC_REPRODUCIBLE_OPTIONS = "${@['', '-gno-record-gcc-switches'] \ + [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}" + +# check for XSM in package config to allow XSM_ENABLE to be set +python () { + pkgconfig = d.getVar('PACKAGECONFIG') + if ('xsm') in pkgconfig.split(): + d.setVar('XSM_ENABLED', '1') + else: + d.setVar('XSM_ENABLED', '0') +} + +do_post_patch() { + # fixup AS/CC/CCP/etc variable within StdGNU.mk + for i in LD CC CPP CXX; do + sed -i "s/^\($i\s\s*\).*=/\1?=/" ${S}/config/StdGNU.mk + done + # fixup environment passing in some makefiles + sed -i 's#\(\w*\)=\(\$.\w*.\)#\1="\2"#' ${S}/tools/firmware/Makefile + + # libsystemd-daemon -> libsystemd for newer systemd versions + sed -i 's#libsystemd-daemon#libsystemd#' ${S}/tools/configure + + # Improve build reproducibility: disable insertion of the build timestamp + # into the x86 EFI hypervisor binary. + # binutils should allow a user-supplied timestamp or use SOURCE_DATE_EPOCH + # for PE but currently does not. + if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ] ; then + sed '/^EFI_LDFLAGS = /{a EFI_LDFLAGS += --no-insert-timestamp +}' -i "${S}/xen/arch/x86/Makefile" + fi +} + +addtask post_patch after do_patch before do_configure + +# Allow all hypervisor settings in a defconfig +EXTRA_OEMAKE += "XEN_CONFIG_EXPERT=y" +# Build release versions always. Technically since we track release +# tarballs this always happens but occasionally people pull in patches +# from staging that reverts this +EXTRA_OEMAKE += "debug=n" + +do_configure_common() { + cd ${S} + + #./configure --enable-xsmpolicy does not set XSM_ENABLE must be done manually + if [ "${XSM_ENABLED}" = "1" ]; then + echo "XSM_ENABLE := y" > ${S}/.config + fi + + if [ -f "${WORKDIR}/defconfig" ]; then + cp "${WORKDIR}/defconfig" "${S}/xen/.config" || \ + bbfatal "Unable to copy defconfig to .config" + fi + + unset CFLAGS + + # do configure + oe_runconf EXTRA_CFLAGS_XEN_CORE="${EXTRA_CFLAGS_XEN_CORE}" \ + EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}" \ + PYTHON="${PYTHON}" +} + +do_compile:prepend() { + # workaround for build bug when CFLAGS is exported + # https://www.mail-archive.com/xen-devel@lists.xen.org/msg67822.html + unset CFLAGS +} + +do_install:prepend() { + # CFLAGS is used to set PY_CFLAGS which affects the pygrub install + # so also need to unset CFLAGS here: + unset CFLAGS +} diff --git a/meta-openeuler/recipes-mcs/xen/xen_%.bbappend b/meta-openeuler/recipes-mcs/xen/xen_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..7089c54fec07a8fdc15dc7237f05b77fa7b07c36 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen_%.bbappend @@ -0,0 +1 @@ +require xen-openeuler.inc diff --git a/meta-openeuler/recipes-mcs/xen/xen_4.18.bb b/meta-openeuler/recipes-mcs/xen/xen_4.18.bb new file mode 100644 index 0000000000000000000000000000000000000000..d0b1901301c319ee6af961e0e74a5ae6ac16b579 --- /dev/null +++ b/meta-openeuler/recipes-mcs/xen/xen_4.18.bb @@ -0,0 +1,22 @@ +# tag: RELEASE-4.18.0 +SRCREV ?= "01f7a3c792241d348a4e454a30afdf6c0d6cd71c" + +XEN_REL ?= "4.18.2" +XEN_BRANCH ?= "stable-4.18" + +SRC_URI = " \ + git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \ + file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \ + file://0001-arm-silence-gcc14-warning-error-on-irq-bounds-check.patch \ + " + +LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9" + +PV = "${XEN_REL}+stable" + +S = "${WORKDIR}/git" + +DEFAULT_PREFERENCE ??= "-1" + +require xen.inc +require xen-hypervisor.inc diff --git a/meta-openeuler/recipes-multimedia/libopus/libopus_%.bbappend b/meta-openeuler/recipes-multimedia/libopus/libopus_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..9898692c1d65e642379f0a1044db4c51a802a6cf --- /dev/null +++ b/meta-openeuler/recipes-multimedia/libopus/libopus_%.bbappend @@ -0,0 +1,10 @@ +# the main bb file: yocto-meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.3.1.bb + +PV = "1.4" + +SRC_URI:prepend = " \ + file://opus-${PV}.tar.gz \ +" + +S = "${WORKDIR}/opus-${PV}" + diff --git a/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/files/change-tools-cmake.patch b/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/files/change-tools-cmake.patch new file mode 100644 index 0000000000000000000000000000000000000000..b4c653117ef389f3b037965da1ea79f5fa9a48e9 --- /dev/null +++ b/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/files/change-tools-cmake.patch @@ -0,0 +1,182 @@ +diff -urpN a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt +--- a/tensorflow/lite/CMakeLists.txt 2024-07-21 14:42:31.900041655 +0000 ++++ b/tensorflow/lite/CMakeLists.txt 2024-07-21 14:48:49.563383581 +0000 +@@ -515,14 +515,14 @@ target_include_directories(tensorflow-li + ) + target_link_libraries(tensorflow-lite + PUBLIC +- Eigen3::Eigen ++ ${Eigen3_LIBRARY} + NEON_2_SSE +- absl::flags +- absl::hash +- absl::status +- absl::strings +- absl::synchronization +- absl::variant ++ absl_flags ++ absl_hash ++ absl_status ++ absl_strings ++ absl_synchronization ++ absl_variant + farmhash + fft2d_fftsg2d + flatbuffers +diff -urpN a/tensorflow/lite/tools/cmake/modules/Findabsl.cmake b/tensorflow/lite/tools/cmake/modules/Findabsl.cmake +--- a/tensorflow/lite/tools/cmake/modules/Findabsl.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/Findabsl.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -15,7 +15,6 @@ + + # grpc uses find_package in CONFIG mode for this package, so override the + # system installation and build from source instead. +-include(abseil-cpp) + if(abseil-cpp_POPULATED) + set(_ABSL_LIBRARY_NAMES + algorithm +diff -urpN a/tensorflow/lite/tools/cmake/modules/abseil-cpp.cmake b/tensorflow/lite/tools/cmake/modules/abseil-cpp.cmake +--- a/tensorflow/lite/tools/cmake/modules/abseil-cpp.cmake 2024-07-21 14:42:31.977042541 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/abseil-cpp.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -22,12 +22,6 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + abseil-cpp +- GIT_REPOSITORY https://github.com/abseil/abseil-cpp +- # Sync with tensorflow/third_party/absl/workspace.bzl +- GIT_TAG 273292d1cfc0a94a65082ee350509af1d113344d +- GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE +- PREFIX "${CMAKE_BINARY_DIR}" + SOURCE_DIR "${CMAKE_BINARY_DIR}/abseil-cpp" + ) + OverridableFetchContent_GetProperties(abseil-cpp) +diff -urpN a/tensorflow/lite/tools/cmake/modules/clog.cmake b/tensorflow/lite/tools/cmake/modules/clog.cmake +--- a/tensorflow/lite/tools/cmake/modules/clog.cmake 2024-07-21 14:42:31.977042541 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/clog.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,11 +21,7 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + clog +- GIT_REPOSITORY https://github.com/pytorch/cpuinfo +- # Sync with tensorflow/third_party/clog/workspace.bzl +- GIT_TAG 5e63739504f0f8e18e941bd63b2d6d42536c7d90 +- GIT_PROGRESS TRUE +- SOURCE_DIR "${CMAKE_BINARY_DIR}/clog" ++ SOURCE_DIR "${CMAKE_BINARY_DIR}/cpuinfo" + ) + OverridableFetchContent_GetProperties(clog) + if(NOT clog_POPULATED) +diff -urpN a/tensorflow/lite/tools/cmake/modules/cpuinfo.cmake b/tensorflow/lite/tools/cmake/modules/cpuinfo.cmake +--- a/tensorflow/lite/tools/cmake/modules/cpuinfo.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/cpuinfo.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,10 +21,6 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + cpuinfo +- GIT_REPOSITORY https://github.com/pytorch/cpuinfo +- # Sync with tensorflow/third_party/cpuinfo/workspace.bzl +- GIT_TAG 5e63739504f0f8e18e941bd63b2d6d42536c7d90 +- GIT_PROGRESS TRUE + SOURCE_DIR "${CMAKE_BINARY_DIR}/cpuinfo" + ) + OverridableFetchContent_GetProperties(cpuinfo) +diff -urpN a/tensorflow/lite/tools/cmake/modules/eigen.cmake b/tensorflow/lite/tools/cmake/modules/eigen.cmake +--- a/tensorflow/lite/tools/cmake/modules/eigen.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/eigen.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,24 +21,18 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + eigen +- GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git +- # Sync with tensorflow/third_party/eigen3/workspace.bzl +- GIT_TAG 0e187141679fdb91da33249d18cb79a011c0e2ea +- # It's not currently (cmake 3.17) possible to shallow clone with a GIT TAG +- # as cmake attempts to git checkout the commit hash after the clone +- # which doesn't work as it's a shallow clone hence a different commit hash. +- # https://gitlab.kitware.com/cmake/cmake/-/issues/17770 +- # GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE +- PREFIX "${CMAKE_BINARY_DIR}" + SOURCE_DIR "${CMAKE_BINARY_DIR}/eigen" +- LICENSE_FILE "COPYING.MPL2" + ) + OverridableFetchContent_GetProperties(eigen) + if(NOT eigen_POPULATED) + OverridableFetchContent_Populate(eigen) + endif() + ++set(EIGEN_SOURCE_DIR "${eigen_SOURCE_DIR}" CACHE PATH ++ "Source directory for the CMake project." ++) ++ ++include_directories(${CMAKE_BINARY_DIR}/eigen) + # Patch Eigen to disable Fortran compiler check for BLAS and LAPACK tests. + if(NOT EIGEN_DISABLED_FORTRAN_COMPILER_CHECK) + file(WRITE "${eigen_SOURCE_DIR}/cmake/language_support.cmake" " +diff -urpN a/tensorflow/lite/tools/cmake/modules/farmhash.cmake b/tensorflow/lite/tools/cmake/modules/farmhash.cmake +--- a/tensorflow/lite/tools/cmake/modules/farmhash.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/farmhash.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,15 +21,6 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + farmhash +- GIT_REPOSITORY https://github.com/google/farmhash +- # Sync with tensorflow/third_party/farmhash/workspace.bzl +- GIT_TAG 0d859a811870d10f53a594927d0d0b97573ad06d +- # It's not currently possible to shallow clone with a GIT TAG +- # as cmake attempts to git checkout the commit hash after the clone +- # which doesn't work as it's a shallow clone hence a different commit hash. +- # https://gitlab.kitware.com/cmake/cmake/-/issues/17770 +- # GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE + SOURCE_DIR "${CMAKE_BINARY_DIR}/farmhash" + ) + OverridableFetchContent_GetProperties(farmhash) +diff -urpN a/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake b/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake +--- a/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,11 +21,6 @@ include(FetchContent) + + OverridableFetchContent_Declare( + flatbuffers +- GIT_REPOSITORY https://github.com/google/flatbuffers +- # Sync with tensorflow/third_party/flatbuffers/workspace.bzl +- GIT_TAG v2.0.6 +- GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE + SOURCE_DIR "${CMAKE_BINARY_DIR}/flatbuffers" + ) + +diff -urpN a/tensorflow/lite/tools/cmake/modules/gemmlowp.cmake b/tensorflow/lite/tools/cmake/modules/gemmlowp.cmake +--- a/tensorflow/lite/tools/cmake/modules/gemmlowp.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/gemmlowp.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,15 +21,6 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + gemmlowp +- GIT_REPOSITORY https://github.com/google/gemmlowp +- # Sync with tensorflow/third_party/gemmlowp/workspace.bzl +- GIT_TAG fda83bdc38b118cc6b56753bd540caa49e570745 +- # It's not currently (cmake 3.17) possible to shallow clone with a GIT TAG +- # as cmake attempts to git checkout the commit hash after the clone +- # which doesn't work as it's a shallow clone hence a different commit hash. +- # https://gitlab.kitware.com/cmake/cmake/-/issues/17770 +- # GIT_SHALLOW TRUE +- GIT_PROGRESS TRUE + SOURCE_DIR "${CMAKE_BINARY_DIR}/gemmlowp" + ) + +diff -urpN a/tensorflow/lite/tools/cmake/modules/ruy.cmake b/tensorflow/lite/tools/cmake/modules/ruy.cmake +--- a/tensorflow/lite/tools/cmake/modules/ruy.cmake 2024-07-21 14:42:31.978042552 +0000 ++++ b/tensorflow/lite/tools/cmake/modules/ruy.cmake 2024-07-21 14:48:49.557383512 +0000 +@@ -21,10 +21,6 @@ include(OverridableFetchContent) + + OverridableFetchContent_Declare( + ruy +- GIT_REPOSITORY https://github.com/google/ruy +- # Sync with tensorflow/third_party/ruy/workspace.bzl +- GIT_TAG 841ea4172ba904fe3536789497f9565f2ef64129 +- GIT_PROGRESS TRUE + SOURCE_DIR "${CMAKE_BINARY_DIR}/ruy" + ) + OverridableFetchContent_GetProperties(ruy) diff --git a/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/tensorflow-lite_%.bbappend b/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/tensorflow-lite_%.bbappend index ced7a21b6c959c7c0c44e9495046c571e4292240..8536c4d7d2fc999bd61f53757f6b22c8eda11585 100644 --- a/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/tensorflow-lite_%.bbappend +++ b/meta-openeuler/recipes-tensorflow-lite/tensorflow-lite/tensorflow-lite_%.bbappend @@ -4,7 +4,7 @@ PV = "2.10.0" OPENEULER_REPO_NAME = "tensorflow" -DEPENDS:remove = "libgfortran" +DEPENDS:remove:libc-musl = "libgfortran" SRC_URI:remove = " \ file://fix-to-cmake-2.9.1.patch \ @@ -13,7 +13,11 @@ SRC_URI:remove = " \ SRC_URI = " \ file://tensorflow-${PV}.tar.gz \ + file://external.tar.bz2.partaa \ + file://external.tar.bz2.partab \ + file://external.tar.bz2.partac \ file://modify-deps-on-libclang-gcsfs-gast.patch \ + file://change-tools-cmake.patch \ " @@ -21,6 +25,19 @@ S = "${WORKDIR}/tensorflow-${PV}" EXTRA_OECMAKE:append = " -DTFLITE_ENABLE_XNNPACK=OFF " +DEPENDS += " \ + abseil-cpp \ +" + +do_configure:prepend() { + cat ${WORKDIR}/external.tar.* | tar -xvjf - -C ${WORKDIR}/ + mv ${WORKDIR}/external/eigen_archive ${WORKDIR}/build/eigen + mv ${WORKDIR}/external/farmhash_archive ${WORKDIR}/build/farmhash + mv ${WORKDIR}/external/gemmlowp ${WORKDIR}/build/gemmlowp + mv ${WORKDIR}/external/cpuinfo ${WORKDIR}/build/cpuinfo + mv ${WORKDIR}/external/ruy ${WORKDIR}/build/ruy + mv ${WORKDIR}/external/flatbuffers ${WORKDIR}/build/flatbuffers +} do_install() { # install libraries diff --git a/meta-openeuler/recipes-wlroots/font-awesome/font-awesome-otf_%.bbappend b/meta-openeuler/recipes-wlroots/font-awesome/font-awesome-otf_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..c9504c739560773004107abf55f6dad9e12b4777 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/font-awesome/font-awesome-otf_%.bbappend @@ -0,0 +1,15 @@ +# main bb: meta-wayland/recipes-extended/font-awesome/font-awesome-otf_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +OPENEULER_LOCAL_NAME = "oee_archive" + +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9b9d97c72a232b7715f2aed4bf4a4d45" + +PV = "6.5.2" + +SRC_URI:prepend = " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/${PV}.tar.gz \ +" + +S = "${WORKDIR}/Font-Awesome-${PV}" + diff --git a/meta-openeuler/recipes-wlroots/font-awesome/font-awesome-otf_git.bb b/meta-openeuler/recipes-wlroots/font-awesome/font-awesome-otf_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..46d4b8833b5955e475d5d347f091beeb15ec2c50 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/font-awesome/font-awesome-otf_git.bb @@ -0,0 +1,27 @@ +SUMMARY = "Font Awesome" + +HOMEPAGE = "https://fontawesome.com/" +SECTION = "base/fonts" + +LICENSE = "CC-BY-4.0 & OFL-1.1" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4186e0f8172f263065437f80932efbe1" + +SRC_URI = " \ + git://github.com/FortAwesome/Font-Awesome.git;protocol=https;branch=6.x \ +" + +S = "${WORKDIR}/git" +PV = "6.4.0" +SRCREV = "0698449d50f2b95517562295a59d414afc68b369" + + +do_install () { + install -d ${D}${datadir}/fonts/opentype + for font in ${S}/otfs/*.otf; do + install -m 0644 "$font" ${D}${datadir}/fonts/opentype + done +} + +FILES:${PN} = " \ + ${datadir}/fonts \ +" diff --git a/meta-openeuler/recipes-wlroots/kanshi/kanshi_%.bbappend b/meta-openeuler/recipes-wlroots/kanshi/kanshi_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..f42cc4e8610aa416e395e32b2ca2955427a28f25 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/kanshi/kanshi_%.bbappend @@ -0,0 +1,15 @@ +# main bb: meta-wayland/recipes-support/kanshi/kanshi_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +OPENEULER_LOCAL_NAME = "oee_archive" + +PV = "1.7.0" + +DEPENDS += "libscfg" + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/v${PV}.tar.gz \ +" + +S = "${WORKDIR}/kanshi-v${PV}" + diff --git a/meta-openeuler/recipes-wlroots/kanshi/kanshi_git.bb b/meta-openeuler/recipes-wlroots/kanshi/kanshi_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..d71a2f9f24346ea824060079ca8b2b6998ea0d41 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/kanshi/kanshi_git.bb @@ -0,0 +1,31 @@ +SUMMARY = "kanshi allows you to define output profiles that are automatically enabled and disabled on hotplug." +HOMEPAGE = "https://git.sr.ht/~emersion/kanshi" +SECTION = "Wayland" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=706cd9899438a9385250ab6773c1fa53" + +REQUIRED_DISTRO_FEATURES = "wayland" + +SRC_URI = " \ + git://git.sr.ht/~emersion/kanshi;protocol=https;branch=master \ +" + +DEPENDS = "wayland wayland-native" + +inherit meson pkgconfig features_check + +PACKAGECONFIG[ipc] = "-Dipc=enabled,-Dipc=disabled,libvarlink" +PACKAGECONFIG[man-pages] = "-Dman-pages=enabled,-Dman-pages=disabled,scdoc-native" + +PACKAGECONFIG ?= " \ + ipc \ +" + +S = "${WORKDIR}/git" +PV = "1.2.0" +SRCREV = "992c1954a6a00a3f66882c9eb75d74c2dbcbe25c" + +EXTRA_OEMESON += "--buildtype release" + +BBCLASSEXTEND = "" diff --git a/meta-openeuler/recipes-wlroots/kanshi/libscfg_0.1.1.bb b/meta-openeuler/recipes-wlroots/kanshi/libscfg_0.1.1.bb new file mode 100644 index 0000000000000000000000000000000000000000..84f9dbcd5ca1c2c248bc9c47a06499127332d8fb --- /dev/null +++ b/meta-openeuler/recipes-wlroots/kanshi/libscfg_0.1.1.bb @@ -0,0 +1,21 @@ +SUMMARY = "A C library for scfg(simple configuration file format)" +HOMEPAGE = "https://git.sr.ht/~emersion/libscfg" +SECTION = "LIBRARY" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=b32b698ab815d1913b4ed31d8c2ee8d7" + +OPENEULER_LOCAL_NAME = "oee_archive" + +PV = "0.1.1" + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/v${PV}.tar.gz \ +" + +inherit meson pkgconfig + +S = "${WORKDIR}/libscfg-v${PV}" + +FILES:${PN} = "${libdir}/*so" +FILES:${PN}-dev = "${includedir} ${libdir}/pkgconfig" diff --git a/meta-openeuler/recipes-wlroots/labwc/files/autostart b/meta-openeuler/recipes-wlroots/labwc/files/autostart new file mode 100644 index 0000000000000000000000000000000000000000..d8770d2eac99ad6e8df9a38673227124056354fc --- /dev/null +++ b/meta-openeuler/recipes-wlroots/labwc/files/autostart @@ -0,0 +1,4 @@ +fc-list | grep Awesome || fc-cache -fv +glib-compile-schemas /usr/share/glib-2.0/schemas/ +swaybg -i /usr/share/weston/openeuler.png >/dev/null 2>&1 & +sfwbar >/dev/null 2>&1 & diff --git a/meta-openeuler/recipes-wlroots/labwc/labwc-tweaks-gtk_485961a.bb b/meta-openeuler/recipes-wlroots/labwc/labwc-tweaks-gtk_485961a.bb new file mode 100644 index 0000000000000000000000000000000000000000..d5e4cf31a2be83326a8a4dacad80557af9c05a7e --- /dev/null +++ b/meta-openeuler/recipes-wlroots/labwc/labwc-tweaks-gtk_485961a.bb @@ -0,0 +1,37 @@ +# bb ref: meta-wayland/recipes-wlroots/labwc/labwc-tweaks_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +# https://github.com/labwc/labwc-tweaks need QT6 after 2024.4 +# the GTK version changed to https://github.com/labwc/labwc-tweaks-gtk + +SUMMARY = "This is a [WIP] configuration gui app for labwc without any real plan or Acceptance Criteria" +HOMEPAGE = "https://github.com/labwc/labwc-tweaks" +SECTION = "graphics" +LICENSE = "GPL-2.0-only" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +REQUIRED_DISTRO_FEATURES = "wayland" + +OPENEULER_LOCAL_NAME = "oee_archive" +OEE_ARCHIVE_SUBDIR = "labwc" + +DEPENDS += " \ + libxml2 \ + glib-2.0 \ + gtk+3 \ + gsettings-desktop-schemas \ +" + +inherit meson pkgconfig features_check + +PV = "485961a" + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${OEE_ARCHIVE_SUBDIR}/labwc-tweaks-gtk-485961a.zip \ +" + +S = "${WORKDIR}/labwc-tweaks-gtk-master" + +FILES:${PN} += "${datadir}" + diff --git a/meta-openeuler/recipes-wlroots/labwc/labwc_%.bbappend b/meta-openeuler/recipes-wlroots/labwc/labwc_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..93c2d21d79a517994f4191fd97d4d07d6cf9b662 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/labwc/labwc_%.bbappend @@ -0,0 +1,27 @@ +# main bb: meta-wayland/recipes-wlroots/labwc/labwc_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +OPENEULER_LOCAL_NAME = "oee_archive" + +PV = "0.7.2" + +DEPENDS:remove = " wlroots-0.16 " +DEPENDS:append = " wlroots " + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/${PV}.tar.gz \ + file://autostart \ +" + +S = "${WORKDIR}/${BP}" + +# make a lite version +RRECOMMENDS:${PN} = " labwc-tweaks-gtk sfwbar swaybg kanshi wlr-randr " + +# we force to use xwayland +PACKAGECONFIG:append = " xwayland " + +do_install:append() { + install -d ${D}/etc/xdg/labwc + install -m 755 -D ${WORKDIR}/autostart ${D}/etc/xdg/labwc/autostart +} diff --git a/meta-openeuler/recipes-wlroots/labwc/labwc_git.bb b/meta-openeuler/recipes-wlroots/labwc/labwc_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..e728eda21e088ffa553eeeb784ec34bfd41d0423 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/labwc/labwc_git.bb @@ -0,0 +1,48 @@ + +SUMMARY = "Labwc stands for Lab Wayland Compositor" +HOMEPAGE = "https://github.com/labwc/labwc" +SECTION = "graphics" +LICENSE = "GPL-2.0-only" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +REQUIRED_DISTRO_FEATURES = "wayland" + +DEPENDS += " \ + libxml2 \ + glib-2.0 \ + cairo \ + pango \ + wayland \ + wayland-native \ + wayland-protocols \ + libdrm \ + libxkbcommon \ + libinput \ + wlroots-0.16 \ +" + +RRECOMMENDS:${PN} ?= " \ + foot \ + grim \ + slurp \ + wl-clipboard \ + labwc-tweaks \ + swaybg \ +" + +SRC_URI = "git://github.com/labwc/labwc.git;protocol=https;branch=master" + +SRCREV = "7af5f1d5ceea6db6529ad2beb9c3cad94f74f719" +PV = "0.6.6" +S = "${WORKDIR}/git" + +inherit meson pkgconfig features_check gettext + +PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'xwayland', d)}" + +PACKAGECONFIG[man-pages] = "-Dman-pages=enabled,-Dman-pages=disabled,scdoc-native" +PACKAGECONFIG[xwayland] = "-Dxwayland=enabled,-Dxwayland=disabled,libxcb xcb-util-wm xcb-util-renderutil xwayland,xwayland" + +FILES:${PN} += "${datadir}" + diff --git a/meta-openeuler/recipes-wlroots/sfwbar/sfwbar_1.0.bb b/meta-openeuler/recipes-wlroots/sfwbar/sfwbar_1.0.bb new file mode 100644 index 0000000000000000000000000000000000000000..25d674edbaa1e3df82a8ad35b81e623080e779c0 --- /dev/null +++ b/meta-openeuler/recipes-wlroots/sfwbar/sfwbar_1.0.bb @@ -0,0 +1,62 @@ +SUMMARY = "SFWBar (S* Floating Window Bar) is a flexible taskbar application for wayland compositors" +DESCRIPTION = "SFWBar (S* Floating Window Bar) is a flexible taskbar application for wayland compositors, designed with a stacking layout in mind. Originally developed for Sway, SFWBar will work with any wayland compositor supporting layer shell protocol, the taskbar and window switcher functionality shall work with any compositor supportinig foreign toplevel protocol, but the pager, and window placement functionality require sway (or at least i3 IPC support)." +HOMEPAGE = "https://github.com/Alexays/Waybar" +BUGTRACKER = "https://github.com/Alexays/Waybar/issues" +SECTION = "graphics" +LICENSE = "GPLv3 & MIT" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464" + +REQUIRED_DISTRO_FEATURES = "wayland" + +OPENEULER_LOCAL_NAME = "oee_archive" + +PV = "1.0.beta15" + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/v1.0_beta15.tar.gz \ +" + +S = "${WORKDIR}/sfwbar-1.0_beta15" + +DEPENDS += " \ + glib-2.0-native \ + gtkmm3 \ + json-c \ + gtk-layer-shell \ + libxkbcommon \ + gtk+3 \ + gobject-introspection \ + wayland \ + wayland-native \ + wayland-protocols \ +" + +RRECOMMENDS:${PN} += "font-awesome-otf" + +inherit meson pkgconfig features_check + +PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib" +PACKAGECONFIG[bluez] = "-Dbluez=enabled,-Dbluez=disabled,bluez5" +PACKAGECONFIG[iwd] = "-Diwd=enabled,-Diwd=disabled" +PACKAGECONFIG[nm] = "-Dnm=enabled,-Dnm=disabled" +PACKAGECONFIG[bsdctl] = "-Dbsdctl=enabled,-Dbsdctl=disabled" +PACKAGECONFIG[idleinhibit] = "-Didleinhibit=enabled,-Didleinhibit=disabled" +PACKAGECONFIG[network] = "-Dnetwork=enabled,-Dnetwork=disabled" +PACKAGECONFIG[mpd] = "-Dmpd=enabled,-Dmpd=disabled,libmpdclient" +PACKAGECONFIG[pulse] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio" +PACKAGECONFIG[xkb] = "-Dxkb=enabled,-Dxkb=disabled,libxkbcommon" +PACKAGECONFIG[build-docs] = "-Dbuild-docs=enabled,-Dbuild-docs=disabled" + +PACKAGECONFIG ?= " \ + alsa \ + bluez \ + iwd \ + nm \ + idleinhibit \ + network \ + ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \ + xkb \ +" +FILES:${PN} += " ${datadir} " + diff --git a/meta-openeuler/recipes-wlroots/swaybg/swaybg_%.bbappend b/meta-openeuler/recipes-wlroots/swaybg/swaybg_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..3c23f694f3efc6acd883e5c8a79f15fc52c3f9cd --- /dev/null +++ b/meta-openeuler/recipes-wlroots/swaybg/swaybg_%.bbappend @@ -0,0 +1,13 @@ +# main bb: meta-wayland/recipes-support/swaybg/swaybg_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +OPENEULER_LOCAL_NAME = "oee_archive" + +PV = "1.2.1" + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/v${PV}.tar.gz \ +" + +S = "${WORKDIR}/${BP}" + diff --git a/meta-openeuler/recipes-wlroots/swaybg/swaybg_git.bb b/meta-openeuler/recipes-wlroots/swaybg/swaybg_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..82aa2e17e616ba6fce6bea7095a2f49f5aeb318e --- /dev/null +++ b/meta-openeuler/recipes-wlroots/swaybg/swaybg_git.bb @@ -0,0 +1,27 @@ +SUMMARY = "swaybg is a wallpaper utility for Wayland compositors." +HOMEPAGE = "https://github.com/swaywm/swaybg" +BUGTRACKER = "https://github.com/swaywm/swaybg/issues" +SECTION = "graphics" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=b53d9ec16b9125995437ac9efab1b450" + +REQUIRED_DISTRO_FEATURES = "wayland" + +DEPENDS = " \ + cairo \ + gdk-pixbuf \ + wayland \ + wayland-native \ + wayland-protocols \ +" + +SRC_URI = "git://github.com/swaywm/swaybg.git;protocol=https;branch=master" + +S = "${WORKDIR}/git" +PV = "1.2.0" +SRCREV = "eabc06e7eb9e5cb08c8177f49753dedc505076b4" + +inherit meson pkgconfig features_check + +EXTRA_OEMESON += "--buildtype release" diff --git a/meta-openeuler/recipes-wlroots/wlr-randr/wlr-randr_%.bbappend b/meta-openeuler/recipes-wlroots/wlr-randr/wlr-randr_%.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..3f9306618af93adc15a1caac712f3abe574e191b --- /dev/null +++ b/meta-openeuler/recipes-wlroots/wlr-randr/wlr-randr_%.bbappend @@ -0,0 +1,13 @@ +# main bb: meta-wayland/recipes-support/wlr-randr/wlr-randr_git.bb +# from https://github.com/MarkusVolk/meta-wayland.git + +OPENEULER_LOCAL_NAME = "oee_archive" + +PV = "0.4.1" + +SRC_URI += " \ + file://${OPENEULER_LOCAL_NAME}/${BPN}/v${PV}.tar.gz \ +" + +S = "${WORKDIR}/wlr-randr-v${PV}" + diff --git a/meta-openeuler/recipes-wlroots/wlr-randr/wlr-randr_git.bb b/meta-openeuler/recipes-wlroots/wlr-randr/wlr-randr_git.bb new file mode 100644 index 0000000000000000000000000000000000000000..098cab5b9466607436441f752fb3862e05b8214d --- /dev/null +++ b/meta-openeuler/recipes-wlroots/wlr-randr/wlr-randr_git.bb @@ -0,0 +1,24 @@ +SUMMARY = "Utility to manage outputs of a Wayland compositor." +HOMEPAGE = "https://sr.ht/~emersion/wlr-randr/" +SECTION = "Wayland" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=07e8a8f2dc9e6a7f131e81037398c61b" + +REQUIRED_DISTRO_FEATURES = "wayland" + +SRC_URI = "git://git.sr.ht/~emersion/wlr-randr;protocol=https;nobranch=1" + +inherit meson pkgconfig + +DEPENDS = " \ + wayland \ + wayland-native \ + wayland-protocols \ +" + +inherit meson pkgconfig features_check + +S = "${WORKDIR}/git" +PV = "0.3.0" +SRCREV = "027cf087b882951eef249b794be31adf0a33b5f8"