diff --git a/README.md b/README.md index b3d7ea8..bedd01f 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Soc | Boards | | Allwinner H6 | Orange Pi 3/3 LTS/Lite2/OnePlus| | Allwinner H616 | Orange Pi Zero2 | | Rockchip RK3328 | Orange Pi R1Plus/R1Plus LTS| -| Rockchip RK3399 | Orange Pi 4/4B | +| Rockchip RK3399 | Orange Pi 4/4 LTS/4B | ## Download links diff --git a/build.sh b/build.sh index 65e723d..671abd1 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,97 +8,158 @@ # DO NOT EDIT THIS FILE # use configuration files like config-default.conf to set the build configuration -# check Orange Pi documentation for more info +# Please check Orange Pi documentation for more info +# http://www.orangepi.cn/downloadresourcescn +# http://www.orangepi.org/downloadresources SRC="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" -# check for whitespace in $SRC and exit for safety reasons +# check for whitespace in ${SRC} and exit for safety reasons grep -q "[[:space:]]" <<<"${SRC}" && { echo "\"${SRC}\" contains whitespace. Not supported. Aborting." >&2 ; exit 1 ; } cd "${SRC}" || exit +if [[ "${ORANGEPI_ENABLE_CALL_TRACING}" == "yes" ]]; then + set -T # inherit return/debug traps + mkdir -p "${SRC}"/output/debug + echo -n "" > "${SRC}"/output/debug/calls.txt + trap 'echo "${BASH_LINENO[@]}|${BASH_SOURCE[@]}|${FUNCNAME[@]}" >> ${SRC}/output/debug/calls.txt ;' RETURN +fi + if [[ -f "${SRC}"/scripts/general.sh ]]; then + # shellcheck source=scripts/general.sh source "${SRC}"/scripts/general.sh + else + echo "Error: missing build directory structure" echo "Please clone the full repository by https://github.com/orangepi-xunlong/orangepi-build" exit 255 + fi -if [[ $EUID == 0 ]] || [[ "$1" == vagrant ]]; then - : -elif [[ "$1" == docker || "$1" == dockerpurge || "$1" == docker-shell ]] && grep -q `whoami` <(getent group docker); then - : -else - display_alert "This script requires root privileges, trying to use sudo" "" "wrn" - sudo "$SRC/build.sh" "$@" - exit $? -fi +# Add the variables needed at the beginning of the path +check_args () +{ + +for p in "$@"; do + + case "${p%=*}" in + LIB_TAG) + # Take a variable if the branch exists locally + if [ "${p#*=}" == "$(git branch | \ + gawk -v b="${p#*=}" '{if ( $NF == b ) {print $NF}}')" ]; then + echo -e "[\e[0;35m warn \x1B[0m] Setting $p" + eval "$p" + else + echo -e "[\e[0;35m warn \x1B[0m] Skip $p setting as LIB_TAG=\"\"" + eval LIB_TAG="" + fi + ;; + esac + +done + +} + + +check_args "$@" + update_src() { + cd "${SRC}" || exit - if [[ ! -f $SRC/.ignore_changes ]]; then + if [[ ! -f "${SRC}"/.ignore_changes ]]; then echo -e "[\e[0;32m o.k. \x1B[0m] This script will try to update" - git pull + CHANGED_FILES=$(git diff --name-only) - if [[ -n $CHANGED_FILES ]]; then + if [[ -n "${CHANGED_FILES}" ]]; then echo -e "[\e[0;35m warn \x1B[0m] Can't update since you made changes to: \e[0;32m\n${CHANGED_FILES}\x1B[0m" while true; do - echo -e "Press \e[0;33m\x1B[0m or \e[0;33mexit\x1B[0m to abort compilation, \e[0;33m\x1B[0m to ignore and continue, \e[0;33mdiff\x1B[0m to display changes" + echo -e "Press \e[0;33m\x1B[0m or \e[0;33mexit\x1B[0m to abort compilation"\ + ", \e[0;33m\x1B[0m to ignore and continue, \e[0;33mdiff\x1B[0m to display changes" read -r - if [[ "$REPLY" == "diff" ]]; then + if [[ "${REPLY}" == "diff" ]]; then git diff - elif [[ "$REPLY" == "exit" ]]; then + elif [[ "${REPLY}" == "exit" ]]; then exit 1 - elif [[ "$REPLY" == "" ]]; then + elif [[ "${REPLY}" == "" ]]; then break else echo "Unknown command!" fi done - else + elif [[ $(git branch | grep "*" | awk '{print $2}') != "${LIB_TAG}" && -n "${LIB_TAG}" ]]; then git checkout "${LIB_TAG:-master}" + git pull fi fi + } -#TMPFILE=`mktemp` && chmod 644 $TMPFILE -#echo SRC=$SRC > $TMPFILE -#echo LIB_TAG=$LIB_TAG >> $TMPFILE -#declare -f update_src >> $TMPFILE -#echo update_src >> $TMPFILE + +TMPFILE=$(mktemp) +chmod 644 "${TMPFILE}" +{ + + echo SRC="$SRC" + echo LIB_TAG="$LIB_TAG" + declare -f update_src + #echo "update_src" + +} > "$TMPFILE" #do not update/checkout git with root privileges to messup files onwership. #due to in docker/VM, we can't su to a normal user, so do not update/checkout git. -#if [[ `systemd-detect-virt` == 'none' ]]; then -# if [[ $EUID == 0 ]]; then -# su `stat --format=%U $SRC/.git` -c "bash $TMPFILE" -# else -# bash $TMPFILE -# fi -#fi +if [[ $(systemd-detect-virt) == 'none' ]]; then -#rm $TMPFILE + if [[ "${EUID}" == "0" ]]; then + su "$(stat --format=%U "${SRC}"/.git)" -c "bash ${TMPFILE}" + else + bash "${TMPFILE}" + fi -# Check for required packages for compiling -if [[ -z "$(which whiptail)" ]]; then - sudo apt-get update - sudo apt-get install -y whiptail fi -if [[ -z "$(which getfacl)" ]]; then - sudo apt-get update - sudo apt-get install -y acl + + +rm "${TMPFILE}" + + +if [[ "${EUID}" == "0" ]] || [[ "${1}" == "vagrant" ]]; then + : +elif [[ "${1}" == docker || "${1}" == dockerpurge || "${1}" == docker-shell ]] && grep -q "$(whoami)" <(getent group docker); then + : +else + display_alert "This script requires root privileges, trying to use sudo" "" "wrn" + sudo "${SRC}/build.sh" "$@" + exit $? +fi + +if [ "$OFFLINE_WORK" == "yes" ]; then + + echo -e "\n" + display_alert "* " "You are working offline." + display_alert "* " "Sources, time and host will not be checked" + echo -e "\n" + sleep 3s + +else + + # check and install the basic utilities here + prepare_host_basic + fi # Check for Vagrant -if [[ "$1" == vagrant && -z "$(which vagrant)" ]]; then +if [[ "${1}" == vagrant && -z "$(command -v vagrant)" ]]; then display_alert "Vagrant not installed." "Installing" sudo apt-get update sudo apt-get install -y vagrant virtualbox fi -if [[ "$1" == dockerpurge && -f /etc/debian_version ]]; then +# Purge Orange Pi Docker images +if [[ "${1}" == dockerpurge && -f /etc/debian_version ]]; then display_alert "Purging Orange Pi Docker containers" "" "wrn" docker container ls -a | grep orangepi | awk '{print $1}' | xargs docker container rm &> /dev/null docker image ls | grep orangepi | awk '{print $3}' | xargs docker image rm &> /dev/null @@ -106,48 +167,57 @@ if [[ "$1" == dockerpurge && -f /etc/debian_version ]]; then set -- "docker" "$@" fi -if [[ "$1" == docker-shell ]]; then +# Docker shell +if [[ "${1}" == docker-shell ]]; then shift + #shellcheck disable=SC2034 SHELL_ONLY=yes set -- "docker" "$@" fi -# Install Docker if not there but wanted. We cover only Debian based distro install. Else, manual Docker install is needed -if [[ "$1" == docker && -f /etc/debian_version && -z "$(which docker)" ]]; then +# Install Docker if not there but wanted. We cover only Debian based distro install. On other distros, manual Docker install is needed +if [[ "${1}" == docker && -f /etc/debian_version && -z "$(command -v docker)" ]]; then + + DOCKER_BINARY="docker-ce" # add exception for Ubuntu Focal until Docker provides dedicated binary - codename=$(lsb_release -sc) - codeid=$(lsb_release -is | awk '{print tolower($0)}') - [[ $codeid == linuxmint && $codename == debbie ]] && codename="buster" && codeid="debian" - [[ $codename == focal ]] && codename="bionic" + codename=$(cat /etc/os-release | grep VERSION_CODENAME | cut -d"=" -f2) + codeid=$(cat /etc/os-release | grep ^NAME | cut -d"=" -f2 | awk '{print tolower($0)}' | tr -d '"' | awk '{print $1}') + [[ "${codename}" == "debbie" ]] && codename="buster" && codeid="debian" + [[ "${codename}" == "ulyana" || "${codename}" == "jammy" ]] && codename="focal" && codeid="ubuntu" + + # different binaries for some. TBD. Need to check for all others + [[ "${codename}" =~ focal|hirsute ]] && DOCKER_BINARY="docker containerd docker.io" display_alert "Docker not installed." "Installing" "Info" - echo "deb [arch=amd64] https://download.docker.com/linux/${codeid} ${codename} edge" > /etc/apt/sources.list.d/docker.list + sudo bash -c "echo \"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/${codeid} ${codename} stable\" > /etc/apt/sources.list.d/docker.list" - # minimal set of utilities that are needed for prep - packages=("curl" "gnupg" "apt-transport-https") - for i in "${packages[@]}" - do - [[ ! $(which $i) ]] && install_packages+=$i" " - done - [[ -z $install_packages ]] && apt-get update;apt-get install -y -qq --no-install-recommends $install_packages - - curl -fsSL "https://download.docker.com/linux/${codeid}/gpg" | apt-key add -qq - > /dev/null 2>&1 + sudo bash -c "curl -fsSL \"https://download.docker.com/linux/${codeid}/gpg\" | apt-key add -qq - > /dev/null 2>&1 " export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get install -y -qq --no-install-recommends docker-ce + sudo apt-get update + sudo apt-get install -y -qq --no-install-recommends ${DOCKER_BINARY} display_alert "Add yourself to docker group to avoid root privileges" "" "wrn" - "$SRC/build.sh" "$@" + "${SRC}/build.sh" "$@" exit $? + fi EXTER="${SRC}/external" # Create userpatches directory if not exists -mkdir -p $SRC/userpatches +mkdir -p "${SRC}"/userpatches + # Create example configs if none found in userpatches -if ! ls ${SRC}/userpatches/{config-example.conf,config-docker.conf,config-vagrant.conf} 1> /dev/null 2>&1; then +if ! ls "${SRC}"/userpatches/{config-example.conf,config-docker.conf,config-vagrant.conf} 1> /dev/null 2>&1; then + + # Migrate old configs + if ls "${SRC}"/*.conf 1> /dev/null 2>&1; then + display_alert "Migrate config files to userpatches directory" "all *.conf" "info" + cp "${SRC}"/*.conf "${SRC}"/userpatches || exit 1 + rm "${SRC}"/*.conf + [[ ! -L "${SRC}"/userpatches/config-example.conf ]] && ln -fs config-example.conf "${SRC}"/userpatches/config-default.conf || exit 1 + fi display_alert "Create example config file using template" "config-default.conf" "info" @@ -179,47 +249,59 @@ if ! ls ${SRC}/userpatches/{config-example.conf,config-docker.conf,config-vagran fi -if [[ -z "$CONFIG" && -n "$1" && -f "${SRC}/userpatches/config-$1.conf" ]]; then +if [[ -z "${CONFIG}" && -n "$1" && -f "${SRC}/userpatches/config-$1.conf" ]]; then CONFIG="userpatches/config-$1.conf" shift fi # usind default if custom not found -if [[ -z "$CONFIG" && -f "${SRC}/userpatches/config-default.conf" ]]; then - CONFIG="$SRC/userpatches/config-default.conf" +if [[ -z "${CONFIG}" && -f "${SRC}/userpatches/config-default.conf" ]]; then + CONFIG="userpatches/config-default.conf" fi # source build configuration file -CONFIG_FILE="$(realpath "$CONFIG")" +CONFIG_FILE="$(realpath "${CONFIG}")" -if [[ ! -f $CONFIG_FILE ]]; then - display_alert "Config file does not exist" "$CONFIG" "error" +if [[ ! -f "${CONFIG_FILE}" ]]; then + display_alert "Config file does not exist" "${CONFIG}" "error" exit 254 fi -CONFIG_PATH=$(dirname "$CONFIG_FILE") +CONFIG_PATH=$(dirname "${CONFIG_FILE}") -display_alert "Using config file" "$CONFIG_FILE" "info" -pushd $CONFIG_PATH > /dev/null +# Source the extensions manager library at this point, before sourcing the config. +# This allows early calls to enable_extension(), but initialization proper is done later. +# shellcheck source=scripts/extensions.sh +source "${SRC}"/scripts/extensions.sh + +display_alert "Using config file" "${CONFIG_FILE}" "info" +pushd "${CONFIG_PATH}" > /dev/null || exit # shellcheck source=/dev/null -source "$CONFIG_FILE" -popd > /dev/null +source "${CONFIG_FILE}" +popd > /dev/null || exit -[[ -z "${USERPATCHES_PATH}" ]] && USERPATCHES_PATH="$CONFIG_PATH" +[[ -z "${USERPATCHES_PATH}" ]] && USERPATCHES_PATH="${CONFIG_PATH}" # Script parameters handling -while [[ $1 == *=* ]]; do - parameter=${1%%=*} - value=${1##*=} - shift - display_alert "Command line: setting $parameter to" "${value:-(empty)}" "info" - eval "$parameter=\"$value\"" +while [[ "${1}" == *=* ]]; do + + parameter=${1%%=*} + value=${1##*=} + shift + display_alert "Command line: setting $parameter to" "${value:-(empty)}" "info" + eval "$parameter=\"$value\"" + done -if [[ $BUILD_ALL == yes || $BUILD_ALL == demo ]]; then + +if [[ "${BUILD_ALL}" == "yes" || "${BUILD_ALL}" == "demo" ]]; then + # shellcheck source=scripts/build-all-ng.sh source "${SRC}"/scripts/build-all-ng.sh + else + # shellcheck source=scripts/main.sh source "${SRC}"/scripts/main.sh + fi diff --git a/external/cache/debs/arm64/layout_switcher/layoutswitcher_0.2-0_all.deb b/external/cache/debs/arm64/layout_switcher/layoutswitcher_0.2-0_all.deb new file mode 100644 index 0000000..b56d585 Binary files /dev/null and b/external/cache/debs/arm64/layout_switcher/layoutswitcher_0.2-0_all.deb differ diff --git a/external/cache/debs/extra/bookworm-desktop/null.txt b/external/cache/debs/extra/bookworm-desktop/null.txt new file mode 100644 index 0000000..e69de29 diff --git a/external/cache/debs/extra/bookworm-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb b/external/cache/debs/extra/bookworm-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb new file mode 100644 index 0000000..4710b5c Binary files /dev/null and b/external/cache/debs/extra/bookworm-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb differ diff --git a/external/cache/debs/extra/bookworm-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb b/external/cache/debs/extra/bookworm-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb new file mode 100644 index 0000000..51cf71b Binary files /dev/null and b/external/cache/debs/extra/bookworm-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb differ diff --git a/external/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb b/external/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb new file mode 100755 index 0000000..39c46d1 Binary files /dev/null and b/external/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb differ diff --git a/external/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb b/external/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb new file mode 100755 index 0000000..1cf2085 Binary files /dev/null and b/external/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb differ diff --git a/external/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb b/external/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb new file mode 100755 index 0000000..4269807 Binary files /dev/null and b/external/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb differ diff --git a/external/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb b/external/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb new file mode 100755 index 0000000..75f41c1 Binary files /dev/null and b/external/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb differ diff --git a/external/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb b/external/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb new file mode 100755 index 0000000..78e2249 Binary files /dev/null and b/external/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb differ diff --git a/external/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb b/external/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb new file mode 100755 index 0000000..3eb9582 Binary files /dev/null and b/external/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb differ diff --git a/external/cache/debs/extra/bullseye-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb b/external/cache/debs/extra/bullseye-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb new file mode 100644 index 0000000..10394f9 Binary files /dev/null and b/external/cache/debs/extra/bullseye-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb differ diff --git a/external/cache/debs/extra/bullseye-utils/htop_3.1.0-0~armbian20.08.2+1_arm64.deb b/external/cache/debs/extra/bullseye-utils/htop_3.1.0-0~armbian20.08.2+1_arm64.deb new file mode 100644 index 0000000..94f0d4f Binary files /dev/null and b/external/cache/debs/extra/bullseye-utils/htop_3.1.0-0~armbian20.08.2+1_arm64.deb differ diff --git a/external/cache/debs/extra/bullseye-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb b/external/cache/debs/extra/bullseye-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb new file mode 100644 index 0000000..78186af Binary files /dev/null and b/external/cache/debs/extra/bullseye-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb differ diff --git a/external/cache/debs/host/debian-archive-keyring_2021.1.1_all.deb b/external/cache/debs/host/debian-archive-keyring_2021.1.1_all.deb deleted file mode 100755 index 7c1edab..0000000 Binary files a/external/cache/debs/host/debian-archive-keyring_2021.1.1_all.deb and /dev/null differ diff --git a/external/cache/sources/hcitools/hciattach_sprd.c b/external/cache/sources/hcitools/hciattach_sprd.c old mode 100644 new mode 100755 index b7c9392..612e324 --- a/external/cache/sources/hcitools/hciattach_sprd.c +++ b/external/cache/sources/hcitools/hciattach_sprd.c @@ -401,52 +401,27 @@ static unsigned char compare_char(unsigned char ch) static void set_mac_address(uint8_t *addr) { int i = 0; - SPRD_DBG("%s", __func__); - //for (i = 0; i < 6; i++) - // addr[5-i] = (unsigned char)local_bdaddr[i]; - - FILE *fp = fopen("/sys/class/addr_mgt/addr_bt", "r+"); unsigned char buff[255]; + unsigned char tmp[5]; + unsigned char str, str2; + + FILE *fp = fopen("/sys/class/addr_mgt/addr_bt", "r"); + + SPRD_DBG("%s", __func__); + fscanf(fp, "%s", buff); fclose(fp); - int k = 0; - - unsigned char tmp[5]; - sprintf(tmp, "%c%c", buff[0], buff[1]); - unsigned char str = compare_char(tmp[0]); - unsigned char str2 = compare_char(tmp[1]); - local_bdaddr[0] = (str << 4) | str2; - - sprintf(tmp, "%c%c", buff[3], buff[4]); - str = compare_char(tmp[0]); - str2 = compare_char(tmp[1]); - local_bdaddr[1] = (str << 4) | str2; - - sprintf(tmp, "%c%c", buff[6], buff[7]); - str = compare_char(tmp[0]); - str2 = compare_char(tmp[1]); - local_bdaddr[2] = (str << 4) | str2; - - sprintf(tmp, "%c%c", buff[9], buff[10]); - str = compare_char(tmp[0]); - str2 = compare_char(tmp[1]); - local_bdaddr[3] = (str << 4) | str2; - - sprintf(tmp, "%c%c", buff[12], buff[13]); - str = compare_char(tmp[0]); - str2 = compare_char(tmp[1]); - local_bdaddr[4] = (str << 4) | str2; - - sprintf(tmp, "%c%c", buff[15], buff[16]); - str = compare_char(tmp[0]); - str2 = compare_char(tmp[1]); - local_bdaddr[5] = (str << 4) | str2; + for (i=0; i<6; i++) { - for (i = 0; i < 6; i++) - addr[5-i] = (unsigned char)local_bdaddr[i]; + sprintf(tmp, "%c%c", buff[3*i], buff[3*i+1]); + str = compare_char(tmp[0]); + str2 = compare_char(tmp[1]); + local_bdaddr[i] = (str << 4) | str2; } + for (i = 0; i < 6; i++) + addr[5-i] = (unsigned char)local_bdaddr[i]; } static void vnd_load_configure(const char *p_path, const conf_entry_t *entry) diff --git a/external/cache/sources/hcitools/hciattach_sprd_2.c b/external/cache/sources/hcitools/hciattach_sprd_2.c new file mode 100755 index 0000000..ce621b7 --- /dev/null +++ b/external/cache/sources/hcitools/hciattach_sprd_2.c @@ -0,0 +1,809 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hciattach.h" + +/****************************************************************************** +** Constants & Macros +******************************************************************************/ +#define LOG_STR "SPRD Bluetooth" +#define DBG_ON 1 + +#define SPRD_DBG(fmt, arg...) \ + do { \ + if (DBG_ON) \ + fprintf(stderr, "%s: " fmt "\n" , LOG_STR, ##arg); \ + } while(0) + +#define SPRD_ERR(fmt, arg...) \ + do { \ + fprintf(stderr, "%s ERROR: " fmt "\n", LOG_STR, ##arg);\ + perror(LOG_STR" ERROR reason"); \ + } while(0) + +#define SPRD_DUMP(buffer, len) \ + fprintf(stderr, "%s: ", LOG_STR); \ + do { \ + int i = 0; \ + for (i = 0; i < len; i++) { \ + if (i && !(i % 16)) { \ + fprintf(stderr, "\n"); \ + fprintf(stderr, "%s: ", LOG_STR); \ + } \ + fprintf(stderr, "%02x ", buffer[i]); \ + } \ + fprintf(stderr, "\n"); \ + } while (0) + +#define CONF_ITEM_TABLE(ITEM, ACTION, BUF, LEN) \ + { #ITEM, ACTION, &(BUF.ITEM), LEN, (sizeof(BUF.ITEM) / LEN) } + +#define UINT8_TO_STREAM(p, u8) \ + { *(p)++ = (uint8_t)(u8); } + +#define STREAM_TO_UINT8(u8, p) \ + { \ + (u8) = (uint8_t)(*(p)); \ + (p) += 1; \ + } + +#define UINT16_TO_STREAM(p, u16) \ + { \ + *(p)++ = (uint8_t)(u16); \ + *(p)++ = (uint8_t)((u16) >> 8); \ + } + +#define STREAM_TO_UINT16(u16, p) \ + { \ + (u16) = ((uint16_t)(*(p)) + (((uint16_t)(*((p) + 1))) << 8)); \ + (p) += 2; \ + } + +#define UINT32_TO_STREAM(p, u32) \ + { \ + *(p)++ = (uint8_t)(u32); \ + *(p)++ = (uint8_t)((u32) >> 8); \ + *(p)++ = (uint8_t)((u32) >> 16); \ + *(p)++ = (uint8_t)((u32) >> 24); \ + } + +#define CONF_COMMENT '#' +#define CONF_DELIMITERS " =\n\r\t" +#define CONF_VALUES_DELIMITERS "=\n\r\t#" +#define CONF_VALUES_PARTITION " ,=\n\r\t#" +#define CONF_MAX_LINE_LEN 255 + +#define HCI_PSKEY 0xFCA0 +#define HCI_VSC_ENABLE_COMMMAND 0xFCA1 +#define HCI_RF_PARA 0xFCA2 + +#define RESPONSE_LENGTH 100 +#define HCI_CMD_MAX_LEN 258 +#define HCI_EVT_CMD_CMPL_OPCODE 3 +#define HCI_PACKET_TYPE_COMMAND 1 +#define HCI_CMD_PREAMBLE_SIZE 3 + +#define FW_NODE_BYTE 6 +#define FW_DATE_D_BYTE 8 +#define FW_DATE_M_BYTE 9 +#define FW_DATE_Y_BYTE 10 + +#define BT_CONFIG_PATH "/lib/firmware" +#define BT_HC_HDR_SIZE (sizeof(HC_BT_HDR)) +#define BT_VND_OP_RESULT_SUCCESS 0 +#define BT_VND_OP_RESULT_FAIL 1 +#define MSG_STACK_TO_HC_HCI_CMD 0x2000 +#define START_STOP_CMD_SIZE 3 +#define DUAL_MODE 0 +#define DISABLE_BT 0 +#define ENABLE_BT 1 + +typedef void (*hci_cback)(void *); +typedef int (conf_action_t)(char *p_conf_name, char *p_conf_value, void *buf, int len, int size); + +typedef struct { + uint16_t event; + uint16_t len; + uint16_t offset; + uint16_t layer_specific; + uint8_t data[]; +} HC_BT_HDR; + +typedef struct { + uint32_t device_class; + uint8_t feature_set[16]; + uint8_t device_addr[6]; + uint16_t comp_id; + uint8_t g_sys_uart0_communication_supported; + uint8_t cp2_log_mode; + uint8_t LogLevel; + uint8_t g_central_or_perpheral; + uint16_t Log_BitMask; + uint8_t super_ssp_enable; + uint8_t common_rfu_b3; + uint32_t common_rfu_w[2]; + uint32_t le_rfu_w[2]; + uint32_t lmp_rfu_w[2]; + uint32_t lc_rfu_w[2]; + uint16_t g_wbs_nv_117; + uint16_t g_wbs_nv_118; + uint16_t g_nbv_nv_117; + uint16_t g_nbv_nv_118; + uint8_t g_sys_sco_transmit_mode; + uint8_t audio_rfu_b1; + uint8_t audio_rfu_b2; + uint8_t audio_rfu_b3; + uint32_t audio_rfu_w[2]; + uint8_t g_sys_sleep_in_standby_supported; + uint8_t g_sys_sleep_master_supported; + uint8_t g_sys_sleep_slave_supported; + uint8_t power_rfu_b1; + uint32_t power_rfu_w[2]; + uint32_t win_ext; + uint8_t edr_tx_edr_delay; + uint8_t edr_rx_edr_delay; + uint8_t tx_delay; + uint8_t rx_delay; + uint32_t bb_rfu_w[2]; + uint8_t agc_mode; + uint8_t diff_or_eq; + uint8_t ramp_mode; + uint8_t modem_rfu_b1; + uint32_t modem_rfu_w[2]; + uint32_t BQB_BitMask_1; + uint32_t BQB_BitMask_2; + uint16_t bt_coex_threshold[8]; + uint32_t other_rfu_w[6]; +} pskey_config_t; + +typedef struct { + uint16_t g_GainValue_A[6]; + uint16_t g_ClassicPowerValue_A[10]; + uint16_t g_LEPowerValue_A[16]; + uint16_t g_BRChannelpwrvalue_A[8]; + uint16_t g_EDRChannelpwrvalue_A[8]; + uint16_t g_LEChannelpwrvalue_A[8]; + uint16_t g_GainValue_B[6]; + uint16_t g_ClassicPowerValue_B[10]; + uint16_t g_LEPowerValue_B[16]; + uint16_t g_BRChannelpwrvalue_B[8]; + uint16_t g_EDRChannelpwrvalue_B[8]; + uint16_t g_LEChannelpwrvalue_B[8]; + uint16_t LE_fix_powerword; + uint8_t Classic_pc_by_channel; + uint8_t LE_pc_by_channel; + uint8_t RF_switch_mode; + uint8_t Data_Capture_Mode; + uint8_t Analog_IQ_Debug_Mode; + uint8_t RF_common_rfu_b3; + uint32_t RF_common_rfu_w[5]; +} rf_config_t; + +typedef struct { + const char *conf_entry; + conf_action_t *p_action; + void *buf; + int len; + int size; +} conf_entry_t; + +static uint8_t local_bdaddr[6]={0x10, 0x11, 0x12, 0x13, 0x14, 0x15}; +static pskey_config_t marlin3_pskey; +static rf_config_t marlin3_rf_config; +static int s_bt_fd = -1; + +static const conf_entry_t marlin3_pksey_table[] = { + CONF_ITEM_TABLE(device_class, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(feature_set, 0, marlin3_pskey, 16), + CONF_ITEM_TABLE(device_addr, 0, marlin3_pskey, 6), + CONF_ITEM_TABLE(comp_id, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_sys_uart0_communication_supported, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(cp2_log_mode, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(LogLevel, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_central_or_perpheral, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(Log_BitMask, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(super_ssp_enable, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(common_rfu_b3, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(common_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(le_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(lmp_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(lc_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(g_wbs_nv_117, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_wbs_nv_118, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_nbv_nv_117, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_nbv_nv_118, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_sys_sco_transmit_mode, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(audio_rfu_b1, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(audio_rfu_b2, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(audio_rfu_b3, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(audio_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(g_sys_sleep_in_standby_supported, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_sys_sleep_master_supported, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(g_sys_sleep_slave_supported, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(power_rfu_b1, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(power_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(win_ext, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(edr_tx_edr_delay, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(edr_rx_edr_delay, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(tx_delay, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(rx_delay, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(bb_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(agc_mode, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(diff_or_eq, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(ramp_mode, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(modem_rfu_b1, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(modem_rfu_w, 0, marlin3_pskey, 2), + CONF_ITEM_TABLE(BQB_BitMask_1, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(BQB_BitMask_2, 0, marlin3_pskey, 1), + CONF_ITEM_TABLE(bt_coex_threshold, 0, marlin3_pskey, 8), + CONF_ITEM_TABLE(other_rfu_w, 0, marlin3_pskey, 6), + {0, 0, 0, 0, 0} +}; + +static const conf_entry_t marlin3_rf_table[] = { + CONF_ITEM_TABLE(g_GainValue_A, 0, marlin3_rf_config, 6), + CONF_ITEM_TABLE(g_ClassicPowerValue_A, 0, marlin3_rf_config, 10), + CONF_ITEM_TABLE(g_LEPowerValue_A, 0, marlin3_rf_config, 16), + CONF_ITEM_TABLE(g_BRChannelpwrvalue_A, 0, marlin3_rf_config, 8), + CONF_ITEM_TABLE(g_EDRChannelpwrvalue_A, 0, marlin3_rf_config, 8), + CONF_ITEM_TABLE(g_LEChannelpwrvalue_A, 0, marlin3_rf_config, 8), + CONF_ITEM_TABLE(g_GainValue_B, 0, marlin3_rf_config, 6), + CONF_ITEM_TABLE(g_ClassicPowerValue_B, 0, marlin3_rf_config, 10), + CONF_ITEM_TABLE(g_LEPowerValue_B, 0, marlin3_rf_config, 16), + CONF_ITEM_TABLE(g_BRChannelpwrvalue_B, 0, marlin3_rf_config, 8), + CONF_ITEM_TABLE(g_EDRChannelpwrvalue_B, 0, marlin3_rf_config, 8), + CONF_ITEM_TABLE(g_LEChannelpwrvalue_B, 0, marlin3_rf_config, 8), + CONF_ITEM_TABLE(LE_fix_powerword, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(Classic_pc_by_channel, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(LE_pc_by_channel, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(RF_switch_mode, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(Data_Capture_Mode, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(Analog_IQ_Debug_Mode, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(RF_common_rfu_b3, 0, marlin3_rf_config, 1), + CONF_ITEM_TABLE(RF_common_rfu_w, 0, marlin3_rf_config, 5), + {0, 0, 0, 0, 0} +}; + +static void log_bin_to_hexstr(uint8_t *bin, uint8_t binsz, const char *log_tag) +{ + SPRD_DBG("%s", log_tag); + SPRD_DUMP(bin, binsz); +} + +static void parse_number(char *p_conf_name, char *p_conf_value, void *buf, int len, int size) +{ + uint8_t *dest = (uint8_t *)buf; + char *sub_value, *p; + uint32_t value; + (void)p_conf_name; + sub_value = strtok_r(p_conf_value, CONF_VALUES_PARTITION, &p); + do { + if (sub_value == NULL) + break; + + if (sub_value[0] == '0' && (sub_value[1] == 'x' || sub_value[1] == 'X')) + value = strtoul(sub_value, 0, 16) & 0xFFFFFFFF; + else + value = strtoul(sub_value, 0, 10) & 0xFFFFFFFF; + + switch (size) { + case sizeof(uint8_t): + *dest = value & 0xFF; + dest += size; + break; + + case sizeof(uint16_t): + *((uint16_t *)dest) = value & 0xFFFF; + dest += size; + break; + + case sizeof(uint32_t): + *((uint32_t *)dest) = value & 0xFFFFFFFF; + dest += size; + break; + + default: + break; + } + sub_value = strtok_r(NULL, CONF_VALUES_PARTITION, &p); + } while (--len); +} + +static unsigned char compare_char(unsigned char ch) +{ + unsigned char data = 0x0; + + switch(ch) + { + case 0: + case '0': + data = 0x0; + break; + case 1: + case '1': + data = 0x1; + break; + case 2: + case '2': + data = 0x2; + break; + case 3: + case '3': + data = 0x3; + break; + case 4: + case '4': + data = 0x4; + break; + case 5: + case '5': + data = 0x5; + break; + case 6: + case '6': + data = 0x6; + break; + case 7: + case '7': + data = 0x7; + break; + case 8: + case '8': + data = 0x8; + break; + case 9: + case '9': + data = 0x9; + break; + case 10: + case 'a': + case 'A': + data = 0xA; + break; + case 11: + case 'b': + case 'B': + data = 0xB; + break; + case 12: + case 'c': + case 'C': + data = 0xC; + break; + case 13: + case 'd': + case 'D': + data = 0xD; + break; + case 14: + case 'e': + case 'E': + data = 0xE; + break; + case 15: + case 'f': + case 'F': + data = 0xF; + break; + } + return data; +} + +static void set_mac_address(uint8_t *addr) +{ + int i = 0; + + FILE *fp = fopen("/sys/class/net/wlan0/address", "r"); + unsigned char buff[255]; + unsigned char tmp[5]; + unsigned char str, str2; + + SPRD_DBG("%s", __func__); + + fscanf(fp, "%s", buff); + fclose(fp); + + for (i=0; i<6; i++) + { + sprintf(tmp, "%c%c", buff[3*i], buff[3*i+1]); + str = compare_char(tmp[0]); + str2 = compare_char(tmp[1]); + local_bdaddr[i] = (str << 4) | str2; + } + + for (i = 0; i < 6; i++) + addr[5-i] = (unsigned char)local_bdaddr[i]; + + addr[0] += 1; + addr[1] += 1; +} + +static void vnd_load_configure(const char *p_path, const conf_entry_t *entry) +{ + FILE *p_file; + char *p_name, *p_value, *p; + conf_entry_t *p_entry; + char line[CONF_MAX_LINE_LEN + 1]; /* add 1 for \0 char */ + + SPRD_DBG("Attempt to load conf from %s", p_path); + + if ((p_file = fopen(p_path, "r")) != NULL) { + /* read line by line */ + while (fgets(line, CONF_MAX_LINE_LEN + 1, p_file) != NULL) { + if (line[0] == CONF_COMMENT) continue; + + p_name = strtok_r(line, CONF_DELIMITERS, &p); + + if (NULL == p_name) { + continue; + } + + p_value = strtok_r(NULL, CONF_VALUES_DELIMITERS, &p); + + if (NULL == p_value) { + SPRD_DBG("vnd_load_conf: missing value for name: %s", p_name); + continue; + } + + p_entry = (conf_entry_t*)entry; + + while (p_entry->conf_entry != NULL) { + if (strcmp(p_entry->conf_entry, (const char *)p_name) == 0) { + if (p_entry->p_action) { + p_entry->p_action(p_name, p_value, p_entry->buf, p_entry->len, + p_entry->size); + } else { + SPRD_DBG("%s -> %s", p_name, p_value); + parse_number(p_name, p_value, p_entry->buf, p_entry->len, + p_entry->size); + } + break; + } + + p_entry++; + } + } + + fclose(p_file); + } else { + SPRD_DBG("vnd_load_conf file >%s< not found", p_path); + } +} + +static size_t H4Protocol_Send(uint8_t type, const uint8_t* data, size_t length) +{ + struct iovec iov[] = { + {&type, sizeof(type)}, + {(uint8_t *)data, length}}; + + ssize_t ret = 0; + do { + ret = writev(s_bt_fd, iov, sizeof(iov) / sizeof(iov[0])); + } while (-1 == ret && EAGAIN == errno); + + if (ret == -1) { + SPRD_ERR("%s error writing to UART (%s)", __func__, strerror(errno)); + } else if (ret < length + 1) { + SPRD_ERR("%s: %d / %d bytes written - something went wrong...", __func__, ret, length + 1); + } + + return ret; +} + +static void *bt_vendor_alloc(int size) +{ + void *p = (uint8_t *)malloc(size); + return p; +} + +static void bt_vendor_free(void *buffer) +{ + free(buffer); +} + +static uint8_t bt_vendor_xmit(uint16_t opcode, void* buffer, hci_cback callback) +{ + uint8_t type = HCI_PACKET_TYPE_COMMAND; + (void)opcode; + HC_BT_HDR* bt_hdr = (HC_BT_HDR *)buffer; + H4Protocol_Send(type, bt_hdr->data, bt_hdr->len); + return BT_VND_OP_RESULT_SUCCESS; +} + +static uint8_t sprd_vnd_send_hci_vsc(uint16_t cmd, uint8_t *payload, uint8_t len, hci_cback cback) +{ + HC_BT_HDR *p_buf; + uint8_t *p, ret; + + p_buf = (HC_BT_HDR *)bt_vendor_alloc( + BT_HC_HDR_SIZE + HCI_CMD_PREAMBLE_SIZE + len); + if (p_buf) { + p_buf->event = MSG_STACK_TO_HC_HCI_CMD; + p_buf->offset = 0; + p_buf->layer_specific = 0; + p_buf->len = HCI_CMD_PREAMBLE_SIZE + len; + p = (uint8_t *)(p_buf + 1); + + UINT16_TO_STREAM(p, cmd); + *p++ = len; + memcpy(p, payload, len); + log_bin_to_hexstr((uint8_t *)(p_buf + 1), HCI_CMD_PREAMBLE_SIZE + len, __FUNCTION__); + ret = bt_vendor_xmit(cmd, p_buf, cback); + bt_vendor_free(p_buf); + return ret; + } + return BT_VND_OP_RESULT_FAIL; +} + +static void hw_core_cback(void *p_mem) +{ + uint8_t *p_evt_buf = (uint8_t *)p_mem; + uint8_t *p, status; + uint16_t opcode, mode; + + p = (uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_OPCODE; + STREAM_TO_UINT16(opcode,p); + STREAM_TO_UINT16(mode,p); + STREAM_TO_UINT8(status,p); + SPRD_DBG("%s hw_core_cback response: [0x%04X, 0x%04X, 0x%02X]", __func__, opcode, mode, status); + bt_vendor_free(p_evt_buf); +} + +static void hw_core_enable(unsigned char enable) +{ + uint8_t *p, msg_req[HCI_CMD_MAX_LEN]; + p = msg_req; + UINT16_TO_STREAM(p, DUAL_MODE); + UINT8_TO_STREAM(p, enable ? ENABLE_BT : DISABLE_BT); + sprd_vnd_send_hci_vsc(HCI_VSC_ENABLE_COMMMAND, msg_req, (uint8_t)(p - msg_req), NULL); +} + +static void hw_rf_cback(void *p_mem) +{ + uint8_t *p_evt_buf = (uint8_t *)p_mem, len; + uint8_t *p, status; + uint16_t opcode, mode = 0; + + p = (uint8_t *)(p_evt_buf + 1) + 1; + STREAM_TO_UINT8(len, p); + + p = (uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_OPCODE; + STREAM_TO_UINT16(opcode, p); + if (len == 6) + STREAM_TO_UINT16(mode, p); + + STREAM_TO_UINT8(status, p); + + SPRD_DBG("%s hw_rf_cback response: [0x%04X, 0x%04X, 0x%02X]", __func__, opcode, mode, status); + /* Must free the RX event buffer */ + bt_vendor_free(p_evt_buf); +} + +static int marlin3_rf_preload() +{ + uint8_t *p, msg_req[HCI_CMD_MAX_LEN]; + int i; + + SPRD_DBG("yujian.qin %s", __FUNCTION__); + p = msg_req; + + for (i = 0; i < 6; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_GainValue_A[i]); + + for (i = 0; i < 10; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_ClassicPowerValue_A[i]); + + for (i = 0; i < 16; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_LEPowerValue_A[i]); + + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_BRChannelpwrvalue_A[i]); + + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_EDRChannelpwrvalue_A[i]); + + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_LEChannelpwrvalue_A[i]); + + for (i = 0; i < 6; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_GainValue_B[i]); + + for (i = 0; i < 10; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_ClassicPowerValue_B[i]); + + for (i = 0; i < 16; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_LEPowerValue_B[i]); + + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_BRChannelpwrvalue_B[i]); + + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_EDRChannelpwrvalue_B[i]); + + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_rf_config.g_LEChannelpwrvalue_B[i]); + + UINT16_TO_STREAM(p, marlin3_rf_config.LE_fix_powerword); + + UINT8_TO_STREAM(p, marlin3_rf_config.Classic_pc_by_channel); + UINT8_TO_STREAM(p, marlin3_rf_config.LE_pc_by_channel); + UINT8_TO_STREAM(p, marlin3_rf_config.RF_switch_mode); + UINT8_TO_STREAM(p, marlin3_rf_config.Data_Capture_Mode); + UINT8_TO_STREAM(p, marlin3_rf_config.Analog_IQ_Debug_Mode); + UINT8_TO_STREAM(p, marlin3_rf_config.RF_common_rfu_b3); + + for (i = 0; i < 5; i++) + UINT32_TO_STREAM(p, marlin3_rf_config.RF_common_rfu_w[i]); + + sprd_vnd_send_hci_vsc(HCI_RF_PARA, msg_req, (uint8_t)(p - msg_req), NULL); + return 0; +} + +static void marlin3_pskey_cback(void *p_mem) +{ + uint8_t *p_evt_buf = (uint8_t *)p_mem; + + uint16_t opcode, node, year; + uint8_t *p, month, day; + (void)opcode; + + p = (uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_OPCODE; + STREAM_TO_UINT16(opcode, p); + + p = (uint8_t *)(p_evt_buf + 1) + FW_NODE_BYTE; + STREAM_TO_UINT16(node, p); + p = (uint8_t *)(p_evt_buf + 1) + FW_DATE_Y_BYTE; + STREAM_TO_UINT16(year, p); + p = (uint8_t *)(p_evt_buf + 1) + FW_DATE_M_BYTE; + STREAM_TO_UINT8(month, p); + p = (uint8_t *)(p_evt_buf + 1) + FW_DATE_D_BYTE; + STREAM_TO_UINT8(day, p); + + SPRD_DBG("Bluetooth Firmware Node: %04X Date: %04x-%02x-%02x", node, year, month, day); + + /* Must free the RX event buffer */ + bt_vendor_free(p_evt_buf); +} + +static int marlin3_pskey_preload(void *arg) +{ + uint8_t *p, msg_req[HCI_CMD_MAX_LEN]; + int i; + (void)arg; + + SPRD_DBG("%s", __FUNCTION__); + p = msg_req; + UINT32_TO_STREAM(p, marlin3_pskey.device_class); + + for (i = 0; i < 16; i++) + UINT8_TO_STREAM(p, marlin3_pskey.feature_set[i]); + + for (i = 0; i < 6; i++) + UINT8_TO_STREAM(p, marlin3_pskey.device_addr[i]); + + UINT16_TO_STREAM(p, marlin3_pskey.comp_id); + UINT8_TO_STREAM(p, marlin3_pskey.g_sys_uart0_communication_supported); + UINT8_TO_STREAM(p, marlin3_pskey.cp2_log_mode); + UINT8_TO_STREAM(p, marlin3_pskey.LogLevel); + UINT8_TO_STREAM(p, marlin3_pskey.g_central_or_perpheral); + + UINT16_TO_STREAM(p, marlin3_pskey.Log_BitMask); + UINT8_TO_STREAM(p, marlin3_pskey.super_ssp_enable); + UINT8_TO_STREAM(p, marlin3_pskey.common_rfu_b3); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.common_rfu_w[i]); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.le_rfu_w[i]); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.lmp_rfu_w[i]); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.lc_rfu_w[i]); + + UINT16_TO_STREAM(p, marlin3_pskey.g_wbs_nv_117); + UINT16_TO_STREAM(p, marlin3_pskey.g_wbs_nv_118); + UINT16_TO_STREAM(p, marlin3_pskey.g_nbv_nv_117); + UINT16_TO_STREAM(p, marlin3_pskey.g_nbv_nv_118); + + UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sco_transmit_mode); + UINT8_TO_STREAM(p, marlin3_pskey.audio_rfu_b1); + UINT8_TO_STREAM(p, marlin3_pskey.audio_rfu_b2); + UINT8_TO_STREAM(p, marlin3_pskey.audio_rfu_b3); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.audio_rfu_w[i]); + + UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sleep_in_standby_supported); + UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sleep_master_supported); + UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sleep_slave_supported); + UINT8_TO_STREAM(p, marlin3_pskey.power_rfu_b1); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.power_rfu_w[i]); + + UINT32_TO_STREAM(p, marlin3_pskey.win_ext); + + UINT8_TO_STREAM(p, marlin3_pskey.edr_tx_edr_delay); + UINT8_TO_STREAM(p, marlin3_pskey.edr_rx_edr_delay); + UINT8_TO_STREAM(p, marlin3_pskey.tx_delay); + UINT8_TO_STREAM(p, marlin3_pskey.rx_delay); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.bb_rfu_w[i]); + + UINT8_TO_STREAM(p, marlin3_pskey.agc_mode); + UINT8_TO_STREAM(p, marlin3_pskey.diff_or_eq); + UINT8_TO_STREAM(p, marlin3_pskey.ramp_mode); + UINT8_TO_STREAM(p, marlin3_pskey.modem_rfu_b1); + + for (i = 0; i < 2; i++) + UINT32_TO_STREAM(p, marlin3_pskey.modem_rfu_w[i]); + + UINT32_TO_STREAM(p, marlin3_pskey.BQB_BitMask_1); + UINT32_TO_STREAM(p, marlin3_pskey.BQB_BitMask_2); + for (i = 0; i < 8; i++) + UINT16_TO_STREAM(p, marlin3_pskey.bt_coex_threshold[i]); + + for (i = 0; i < 6; i++) + UINT32_TO_STREAM(p, marlin3_pskey.other_rfu_w[i]); + + sprd_vnd_send_hci_vsc(HCI_PSKEY, msg_req, (uint8_t)(p - msg_req), NULL); + return 0; +} + + +int sprd_config_init(int fd, struct uart_t *u, struct termios *ti) +{ + uint8_t *recv = NULL; + int len = 0; + + s_bt_fd = fd; + + memset(&marlin3_pskey, 0, sizeof(marlin3_pskey)); + memset(&marlin3_rf_config, 0, sizeof(marlin3_rf_config)); + vnd_load_configure(BT_CONFIG_PATH "/bt_configure_pskey.ini", &marlin3_pksey_table[0]); + vnd_load_configure(BT_CONFIG_PATH "/bt_configure_rf.ini", &marlin3_rf_table[0]); + set_mac_address(marlin3_pskey.device_addr); + + marlin3_pskey_preload(NULL); + recv = bt_vendor_alloc(RESPONSE_LENGTH); + len = read_hci_event(s_bt_fd, recv, RESPONSE_LENGTH); + SPRD_DBG("Received event, len: %d", len); + SPRD_DUMP(recv, len); + marlin3_pskey_cback(recv); + + marlin3_rf_preload(); + recv = bt_vendor_alloc(RESPONSE_LENGTH); + len = read_hci_event(s_bt_fd, recv, RESPONSE_LENGTH); + SPRD_DBG("Received event, len: %d", len); + SPRD_DUMP(recv, len); + hw_rf_cback(recv); + + hw_core_enable(1); + recv = bt_vendor_alloc(RESPONSE_LENGTH); + len = read_hci_event(s_bt_fd, recv, RESPONSE_LENGTH); + SPRD_DBG("Received event, len: %d", len); + SPRD_DUMP(recv, len); + hw_core_cback(recv); + + return 0; +} + +int sprd_config_post(int fd, struct uart_t *u, struct termios *ti) +{ + SPRD_DBG("Done setting line discpline"); + return 0; +} + diff --git a/external/cache/sources/orangepi-config/debian-config b/external/cache/sources/orangepi-config/debian-config old mode 100755 new mode 100644 diff --git a/external/cache/sources/orangepi-config/debian-config-jobs b/external/cache/sources/orangepi-config/debian-config-jobs old mode 100755 new mode 100644 diff --git a/external/cache/sources/tinyalsa_hub/.gitignore b/external/cache/sources/tinyalsa_hub/.gitignore old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/Makefile b/external/cache/sources/tinyalsa_hub/Makefile old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/README b/external/cache/sources/tinyalsa_hub/README old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/include/sound/asound.h b/external/cache/sources/tinyalsa_hub/include/sound/asound.h old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/include/tinyalsa/asoundlib.h b/external/cache/sources/tinyalsa_hub/include/tinyalsa/asoundlib.h old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/mixer.c b/external/cache/sources/tinyalsa_hub/mixer.c old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/pcm.c b/external/cache/sources/tinyalsa_hub/pcm.c old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/tinycap_hub.c b/external/cache/sources/tinyalsa_hub/tinycap_hub.c old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/tinymix.c b/external/cache/sources/tinyalsa_hub/tinymix.c old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/tinypcminfo.c b/external/cache/sources/tinyalsa_hub/tinypcminfo.c old mode 100644 new mode 100755 diff --git a/external/cache/sources/tinyalsa_hub/tinyplay_hub.c b/external/cache/sources/tinyalsa_hub/tinyplay_hub.c old mode 100644 new mode 100755 diff --git a/external/config/aptly-beta.conf b/external/config/aptly-beta.conf index 5829e41..6492b15 100644 --- a/external/config/aptly-beta.conf +++ b/external/config/aptly-beta.conf @@ -9,7 +9,7 @@ "dependencyFollowSource": false, "gpgDisableSign": false, "gpgDisableVerify": false, - "gpgProvider": "gpg2", + "gpgProvider": "internal", "downloadSourcePackages": false, "ppaDistributorID": "ubuntu", "ppaCodename": "", diff --git a/external/config/aptly-temp.conf b/external/config/aptly-temp.conf index 57f98c7..3b66408 100644 --- a/external/config/aptly-temp.conf +++ b/external/config/aptly-temp.conf @@ -9,6 +9,7 @@ "dependencyFollowSource": false, "gpgDisableSign": false, "gpgDisableVerify": false, + "gpgProvider": "internal", "downloadSourcePackages": false, "ppaDistributorID": "ubuntu", "ppaCodename": "", diff --git a/external/config/aptly.conf b/external/config/aptly.conf index b01f2e7..764310e 100644 --- a/external/config/aptly.conf +++ b/external/config/aptly.conf @@ -9,7 +9,7 @@ "dependencyFollowSource": false, "gpgDisableSign": false, "gpgDisableVerify": false, - "gpgProvider": "gpg2", + "gpgProvider": "internal", "downloadSourcePackages": false, "ppaDistributorID": "ubuntu", "ppaCodename": "", diff --git a/external/config/boards/orangepi3-lts.conf b/external/config/boards/orangepi3-lts.conf old mode 100644 new mode 100755 index 744ce11..7831631 --- a/external/config/boards/orangepi3-lts.conf +++ b/external/config/boards/orangepi3-lts.conf @@ -5,5 +5,6 @@ BOOTCONFIG="orangepi_3_lts_defconfig" KERNEL_TARGET="legacy,current" MODULES="uwe5622_bsp_sdio sprdbt_tty sprdwl_ng" MODULES_BLACKLIST_LEGACY="bcmdhd" -FULL_DESKTOP="yes" ATFBRANCH="tag:v2.2" +DISTRIB_TYPE_LEGACY="buster focal" +DISTRIB_TYPE_CURRENT="bullseye" diff --git a/external/config/boards/orangepi3.conf b/external/config/boards/orangepi3.conf index 2a10a99..5ad3884 100644 --- a/external/config/boards/orangepi3.conf +++ b/external/config/boards/orangepi3.conf @@ -3,5 +3,4 @@ BOARD_NAME="Orange Pi 3" BOARDFAMILY="sun50iw6" BOOTCONFIG="orangepi_3_defconfig" KERNEL_TARGET="legacy,current" -FULL_DESKTOP="yes" ATFBRANCH="tag:v2.2" diff --git a/external/config/boards/orangepi4-lts.conf b/external/config/boards/orangepi4-lts.conf new file mode 100755 index 0000000..9f2342d --- /dev/null +++ b/external/config/boards/orangepi4-lts.conf @@ -0,0 +1,11 @@ +# Rockchip RK3399 hexa core 4GB RAM SoC GBE eMMC USB3 USB-C WiFi/BT +BOARD_NAME="OPI 4 LTS" +BOARDFAMILY="rk3399" +BOOTCONFIG="orangepi-4-rk3399_defconfig" +KERNEL_TARGET="legacy current" +MODULES="sprdbt_tty sprdwl_ng" +MODULES_BLACKLIST_LEGACY="bcmdhd" +BOOT_LOGO="desktop" +BOOT_FDT_FILE="rockchip/rk3399-orangepi-4-lts.dtb" +DISTRIB_TYPE_LEGACY="buster" +DISTRIB_TYPE_CURRENT="bullseye focal" diff --git a/external/config/boards/orangepi4.conf b/external/config/boards/orangepi4.conf index 6292d47..ff8f851 100755 --- a/external/config/boards/orangepi4.conf +++ b/external/config/boards/orangepi4.conf @@ -1,7 +1,6 @@ # Rockchip RK3399 hexa core 4GB RAM SoC GBE eMMC USB3 USB-C WiFi/BT -BOARD_NAME="OrangePi 4" +BOARD_NAME="Orange Pi 4" BOARDFAMILY="rk3399" BOOTCONFIG="orangepi-4-rk3399_defconfig" -KERNEL_TARGET="legacy" -FULL_DESKTOP="no" +KERNEL_TARGET="legacy,current" BOOT_LOGO="desktop" diff --git a/external/config/boards/orangepi400.conf b/external/config/boards/orangepi400.conf new file mode 100644 index 0000000..d48a424 --- /dev/null +++ b/external/config/boards/orangepi400.conf @@ -0,0 +1,7 @@ +# Allwinner H616 quad core 4GB RAM +BOARD_NAME="Orange Pi 400" +BOARDFAMILY="sun50iw9" +BOOTCONFIG="orangepi_400_defconfig" +KERNEL_TARGET="legacy,current" +MODULES="uwe5622_bsp_sdio sprdwl_ng sprdbt_tty" +MODULES_BLACKLIST_LEGACY="bcmdhd" diff --git a/external/config/boards/orangepi800.conf b/external/config/boards/orangepi800.conf new file mode 100755 index 0000000..97c3170 --- /dev/null +++ b/external/config/boards/orangepi800.conf @@ -0,0 +1,11 @@ +# Rockchip RK3399 hexa core 4GB RAM SoC GBE eMMC USB3 USB-C WiFi/BT +BOARD_NAME="OPI 800" +BOARDFAMILY="rk3399" +BOOTCONFIG="orangepi-800-rk3399_defconfig" +KERNEL_TARGET="current" +MODULES="sprdbt_tty sprdwl_ng" +MODULES_BLACKLIST_LEGACY="bcmdhd" +BOOT_LOGO="desktop" +DISTRIB_TYPE_LEGACY="buster" +DISTRIB_TYPE_CURRENT="bullseye focal jammy" +#DISTRIB_TYPE_CURRENT="bullseye bookworm focal jammy" diff --git a/external/config/boards/orangepioneh5.conf b/external/config/boards/orangepioneh5.conf old mode 100644 new mode 100755 diff --git a/external/config/boards/orangepipc2.conf b/external/config/boards/orangepipc2.conf index a1d88bd..9a8cfe4 100644 --- a/external/config/boards/orangepipc2.conf +++ b/external/config/boards/orangepipc2.conf @@ -4,4 +4,3 @@ BOARDFAMILY="sun50iw2" BOOTCONFIG="orangepi_pc2_defconfig" MODULES_LEGACY="sunxi_gpiokey" KERNEL_TARGET="legacy,current" -FULL_DESKTOP="yes" diff --git a/external/config/boards/orangepipch5.conf b/external/config/boards/orangepipch5.conf old mode 100644 new mode 100755 diff --git a/external/config/boards/orangepiplus2e.conf b/external/config/boards/orangepiplus2e.conf index c25112d..7e75f07 100644 --- a/external/config/boards/orangepiplus2e.conf +++ b/external/config/boards/orangepiplus2e.conf @@ -4,4 +4,3 @@ BOARDFAMILY="sun8i" BOOTCONFIG="orangepi_plus2e_defconfig" MODULES_LEGACY="8189fs #w1-sunxi #w1-gpio #w1-therm #gc2035 #vfe_v4l2 #sunxi-cir" KERNEL_TARGET="legacy,current" -FULL_DESKTOP="yes" diff --git a/external/config/boards/orangepiprime.conf b/external/config/boards/orangepiprime.conf index 100fbb5..7fc6f1e 100644 --- a/external/config/boards/orangepiprime.conf +++ b/external/config/boards/orangepiprime.conf @@ -5,4 +5,3 @@ BOOTCONFIG="orangepi_prime_defconfig" DEFAULT_OVERLAYS="analog-codec" MODULES_LEGACY="8723bs sunxi_gpiokey" KERNEL_TARGET="legacy,current" -FULL_DESKTOP="yes" diff --git a/external/config/boards/orangepir1plus.conf b/external/config/boards/orangepir1plus.conf index d8c13ce..2f95145 100644 --- a/external/config/boards/orangepir1plus.conf +++ b/external/config/boards/orangepir1plus.conf @@ -4,8 +4,8 @@ BOARDFAMILY="rockchip64" BOOTCONFIG="orangepi_r1_plus_rk3328_defconfig" KERNEL_TARGET="current" DEFAULT_CONSOLE="serial" -MODULES="g_serial ledtrig_netdev" +MODULES="g_serial" MODULES_BLACKLIST="rockchipdrm analogix_dp dw_mipi_dsi dw_hdmi gpu_sched lima hantro_vpu" SERIALCON="ttyS2:1500000,ttyGS0" BUILD_DESKTOP="no" -BOOT_FDT_FILE="rockchip/rk3328-orangepi-r1-plus.dtb" +BOOT_FDT_FILE="rockchip/rk3328-orangepi-r1plus.dtb" diff --git a/external/config/boards/orangepirk3399.conf b/external/config/boards/orangepirk3399.conf index a2721d3..c5114e3 100644 --- a/external/config/boards/orangepirk3399.conf +++ b/external/config/boards/orangepirk3399.conf @@ -3,5 +3,4 @@ BOARD_NAME="Orange Pi RK3399" BOARDFAMILY="rk3399" BOOTCONFIG="orangepi-rk3399_defconfig" KERNEL_TARGET="current" -FULL_DESKTOP="yes" BOOT_LOGO="desktop" diff --git a/external/config/boards/orangepizero2.conf b/external/config/boards/orangepizero2.conf old mode 100755 new mode 100644 index 12eec52..ef7eb53 --- a/external/config/boards/orangepizero2.conf +++ b/external/config/boards/orangepizero2.conf @@ -1,7 +1,9 @@ -# Allwinner H616 quad core 1GB RAM -BOARD_NAME="Orange Pi Zero 2" +# Allwinner H616 quad core 512MB/1GB RAM SoC WiFi USB-C +BOARD_NAME="Orange Pi Zero2" BOARDFAMILY="sun50iw9" BOOTCONFIG="orangepi_zero2_defconfig" KERNEL_TARGET="legacy,current" MODULES="uwe5622_bsp_sdio sprdwl_ng sprdbt_tty" MODULES_BLACKLIST_LEGACY="bcmdhd" +DISTRIB_TYPE_LEGACY="buster focal" +DISTRIB_TYPE_CURRENT="bullseye bookworm focal" diff --git a/external/config/bootscripts/boot-sun50i-next.cmd b/external/config/bootscripts/boot-sun50i-next.cmd old mode 100755 new mode 100644 diff --git a/external/config/bootscripts/boot-sun50iw9.cmd b/external/config/bootscripts/boot-sun50iw9.cmd index 9877154..4fc6fb1 100644 --- a/external/config/bootscripts/boot-sun50iw9.cmd +++ b/external/config/bootscripts/boot-sun50iw9.cmd @@ -11,12 +11,13 @@ setenv rootfstype "ext4" setenv console "both" setenv docker_optimizations "off" setenv bootlogo "false" +setenv emmc_max_frequency "0x5f5e100" setenv debug_uart "ttyS0" # Print boot source -itest.b *0x10028 == 0x00 && echo "U-boot loaded from SD" -itest.b *0x10028 == 0x02 && echo "U-boot loaded from eMMC or secondary SD" -itest.b *0x10028 == 0x03 && echo "U-boot loaded from SPI" +#itest.b *0x10028 == 0x00 && echo "U-boot loaded from SD" +#itest.b *0x10028 == 0x02 && echo "U-boot loaded from eMMC or secondary SD" +#itest.b *0x10028 == 0x03 && echo "U-boot loaded from SPI" echo "Boot script loaded from ${devtype}" @@ -56,6 +57,20 @@ fdt set mmc0 cap-sd-highspeed #fdt set mmc0 sd-uhs-ddr50 #fdt set mmc0 sd-uhs-sdr104 +if test "${mmc_bootdev}" = "2"; then + + if test "${emmc_max_frequency}" = "0x5f5e100"; then + + fdt set /soc/sdmmc@04022000 cap-mmc-highspeed + fdt set /soc/sdmmc@04022000 mmc-ddr-1_8v + fdt set /soc/sdmmc@04022000 mmc-hs200-1_8v + fdt set /soc/sdmmc@04022000 mmc-hs400-1_8v + fi + + echo "Set emmc_max_frequency to ${emmc_max_frequency}" + fdt set /soc/sdmmc@04022000 max-frequency <${emmc_max_frequency}> +fi + for overlay_file in ${user_overlays}; do if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then echo "Applying user provided DT overlay ${overlay_file}.dtbo" diff --git a/external/config/cli/bionic b/external/config/cli/bionic new file mode 120000 index 0000000..aae2fdc --- /dev/null +++ b/external/config/cli/bionic @@ -0,0 +1 @@ +focal \ No newline at end of file diff --git a/external/config/cli/bookworm/debootstrap/components b/external/config/cli/bookworm/debootstrap/components new file mode 100644 index 0000000..ba2906d --- /dev/null +++ b/external/config/cli/bookworm/debootstrap/components @@ -0,0 +1 @@ +main diff --git a/external/config/cli/bookworm/debootstrap/config_desktop/packages b/external/config/cli/bookworm/debootstrap/config_desktop/packages new file mode 100644 index 0000000..4047267 --- /dev/null +++ b/external/config/cli/bookworm/debootstrap/config_desktop/packages @@ -0,0 +1 @@ +libgtk2.0-bin diff --git a/external/config/cli/bookworm/debootstrap/packages b/external/config/cli/bookworm/debootstrap/packages new file mode 100644 index 0000000..cda0f4e --- /dev/null +++ b/external/config/cli/bookworm/debootstrap/packages @@ -0,0 +1,33 @@ +apt-utils +bzip2 +ca-certificates +console-setup +cpio +cron +dbus +dmsetup +fdisk +gnupg +haveged +ifupdown +init +initramfs-tools +iputils-ping +isc-dhcp-client +kmod +less +libpam-systemd +linux-base +locales +logrotate +netbase +netcat-openbsd +rsync +rsyslog +sudo +systemd +tzdata +ucf +udev +whiptail +wireless-regdb diff --git a/external/config/cli/bookworm/main/config_cli_standard/packages b/external/config/cli/bookworm/main/config_cli_standard/packages new file mode 100644 index 0000000..f2b4079 --- /dev/null +++ b/external/config/cli/bookworm/main/config_cli_standard/packages @@ -0,0 +1,33 @@ +apt-file +automake +bison +build-essential +ca-certificates +command-not-found +console-setup +dkms +expect +fbset +flex +gnupg2 +hping3 +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +man-db +networkd-dispatcher +python3-distutils +python3-lib2to3 +sudo +unattended-upgrades +unicode-data +vnstat +wireless-regdb +wpasupplicant diff --git a/external/config/cli/bookworm/main/config_cli_standard/packages.additional b/external/config/cli/bookworm/main/config_cli_standard/packages.additional new file mode 100644 index 0000000..a9cbde5 --- /dev/null +++ b/external/config/cli/bookworm/main/config_cli_standard/packages.additional @@ -0,0 +1,38 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +i2c-tools +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +nfs-common +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/bookworm/main/config_desktop/packages b/external/config/cli/bookworm/main/config_desktop/packages new file mode 100644 index 0000000..1fdda96 --- /dev/null +++ b/external/config/cli/bookworm/main/config_desktop/packages @@ -0,0 +1,23 @@ +automake +bison +build-essential +ca-certificates +console-setup +expect +fbset +flex +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +sudo +unattended-upgrades +unicode-data +wireless-regdb +wpasupplicant diff --git a/external/config/cli/bookworm/main/config_desktop/packages.additional b/external/config/cli/bookworm/main/config_desktop/packages.additional new file mode 100644 index 0000000..052d157 --- /dev/null +++ b/external/config/cli/bookworm/main/config_desktop/packages.additional @@ -0,0 +1,36 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/bookworm/main/packages b/external/config/cli/bookworm/main/packages new file mode 100644 index 0000000..c0080f8 --- /dev/null +++ b/external/config/cli/bookworm/main/packages @@ -0,0 +1,20 @@ +bc +chrony +cpufrequtils +debconf-utils +device-tree-compiler +dialog +fake-hwclock +figlet +fping +ncurses-term +nocache +openssh-server +parted +psmisc +python3-apt +smartmontools +sysfsutils +toilet +u-boot-tools +usbutils diff --git a/external/config/cli/bookworm/main/packages.additional b/external/config/cli/bookworm/main/packages.additional new file mode 100644 index 0000000..aa46a04 --- /dev/null +++ b/external/config/cli/bookworm/main/packages.additional @@ -0,0 +1,18 @@ +cracklib-runtime +curl +htop +i2c-tools +iozone3 +jq +libcrack2 +lsof +mc +mmc-utils +nano +net-tools +network-manager +network-manager-openvpn +resolvconf +sysstat +wget +wireless-tools diff --git a/external/config/cli/bullseye/debootstrap/components b/external/config/cli/bullseye/debootstrap/components new file mode 100644 index 0000000..ba2906d --- /dev/null +++ b/external/config/cli/bullseye/debootstrap/components @@ -0,0 +1 @@ +main diff --git a/external/config/cli/bullseye/debootstrap/config_desktop/packages b/external/config/cli/bullseye/debootstrap/config_desktop/packages new file mode 100644 index 0000000..4047267 --- /dev/null +++ b/external/config/cli/bullseye/debootstrap/config_desktop/packages @@ -0,0 +1 @@ +libgtk2.0-bin diff --git a/external/config/cli/bullseye/debootstrap/packages b/external/config/cli/bullseye/debootstrap/packages new file mode 100644 index 0000000..b120db8 --- /dev/null +++ b/external/config/cli/bullseye/debootstrap/packages @@ -0,0 +1,34 @@ +apt-utils +bzip2 +ca-certificates +console-setup +cpio +crda +cron +dbus +dmsetup +fdisk +gnupg +haveged +ifupdown +init +initramfs-tools +iputils-ping +isc-dhcp-client +kmod +less +libpam-systemd +linux-base +locales +logrotate +netbase +netcat-openbsd +rsync +rsyslog +sudo +systemd +tzdata +ucf +udev +whiptail +wireless-regdb diff --git a/external/config/cli/bullseye/main/config_cli_standard/packages b/external/config/cli/bullseye/main/config_cli_standard/packages new file mode 100644 index 0000000..3eb4d62 --- /dev/null +++ b/external/config/cli/bullseye/main/config_cli_standard/packages @@ -0,0 +1,35 @@ +apt-file +automake +bison +bridge-utils +build-essential +ca-certificates +command-not-found +console-setup +crda +dkms +expect +fbset +flex +gnupg2 +hping3 +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +man-db +networkd-dispatcher +python3-distutils +python3-lib2to3 +sudo +unattended-upgrades +unicode-data +vnstat +wireless-regdb +wpasupplicant diff --git a/external/config/cli/bullseye/main/config_cli_standard/packages.additional b/external/config/cli/bullseye/main/config_cli_standard/packages.additional new file mode 100644 index 0000000..a9cbde5 --- /dev/null +++ b/external/config/cli/bullseye/main/config_cli_standard/packages.additional @@ -0,0 +1,38 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +i2c-tools +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +nfs-common +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/bullseye/main/config_desktop/packages b/external/config/cli/bullseye/main/config_desktop/packages new file mode 100644 index 0000000..0b9d1ae --- /dev/null +++ b/external/config/cli/bullseye/main/config_desktop/packages @@ -0,0 +1,25 @@ +automake +bison +bridge-utils +build-essential +ca-certificates +console-setup +crda +expect +fbset +flex +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +sudo +unattended-upgrades +unicode-data +wireless-regdb +wpasupplicant diff --git a/external/config/cli/bullseye/main/config_desktop/packages.additional b/external/config/cli/bullseye/main/config_desktop/packages.additional new file mode 100644 index 0000000..052d157 --- /dev/null +++ b/external/config/cli/bullseye/main/config_desktop/packages.additional @@ -0,0 +1,36 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/bullseye/main/packages b/external/config/cli/bullseye/main/packages new file mode 100644 index 0000000..c0080f8 --- /dev/null +++ b/external/config/cli/bullseye/main/packages @@ -0,0 +1,20 @@ +bc +chrony +cpufrequtils +debconf-utils +device-tree-compiler +dialog +fake-hwclock +figlet +fping +ncurses-term +nocache +openssh-server +parted +psmisc +python3-apt +smartmontools +sysfsutils +toilet +u-boot-tools +usbutils diff --git a/external/config/cli/bullseye/main/packages.additional b/external/config/cli/bullseye/main/packages.additional new file mode 100644 index 0000000..cd12ac0 --- /dev/null +++ b/external/config/cli/bullseye/main/packages.additional @@ -0,0 +1,19 @@ +cracklib-runtime +curl +htop +i2c-tools +iozone3 +jq +libcrack2 +lsof +mc +mmc-utils +nano +net-tools +netplan.io +network-manager +network-manager-openvpn +resolvconf +sysstat +wget +wireless-tools diff --git a/external/config/cli/buster/debootstrap/components b/external/config/cli/buster/debootstrap/components new file mode 100644 index 0000000..ba2906d --- /dev/null +++ b/external/config/cli/buster/debootstrap/components @@ -0,0 +1 @@ +main diff --git a/external/config/cli/buster/debootstrap/config_desktop/packages b/external/config/cli/buster/debootstrap/config_desktop/packages new file mode 100644 index 0000000..4047267 --- /dev/null +++ b/external/config/cli/buster/debootstrap/config_desktop/packages @@ -0,0 +1 @@ +libgtk2.0-bin diff --git a/external/config/cli/buster/debootstrap/packages b/external/config/cli/buster/debootstrap/packages new file mode 100644 index 0000000..cda0f4e --- /dev/null +++ b/external/config/cli/buster/debootstrap/packages @@ -0,0 +1,33 @@ +apt-utils +bzip2 +ca-certificates +console-setup +cpio +cron +dbus +dmsetup +fdisk +gnupg +haveged +ifupdown +init +initramfs-tools +iputils-ping +isc-dhcp-client +kmod +less +libpam-systemd +linux-base +locales +logrotate +netbase +netcat-openbsd +rsync +rsyslog +sudo +systemd +tzdata +ucf +udev +whiptail +wireless-regdb diff --git a/external/config/cli/buster/main/config_cli_standard/packages b/external/config/cli/buster/main/config_cli_standard/packages new file mode 100644 index 0000000..4600b6e --- /dev/null +++ b/external/config/cli/buster/main/config_cli_standard/packages @@ -0,0 +1,36 @@ +apt-file +automake +bison +bridge-utils +build-essential +ca-certificates +command-not-found +console-setup +dkms +expect +fbset +flex +gnupg2 +hping3 +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +man-db +networkd-dispatcher +python3-distutils +python3-lib2to3 +rng-tools +selinux-policy-default +sudo +unattended-upgrades +unicode-data +vnstat +wireless-regdb +wpasupplicant diff --git a/external/config/cli/buster/main/config_cli_standard/packages.additional b/external/config/cli/buster/main/config_cli_standard/packages.additional new file mode 100644 index 0000000..a9cbde5 --- /dev/null +++ b/external/config/cli/buster/main/config_cli_standard/packages.additional @@ -0,0 +1,38 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +i2c-tools +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +nfs-common +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/buster/main/config_desktop/packages b/external/config/cli/buster/main/config_desktop/packages new file mode 100644 index 0000000..3b19eeb --- /dev/null +++ b/external/config/cli/buster/main/config_desktop/packages @@ -0,0 +1,24 @@ +automake +bison +bridge-utils +build-essential +ca-certificates +console-setup +expect +fbset +flex +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +sudo +unattended-upgrades +unicode-data +wireless-regdb +wpasupplicant diff --git a/external/config/cli/buster/main/config_desktop/packages.additional b/external/config/cli/buster/main/config_desktop/packages.additional new file mode 100644 index 0000000..052d157 --- /dev/null +++ b/external/config/cli/buster/main/config_desktop/packages.additional @@ -0,0 +1,36 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/buster/main/packages b/external/config/cli/buster/main/packages new file mode 100644 index 0000000..c0080f8 --- /dev/null +++ b/external/config/cli/buster/main/packages @@ -0,0 +1,20 @@ +bc +chrony +cpufrequtils +debconf-utils +device-tree-compiler +dialog +fake-hwclock +figlet +fping +ncurses-term +nocache +openssh-server +parted +psmisc +python3-apt +smartmontools +sysfsutils +toilet +u-boot-tools +usbutils diff --git a/external/config/cli/buster/main/packages.additional b/external/config/cli/buster/main/packages.additional new file mode 100644 index 0000000..74e4ea8 --- /dev/null +++ b/external/config/cli/buster/main/packages.additional @@ -0,0 +1,19 @@ +cracklib-runtime +curl +htop +i2c-tools +iozone3 +jq +libcrack2 +lsof +mc +mmc-utils +nano +netplan.io +net-tools +network-manager +network-manager-openvpn +resolvconf +sysstat +wget +wireless-tools diff --git a/external/config/cli/focal/debootstrap/components b/external/config/cli/focal/debootstrap/components new file mode 100644 index 0000000..7df132a --- /dev/null +++ b/external/config/cli/focal/debootstrap/components @@ -0,0 +1 @@ +main universe diff --git a/external/config/cli/focal/debootstrap/config_desktop/packages b/external/config/cli/focal/debootstrap/config_desktop/packages new file mode 100644 index 0000000..20dfb58 --- /dev/null +++ b/external/config/cli/focal/debootstrap/config_desktop/packages @@ -0,0 +1,3 @@ +dconf-cli +libglib2.0-dev +libgtk2.0-bin diff --git a/external/config/cli/focal/debootstrap/packages b/external/config/cli/focal/debootstrap/packages new file mode 100644 index 0000000..e102fe8 --- /dev/null +++ b/external/config/cli/focal/debootstrap/packages @@ -0,0 +1,34 @@ +apt-utils +bzip2 +ca-certificates +console-setup +cpio +crda +cron +dbus +dmsetup +fdisk +gnupg +ifupdown +init +initramfs-tools +iputils-ping +isc-dhcp-client +kmod +less +libpam-systemd +linux-base +locales +logrotate +netbase +netcat-openbsd +rng-tools +rsync +rsyslog +sudo +systemd +tzdata +ucf +udev +whiptail +wireless-regdb diff --git a/external/config/cli/focal/main/config_cli_standard/packages b/external/config/cli/focal/main/config_cli_standard/packages new file mode 100644 index 0000000..ea9bb3d --- /dev/null +++ b/external/config/cli/focal/main/config_cli_standard/packages @@ -0,0 +1,34 @@ +automake +bison +bridge-utils +build-essential +ca-certificates +console-setup +crda +dkms +expect +fbset +flex +gnupg2 +hping3 +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +man-db +networkd-dispatcher +python3-distutils +python3-lib2to3 +selinux-policy-default +sudo +unattended-upgrades +unicode-data +vnstat +wireless-regdb +wpasupplicant diff --git a/external/config/cli/focal/main/config_cli_standard/packages.additional b/external/config/cli/focal/main/config_cli_standard/packages.additional new file mode 100644 index 0000000..5f95884 --- /dev/null +++ b/external/config/cli/focal/main/config_cli_standard/packages.additional @@ -0,0 +1,37 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +nfs-common +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/focal/main/config_desktop/packages b/external/config/cli/focal/main/config_desktop/packages new file mode 100644 index 0000000..5d9b402 --- /dev/null +++ b/external/config/cli/focal/main/config_desktop/packages @@ -0,0 +1,26 @@ +automake +bison +bridge-utils +build-essential +ca-certificates +console-setup +crda +emacs-nox +expect +fbset +flex +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +sudo +unattended-upgrades +unicode-data +wireless-regdb +wpasupplicant diff --git a/external/config/cli/focal/main/config_desktop/packages.additional b/external/config/cli/focal/main/config_desktop/packages.additional new file mode 100644 index 0000000..052d157 --- /dev/null +++ b/external/config/cli/focal/main/config_desktop/packages.additional @@ -0,0 +1,36 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/focal/main/packages b/external/config/cli/focal/main/packages new file mode 100644 index 0000000..c0080f8 --- /dev/null +++ b/external/config/cli/focal/main/packages @@ -0,0 +1,20 @@ +bc +chrony +cpufrequtils +debconf-utils +device-tree-compiler +dialog +fake-hwclock +figlet +fping +ncurses-term +nocache +openssh-server +parted +psmisc +python3-apt +smartmontools +sysfsutils +toilet +u-boot-tools +usbutils diff --git a/external/config/cli/focal/main/packages.additional b/external/config/cli/focal/main/packages.additional new file mode 100644 index 0000000..cd12ac0 --- /dev/null +++ b/external/config/cli/focal/main/packages.additional @@ -0,0 +1,19 @@ +cracklib-runtime +curl +htop +i2c-tools +iozone3 +jq +libcrack2 +lsof +mc +mmc-utils +nano +net-tools +netplan.io +network-manager +network-manager-openvpn +resolvconf +sysstat +wget +wireless-tools diff --git a/external/config/cli/jammy/debootstrap/components b/external/config/cli/jammy/debootstrap/components new file mode 100755 index 0000000..7df132a --- /dev/null +++ b/external/config/cli/jammy/debootstrap/components @@ -0,0 +1 @@ +main universe diff --git a/external/config/cli/jammy/debootstrap/config_desktop/packages b/external/config/cli/jammy/debootstrap/config_desktop/packages new file mode 100755 index 0000000..20dfb58 --- /dev/null +++ b/external/config/cli/jammy/debootstrap/config_desktop/packages @@ -0,0 +1,3 @@ +dconf-cli +libglib2.0-dev +libgtk2.0-bin diff --git a/external/config/cli/jammy/debootstrap/packages b/external/config/cli/jammy/debootstrap/packages new file mode 100755 index 0000000..e102fe8 --- /dev/null +++ b/external/config/cli/jammy/debootstrap/packages @@ -0,0 +1,34 @@ +apt-utils +bzip2 +ca-certificates +console-setup +cpio +crda +cron +dbus +dmsetup +fdisk +gnupg +ifupdown +init +initramfs-tools +iputils-ping +isc-dhcp-client +kmod +less +libpam-systemd +linux-base +locales +logrotate +netbase +netcat-openbsd +rng-tools +rsync +rsyslog +sudo +systemd +tzdata +ucf +udev +whiptail +wireless-regdb diff --git a/external/config/cli/jammy/main/config_cli_standard/packages b/external/config/cli/jammy/main/config_cli_standard/packages new file mode 100755 index 0000000..ea9bb3d --- /dev/null +++ b/external/config/cli/jammy/main/config_cli_standard/packages @@ -0,0 +1,34 @@ +automake +bison +bridge-utils +build-essential +ca-certificates +console-setup +crda +dkms +expect +fbset +flex +gnupg2 +hping3 +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +man-db +networkd-dispatcher +python3-distutils +python3-lib2to3 +selinux-policy-default +sudo +unattended-upgrades +unicode-data +vnstat +wireless-regdb +wpasupplicant diff --git a/external/config/cli/jammy/main/config_cli_standard/packages.additional b/external/config/cli/jammy/main/config_cli_standard/packages.additional new file mode 100755 index 0000000..5f95884 --- /dev/null +++ b/external/config/cli/jammy/main/config_cli_standard/packages.additional @@ -0,0 +1,37 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +nfs-common +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/jammy/main/config_desktop/packages b/external/config/cli/jammy/main/config_desktop/packages new file mode 100755 index 0000000..5d9b402 --- /dev/null +++ b/external/config/cli/jammy/main/config_desktop/packages @@ -0,0 +1,26 @@ +automake +bison +bridge-utils +build-essential +ca-certificates +console-setup +crda +emacs-nox +expect +fbset +flex +html2text +initramfs-tools +iptables +iw +keyboard-configuration +libnl-3-dev +libnl-genl-3-dev +libssl-dev +libwrap0-dev +linux-base +sudo +unattended-upgrades +unicode-data +wireless-regdb +wpasupplicant diff --git a/external/config/cli/jammy/main/config_desktop/packages.additional b/external/config/cli/jammy/main/config_desktop/packages.additional new file mode 100755 index 0000000..052d157 --- /dev/null +++ b/external/config/cli/jammy/main/config_desktop/packages.additional @@ -0,0 +1,36 @@ +alsa-utils +aptitude +avahi-autoipd +bash-completion +btrfs-progs +dnsutils +dosfstools +ethtool +evtest +f2fs-tools +f3 +git +haveged +hdparm +hostapd +ifenslave +iotop +iperf3 +iputils-arping +libdigest-sha-perl +libfuse2 +libnss-myhostname +libpam-systemd +libproc-processtable-perl +ntfs-3g +pciutils +pv +qrencode +rfkill +screen +software-properties-common +stress +sunxi-tools +unzip +vim +vlan diff --git a/external/config/cli/jammy/main/packages b/external/config/cli/jammy/main/packages new file mode 100755 index 0000000..c0080f8 --- /dev/null +++ b/external/config/cli/jammy/main/packages @@ -0,0 +1,20 @@ +bc +chrony +cpufrequtils +debconf-utils +device-tree-compiler +dialog +fake-hwclock +figlet +fping +ncurses-term +nocache +openssh-server +parted +psmisc +python3-apt +smartmontools +sysfsutils +toilet +u-boot-tools +usbutils diff --git a/external/config/cli/jammy/main/packages.additional b/external/config/cli/jammy/main/packages.additional new file mode 100755 index 0000000..cd12ac0 --- /dev/null +++ b/external/config/cli/jammy/main/packages.additional @@ -0,0 +1,19 @@ +cracklib-runtime +curl +htop +i2c-tools +iozone3 +jq +libcrack2 +lsof +mc +mmc-utils +nano +net-tools +netplan.io +network-manager +network-manager-openvpn +resolvconf +sysstat +wget +wireless-tools diff --git a/external/config/cli/sid b/external/config/cli/sid new file mode 120000 index 0000000..766a99a --- /dev/null +++ b/external/config/cli/sid @@ -0,0 +1 @@ +buster \ No newline at end of file diff --git a/external/config/desktop/README.md b/external/config/desktop/README.md new file mode 100644 index 0000000..0d511e2 --- /dev/null +++ b/external/config/desktop/README.md @@ -0,0 +1,102 @@ +

Desktop configuration

+ +Please use lowercase letters for all config / folder files + +``` +├──${RELEASE} The name of the distribution +│   ├──environments DE packages lists and scripts +│   │   ├──${DESKTOP_ENVIRONMENT} The name of the DE (xfce, gnome, kde, ...) +│   │   │  |──${DESKTOP_ENVIRONMENT_CONFIG_NAME} Different configuration name prefixed with "config_" (config_basic, config_full, ... ) +│   │──appgroups Application groups packages lists and scripts +│   │   ├──${DESKTOP_APPGROUPS_SELECTED} Appgroups names (editors, programming, ...) +``` + +In each directory representing a desktop environment, a desktop environment configuration or an appgroup, the following files can be present : + +* `packages` + If present, the content of the file will be added to the list + of packages 'required' by the OrangePi desktop package. +* `debian/postinst` + If present, the content of the file will be added to the `postinst` + script of the OrangePi desktop package, which will be executed after + installing it. +* `armbian/create_desktop_package.sh` + If present the content of this script will be executed, by the build + script, just before actually creating the OrangePi Desktop `.deb` + package. + Any variable recognized and function defined by the build script, + at that point, can be used. +* `sources/apt` + If present, the directory will be scanned for `.source` files, + which should contain APT URL, in a form that `add-apt-repository` + understand. + The system is restricted to ONLY ONE APT URL per file, since it's + basically calling : + `add-apt-repository $(cat "/that/apt/file.source")` + For each `.source` file parsed, if there's a corresponding + `.source.gpg` file, the file will be considered as a package + signing key and will be passed to `apt-key`. + For this one, the file is copied into `${SDCARD}/tmp` and then + **apt-key** is called like this : `apt-key "/tmp/file.source.gpg"`. + +Then in each directory representing a desktop environment, a desktop +environment configuration or an appgroup, you can add : + +* `custom/boards/${BOARD}/` + For example `custom/orangepipc`. + A Board (odroidc4, tinkerboard, bananapi, ...) specific directory + where you can provide additional`packages`, `debian/postinst` and + `armbian/create_desktop_package.sh`. + The files, if present, will be parsed accordingly when building + for that specific board, if the element (desktop environment, + appgroup, ...) is selected. + +Then in each appgroup, you can add : + +* `custom/desktops/${DESTKOP_ENVIRONMENT}/` + For example `custom/desktops/xfce`. + A desktop environment specific directory where you can provide + additional `packages`, `debian/postinst` and + `armbian/create_desktop_package.sh`. + The files, if present, will be parsed accordingly if the appgroup + AND that desktop environment are both selected during a build. +* `custom/boards/${BOARD}/custom/desktops/${DESTKOP_ENVIRONMENT}/` + For example `custom/boards/tinkerboard/custom/desktops/kde`. + A Board AND desktop environment specific directory where you can + provided additional `packages`, `debian/postinst` and + `armbian/create_desktop_package.sh`. + The files, if present, will be parsed accordingly if the appgroup, + that specific board and that specific desktop environments are + all selected during a build. + +### Adding a desktop environment + +> Currently, only official repositories are supported. + +Let's say that you want to add that new desktop environment +"superduperde", that is now available on official on Debian/Ubuntu +repositories. + +First, focus on one specific distribution like `focal` (Ubuntu) +or `buster` (Debian). In our example, will take `focal`. +We'll create our first configuration 'full', which should provide the +DE along with all its specific apps, widgets and the kitchen sink. + +* Create the directory + `config/desktop/focal/environments/superduperde/config_full` +* Create the file + `config/desktop/focal/environments/superduperde/config_full/packages` +* Open the `packages` file, add the list of packages for `apt`. + +Then select it in the configuration menu, or pass the following +variables to `./compile.sh` : + +```bash +BUILD_DESKTOP="yes" RELEASE="focal" DESKTOP_ENVIRONMENT="superduperde" DESKTOP_ENVIRONMENT_CONFIG_NAME="config_full" +``` + +Then test the resulting image ! + +### Tips + +Keep most complete configuration in latest stable versions (Ubuntu Focal and Ubuntu Buster) and link their sub-components / directories. The same goes for DE. We keep XFCE as a base and others linked to it - where this make sense. diff --git a/external/config/desktop/bionic/appgroups/3dsupport/packages b/external/config/desktop/bionic/appgroups/3dsupport/packages new file mode 100644 index 0000000..b6400d8 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/3dsupport/packages @@ -0,0 +1,3 @@ +glmark2 +mesa-utils +mesa-utils-extra diff --git a/external/config/desktop/bionic/appgroups/3dsupport/sources/apt/oibaf.source b/external/config/desktop/bionic/appgroups/3dsupport/sources/apt/oibaf.source new file mode 100644 index 0000000..2e6ad7c --- /dev/null +++ b/external/config/desktop/bionic/appgroups/3dsupport/sources/apt/oibaf.source @@ -0,0 +1 @@ +ppa:oibaf/graphics-drivers \ No newline at end of file diff --git a/external/config/desktop/bionic/appgroups/browsers/debian/postinst b/external/config/desktop/bionic/appgroups/browsers/debian/postinst new file mode 100644 index 0000000..96dc4f1 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/browsers/debian/postinst @@ -0,0 +1,14 @@ +if [ -f /etc/chromium-browser/default ]; then +cat > /etc/chromium-browser/default << DELIM +# Options to pass to chromium-browser +CHROMIUM_FLAGS="--use-gl=egl --ignore-gpu-blocklist --enable-accelerated-video-decode --enable-zero-copy --enable-gpu-rasterization --enable-oop-rasterization --enable-pinch --flag-switches-begin --flag-switches-end --origin-trial-disabled-features=SecurePaymentConfirmation" +DELIM +fi + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/bionic/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/bionic/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/bionic/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/bionic/appgroups/browsers/packages b/external/config/desktop/bionic/appgroups/browsers/packages new file mode 100644 index 0000000..6821f12 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/browsers/packages @@ -0,0 +1,2 @@ +chromium-browser +firefox diff --git a/external/config/desktop/bionic/appgroups/browsers/sources/apt/chromium-browser.source b/external/config/desktop/bionic/appgroups/browsers/sources/apt/chromium-browser.source new file mode 100644 index 0000000..428bf80 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/browsers/sources/apt/chromium-browser.source @@ -0,0 +1 @@ +ppa:saiarcot895/chromium-dev diff --git a/external/config/desktop/bionic/appgroups/chat/packages b/external/config/desktop/bionic/appgroups/chat/packages new file mode 100644 index 0000000..7503620 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/chat/packages @@ -0,0 +1 @@ +hexchat diff --git a/external/config/desktop/bionic/appgroups/desktop_tools/packages b/external/config/desktop/bionic/appgroups/desktop_tools/packages new file mode 100644 index 0000000..23f24bf --- /dev/null +++ b/external/config/desktop/bionic/appgroups/desktop_tools/packages @@ -0,0 +1,4 @@ +bleachbit +fbi +gparted +kazam diff --git a/external/config/desktop/bionic/appgroups/editors/debian/postinst b/external/config/desktop/bionic/appgroups/editors/debian/postinst new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/bionic/appgroups/editors/packages b/external/config/desktop/bionic/appgroups/editors/packages new file mode 100644 index 0000000..15a82c7 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/editors/packages @@ -0,0 +1,2 @@ +emacs +vim diff --git a/external/config/desktop/bionic/appgroups/email/packages b/external/config/desktop/bionic/appgroups/email/packages new file mode 100644 index 0000000..84daedd --- /dev/null +++ b/external/config/desktop/bionic/appgroups/email/packages @@ -0,0 +1 @@ +thunderbird diff --git a/external/config/desktop/bionic/appgroups/internet/packages b/external/config/desktop/bionic/appgroups/internet/packages new file mode 100644 index 0000000..a2c5a91 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/internet/packages @@ -0,0 +1,4 @@ +filezilla +putty +transmission +transmission-remote-gtk diff --git a/external/config/desktop/bionic/appgroups/multimedia/packages b/external/config/desktop/bionic/appgroups/multimedia/packages new file mode 100644 index 0000000..14bb933 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/multimedia/packages @@ -0,0 +1,2 @@ +gimp +mpv diff --git a/external/config/desktop/bionic/appgroups/office/packages b/external/config/desktop/bionic/appgroups/office/packages new file mode 100644 index 0000000..25e91f3 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/office/packages @@ -0,0 +1,3 @@ +libreoffice +libreoffice-style-elementary +simple-scan diff --git a/external/config/desktop/bionic/appgroups/programming/custom/desktops/cinnamon/packages b/external/config/desktop/bionic/appgroups/programming/custom/desktops/cinnamon/packages new file mode 100644 index 0000000..35db926 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/programming/custom/desktops/cinnamon/packages @@ -0,0 +1,2 @@ +gnome-builder +sysprof diff --git a/external/config/desktop/bionic/appgroups/programming/custom/desktops/gnome/packages b/external/config/desktop/bionic/appgroups/programming/custom/desktops/gnome/packages new file mode 100644 index 0000000..96c54c3 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/programming/custom/desktops/gnome/packages @@ -0,0 +1,2 @@ +geany +gnome-builder diff --git a/external/config/desktop/bionic/appgroups/programming/custom/desktops/kde/packages b/external/config/desktop/bionic/appgroups/programming/custom/desktops/kde/packages new file mode 100644 index 0000000..5988f0d --- /dev/null +++ b/external/config/desktop/bionic/appgroups/programming/custom/desktops/kde/packages @@ -0,0 +1,2 @@ +kdevelop +qtcreator diff --git a/external/config/desktop/bionic/appgroups/programming/packages b/external/config/desktop/bionic/appgroups/programming/packages new file mode 100644 index 0000000..3cf275b --- /dev/null +++ b/external/config/desktop/bionic/appgroups/programming/packages @@ -0,0 +1,6 @@ +build-essential +clang +codium +geany +meld +regexxer diff --git a/external/config/desktop/bionic/appgroups/programming/sources/apt/vscodium.source b/external/config/desktop/bionic/appgroups/programming/sources/apt/vscodium.source new file mode 100755 index 0000000..0eb625d --- /dev/null +++ b/external/config/desktop/bionic/appgroups/programming/sources/apt/vscodium.source @@ -0,0 +1 @@ +deb http://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main diff --git a/external/config/desktop/bionic/appgroups/programming/sources/apt/vscodium.source.gpg b/external/config/desktop/bionic/appgroups/programming/sources/apt/vscodium.source.gpg new file mode 100755 index 0000000..d4fb5f7 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/programming/sources/apt/vscodium.source.gpg @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFu8c8sBEACrPcX4UB0rGFObGzIpa3fqJy0K//W5XENNBrGlk6DS68SwkSza +QFoD+ZoGiwGZWy+X5m2bm6A0j8ff61uKLZFx4turikggdqey6RL3NIQOmhzbz9jc +90ZtVG3W2VHwP1Oy2sITJBD1UdCtnRR7ONfoLVJbavPrjHL0VEJqV6kF7ki45DAK +yVbEGjsg668l8FmfMIYyoqV8HQ+JosXQ6ItOH2QlGwvD5RvBmIRzIXSS159+UHBj +jrk81Pb1RLWUafoh8Geh4VZHQrvqkLmds/74KZQg47zDr1atKeIRe/p7UPZIEJsr +puOQP+4yfW8CKN/du62mO37xyJBcQpdsk+27/AAbpluwwzfrRAZcI9wqlmE7CRie +tARI3eLA/BVeLm0U5Jxemc1asTAptQTij9BvzFfZcpkwK+AcVmaicQhJ9iaa8bQ2 +oTTE5keewHgVdun+XfeMPPuRcF5QxeVK9dZQVI3nSObOXrehulkYXusMQ4vq8bh7 +GktI5n1O2qehnSn/Is7kdLBWDy8xGlgYEWe9oStQ5NSXo4PR7YWDzPs5aXBz9LOa +zthJqM1Ah41q5/rSgfhM3e+vXtF3M8phLoJTE5mlb370XVH1ZLNbXVvIuHO0L+Lh +ruZc/tREFWThOiS+FIGv/MDs4DieWEwr9+/598pFERo7cJEo5AZNgPy8SQARAQAB +tCRQYXZsbyBSdWR5aSA8cGF1bGNhcnJvdHlAcmlzZXVwLm5ldD6JAk4EEwEIADgW +IQQTAt5gIxiJ/h66ytxUZ4z3WieNnAUCW7xzywIbAwULCQgHAgYVCgkICwIEFgID +AQIeAQIXgAAKCRBUZ4z3WieNnPDyD/oCSpzl4uua0r/T4cL0rEhHVg82HounlTs2 +BxI0ZhJpjdqIE2ytIFiwdV47yAkt04ow0zEBHbZQldvixfsM3tDYrC6iiC4pRMMc +W6oVGf18r8nKKRmYTaOSPWL5yhLgO/IkQ/kCBsu3Wf0bp3GbHQ4wny+rmP745oG9 +npGPPW7EiUcFYPIM/YX2YqSH/FOGcMOwlp1QEvVqypQqaogyUmDRP+6bpKYMuq/c +GuPxHuwPmS7a3Zd6ybAtYBNumC/lNYbfxAZA1NK4WViVGB/P5GBWC0HSfLPsBu7D +/GqoqYCDTYYtSpnw2kUpkGWqOaWZc9S5Jvp26Hw+VoVGBdJUe7s7qJyeNmdjM/cR +/dNY9+fW3w9zWgJZcXTnScmpi0vzA7BLmFfsphPBZ7J1Sc+N72uV/W9A70yyNhSw +DQ20/4D2AHNozmq881LhBlOIw24jb0LlbrA7CFoR10zkpXsS/Vh1EWReV1z4zJDv +H1SKUzXaOJUpqqW0EpblEpH4qg5hknnnW4XjvlWZO/ICkKTi0LxXK9Lmcbhtzg9t +Wh7bfDXHXoQYS4QooJbzUhAHwXvQp03R0qu6UhEVhO42y5PVQ/+18FlhgBd+zP1Q +7Urb93f+7YbSa8e34ANcVvJZc7gP2oRTuVyKVjO/Q9l6+Qzg9DTFVPGYLvYJKIpK +odUkTbb/ArkCDQRbvHPLARAA3zMxF1XX4tLaz/0U7p381AXmtMA2L63mRQ3YGZxg +fVxyVx6FdLujxJHytIGnLb9FYQZkxjYyMVc8/7ukrPUTHDUHm2ab4mG0SvhDI3nx +2qeXE2dYMkpLoBqvFLekFAU129w9BLm9lbHfN+JbbdMmoqlyiufuPM6gz0gBV6ce +oXUtu8Q2/ixshSfvcdHx21ZD2HuNqSyworbzkA+0B0F51QRp1tqYJ7wQm3n82rQ+ +YFS97Un+7VWgJrX4aofUxRiDx0VHIYkEN8QcDZTQywT4zkj6tDMyKEp40axvZ6zM +AlaTI1GVrGMUHH7bnZXiF2ZyKHOF6XjTuEfotHXm8fzEHLdhtdUxiQ4+GK5ajQN2 +ay/v5JEtsc3FSAmjfTW9r6jEAiDn5TbeKHtLpeGmtPqvgK/Nzo5rRRx0NgymymeF +q7Ir4ATu9x8KKYXa/tFd2Qe8rtxNqhYjUh+W7FpMMNXYa18G+PbwNqpEGMdp51rS +9/Lq2GSYcuCV/jD2QbySUX5wHe9zDNiOuovBFhJZS8H2OGl6aep6zEpV/Q7FcWEG +9fz4RHADSGB6RFFI8hyV0/YaVU9rB4fAOZzybuJ4DSadOAsVVfkk2WdnUM6x1z24 +XhRdakH+ekGDg+nqs8wUc4u4ouo7dPTPaxbrUas5gdzjbtwoYXoKaIUnisPRranz +EjsAEQEAAYkCNgQYAQgAIBYhBBMC3mAjGIn+HrrK3FRnjPdaJ42cBQJbvHPLAhsM +AAoJEFRnjPdaJ42cEq8QAKJ1YUzQsgzUWSzkPgSZJwOAujWkDdhw+YbNvjHAgRZA +DrNbIyIYkJ/IevubOnteJgwGP/6qaMJwemM+VJ3e/YHvcvAmIilmH33tnnMRqWsj +xqG021SuX3FGdMXR7WwINZaToh+Lqaj4YXpanjPzGMGKZlzaSdj6avm7KT3HGHjO +Gk/nz0rAsqXfuzQBkHZ+JozUMqrh30+POcvkyFhqmTQ9juECFzOtegbEWYdDFBMA +tig1whBccebZ0W+Sva+e1AKktwHNtweaofCg8zQ39Nx1KOz9FoH4B2QF+dYU/yMQ +BpPYTRQPfbaf2/t5JJaoplWrE2gP+JS8ET11J7U4xtzqs7QprcCurTZv42PjwPKu +Hc8uwE1VaeX+d7zRGXD9ooR+u+BWKiwxD9p54/QHu/qh/x/4evrETTIZGsheojgm +srMYT2mW1hLFcOANAgvxuIm+O51+XYviQCGPqg8J2jm5zmxMNwEhVx0ObYcnJqve +klJniYNw9Ja9gnXxXWycChhmGM/QFLE0yrN7di7oDeN/JUhPPgppCken/xFihoxz +hlNM8vyJMQiddIBiEcz0zcAbbT74+qFJv9KRsfWAU0MEy3a66H/hybEJu140qTNw +d7e/dbqns8bDX1BP/x5/QKfxbZNoH2QWmCdv/b5dJ97OXFBtPM/VnOYaaFG5y2gX +=LCWI +-----END PGP PUBLIC KEY BLOCK----- + diff --git a/external/config/desktop/bionic/appgroups/remote_desktop/packages b/external/config/desktop/bionic/appgroups/remote_desktop/packages new file mode 100644 index 0000000..025a2f1 --- /dev/null +++ b/external/config/desktop/bionic/appgroups/remote_desktop/packages @@ -0,0 +1 @@ +remmina diff --git a/external/config/desktop/bionic/environments/xfce/appgroups/programming/packages b/external/config/desktop/bionic/environments/xfce/appgroups/programming/packages new file mode 100644 index 0000000..96c54c3 --- /dev/null +++ b/external/config/desktop/bionic/environments/xfce/appgroups/programming/packages @@ -0,0 +1,2 @@ +geany +gnome-builder diff --git a/external/config/desktop/bionic/environments/xfce/config_base/packages b/external/config/desktop/bionic/environments/xfce/config_base/packages new file mode 100644 index 0000000..fb35658 --- /dev/null +++ b/external/config/desktop/bionic/environments/xfce/config_base/packages @@ -0,0 +1,169 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-font-viewer +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mesa-utils +mousepad +mousetweaks +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +openprinting-ppds +orca +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +policykit-1 +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +thunar-volman +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +zip diff --git a/external/config/desktop/bionic/environments/xfce/config_base/packages.uninstall b/external/config/desktop/bionic/environments/xfce/config_base/packages.uninstall new file mode 100644 index 0000000..18c0f36 --- /dev/null +++ b/external/config/desktop/bionic/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 ubuntu-session \ No newline at end of file diff --git a/external/config/desktop/bionic/environments/xfce/debian/orangepi-bsp-desktop/postinst b/external/config/desktop/bionic/environments/xfce/debian/orangepi-bsp-desktop/postinst new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/bionic/environments/xfce/debian/orangepi-bsp-desktop/prepare.sh b/external/config/desktop/bionic/environments/xfce/debian/orangepi-bsp-desktop/prepare.sh new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/bionic/environments/xfce/debian/postinst b/external/config/desktop/bionic/environments/xfce/debian/postinst new file mode 100644 index 0000000..f2d3e99 --- /dev/null +++ b/external/config/desktop/bionic/environments/xfce/debian/postinst @@ -0,0 +1,22 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + + +#Adjust xsettings.xml for NumixBlue Theme Ubuntu +if [ -f /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then sed -i 's/Xfce-dusk/NumixBlue/g' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml; fi + +# Adjust menu +if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/bionic/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/bionic/environments/xfce/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..dda7225 --- /dev/null +++ b/external/config/desktop/bionic/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,22 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/bionic/environments/xfce/support b/external/config/desktop/bionic/environments/xfce/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/bionic/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/bookworm/appgroups/browsers/debian/postinst b/external/config/desktop/bookworm/appgroups/browsers/debian/postinst new file mode 100644 index 0000000..d2e421d --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/browsers/debian/postinst @@ -0,0 +1,12 @@ +# overwrite stock chromium configuration +if [ -d /etc/chromium-browser/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium-browser/default; fi +if [ -d /etc/chromium.d/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium.d/chromium.conf; fi +cp -R /etc/orangepi/chromium /usr/share + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/bookworm/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/bookworm/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/bookworm/appgroups/browsers/packages b/external/config/desktop/bookworm/appgroups/browsers/packages new file mode 100644 index 0000000..e090179 --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/browsers/packages @@ -0,0 +1 @@ +chromium diff --git a/external/config/desktop/bookworm/appgroups/chat b/external/config/desktop/bookworm/appgroups/chat new file mode 120000 index 0000000..6fd6d40 --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/chat @@ -0,0 +1 @@ +../../buster/appgroups/chat \ No newline at end of file diff --git a/external/config/desktop/bookworm/appgroups/desktop_tools b/external/config/desktop/bookworm/appgroups/desktop_tools new file mode 120000 index 0000000..6cac32a --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/desktop_tools @@ -0,0 +1 @@ +../../buster/appgroups/desktop_tools \ No newline at end of file diff --git a/external/config/desktop/bookworm/appgroups/editors b/external/config/desktop/bookworm/appgroups/editors new file mode 120000 index 0000000..f5a1dbb --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/editors @@ -0,0 +1 @@ +../../buster/appgroups/editors \ No newline at end of file diff --git a/external/config/desktop/bookworm/appgroups/games/packages b/external/config/desktop/bookworm/appgroups/games/packages new file mode 100644 index 0000000..e95002d --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/games/packages @@ -0,0 +1,5 @@ +gnome-mahjongg +gnome-mines +gnome-sudoku +quadrapassel +sgt-puzzles diff --git a/external/config/desktop/bookworm/appgroups/internet b/external/config/desktop/bookworm/appgroups/internet new file mode 120000 index 0000000..755097c --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/internet @@ -0,0 +1 @@ +../../buster/appgroups/internet \ No newline at end of file diff --git a/external/config/desktop/bookworm/appgroups/multimedia b/external/config/desktop/bookworm/appgroups/multimedia new file mode 120000 index 0000000..f974a28 --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/multimedia @@ -0,0 +1 @@ +../../buster/appgroups/multimedia \ No newline at end of file diff --git a/external/config/desktop/bookworm/appgroups/office/packages b/external/config/desktop/bookworm/appgroups/office/packages new file mode 100644 index 0000000..63a39a7 --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/office/packages @@ -0,0 +1 @@ +libreoffice diff --git a/external/config/desktop/bookworm/appgroups/programming b/external/config/desktop/bookworm/appgroups/programming new file mode 120000 index 0000000..aa2c6e7 --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/programming @@ -0,0 +1 @@ +../../buster/appgroups/programming \ No newline at end of file diff --git a/external/config/desktop/bookworm/appgroups/remote_desktop b/external/config/desktop/bookworm/appgroups/remote_desktop new file mode 120000 index 0000000..f3f9057 --- /dev/null +++ b/external/config/desktop/bookworm/appgroups/remote_desktop @@ -0,0 +1 @@ +../../buster/appgroups/remote_desktop \ No newline at end of file diff --git a/external/config/desktop/bookworm/environments/gnome/config_base/packages b/external/config/desktop/bookworm/environments/gnome/config_base/packages new file mode 100644 index 0000000..e8a2cd7 --- /dev/null +++ b/external/config/desktop/bookworm/environments/gnome/config_base/packages @@ -0,0 +1,204 @@ +anacron +apt-config-auto-update +at-spi2-core +bubblewrap +cups +dbus-x11 +dictionaries-common +dmz-cursor-theme +evolution-data-server +evolution-data-server-common +fonts-freefont-ttf +fonts-urw-base35 +foomatic-db-compressed-ppds +gcr +gdebi +gdm3 +genisoimage +geoclue-2.0 +ghostscript +ghostscript-x +gir1.2-accountsservice-1.0 +gir1.2-atspi-2.0 +gir1.2-gck-1 +gir1.2-gcr-3 +gir1.2-gdesktopenums-3.0 +gir1.2-gdm-1.0 +gir1.2-geoclue-2.0 +gir1.2-gnomebluetooth-1.0 +gir1.2-gnomedesktop-3.0 +gir1.2-goa-1.0 +gir1.2-graphene-1.0 +gir1.2-gweather-3.0 +gir1.2-ibus-1.0 +gir1.2-json-1.0 +gir1.2-mutter-7 +gir1.2-nm-1.0 +gir1.2-nma-1.0 +gir1.2-polkit-1.0 +gir1.2-rsvg-2.0 +gir1.2-snapd-1 +gir1.2-soup-2.4 +gir1.2-upowerglib-1.0 +gjs +gnome-control-center +gnome-desktop3-data +gnome-keyring +gnome-menus +gnome-packagekit +gnome-session +gnome-session-bin +gnome-session-common +gnome-settings-daemon +gnome-settings-daemon-common +gnome-shell +gnome-shell-common +gnome-shell-extension-appindicator +gnome-shell-extension-desktop-icons +gnome-shell-extension-trash +gvfs-backends +gvfs-bin +hunspell-en-us +inputattach +libaccountsservice0 +libasound2 +libasound2-plugins +libaspell15 +libatk-adaptor +libcairo-gobject-perl +libcairo-perl +libcamel-1.2-62 +libcue2 +libdee-1.0-4 +libebackend-1.2-10 +libebook-1.2-20 +libebook-contacts-1.2-3 +libecal-2.0-1 +libedata-book-1.2-26 +libedata-cal-2.0-1 +libedataserver-1.2-25 +libedataserverui-1.2-2 +libenchant-2-2 +libexempi8 +libexiv2-27 +libextutils-depends-perl +libextutils-pkgconfig-perl +libfontenc1 +libgck-1-0 +libgcr-base-3-1 +libgcr-ui-3-1 +libgdata22 +libgdata-common +libgdm1 +libgeoclue-2-0 +libgeocode-glib0 +libgexiv2-2 +libgjs0g +libglib-object-introspection-perl +libglib-perl +libglu1-mesa +libgnome-autoar-0-0 +libgnome-bluetooth13 +libgnome-desktop-3-19 +libgoa-1.0-0b +libgoa-1.0-common +libgraphene-1.0-0 +libgs9 +libgs9-common +libgsf-1-114 +libgsf-1-common +libgtk3-perl +libgweather-3-16 +libgweather-common +libgxps2 +libibus-1.0-5 +libical3 +libidn11 +libijs-0.35 +libimobiledevice6 +libjavascriptcoregtk-4.0-18 +libjbig2dec0 +libmutter-7-0 +libnautilus-extension1a +libnma0 +libnotify-bin +libpaper1 +libphonenumber8 +libplist3 +libpoppler-glib8 +libprotobuf23 +libpulsedsp +libsasl2-modules +libspeexdsp1 +libtext-iconv-perl +libtotem-plparser18 +libtotem-plparser-common +libtracker-control-2.0-0 +libtracker-miner-2.0-0 +libtracker-sparql-2.0-0 +libu2f-udev +libunwind8 +libupower-glib3 +libusbmuxd6 +libwebkit2gtk-4.0-37 +libxaw7 +libxfont2 +libxkbfile1 +libxmu6 +libxmuu1 +libxtst6 +libxxf86dga1 +libyelp0 +mutter +mutter-common +nautilus +nautilus-data +openprinting-ppds +p11-kit +p11-kit-modules +pavucontrol +pinentry-gnome3 +poppler-data +printer-driver-pnm2ppa +pulseaudio +pulseaudio-module-bluetooth +pulseaudio-utils +python3-click +python3-colorama +python3-dateutil +python3-debconf +python3-debian +python3-distutils +python3-distutils-extra +python3-yaml +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker +tracker-extract +tracker-miner-fs +upower +x11-apps +x11-session-utils +x11-utils +x11-xkb-utils +x11-xserver-utils +xdg-dbus-proxy +xdg-desktop-portal +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-base +xinit +xinput +xorg +xorg-docs-core +xserver-common +xserver-xorg +xserver-xorg-video-fbdev +xwayland +yelp +yelp-xsl +zenity +zenity-common diff --git a/external/config/desktop/bookworm/environments/gnome/debian b/external/config/desktop/bookworm/environments/gnome/debian new file mode 120000 index 0000000..015282d --- /dev/null +++ b/external/config/desktop/bookworm/environments/gnome/debian @@ -0,0 +1 @@ +../../../buster/environments/gnome/debian \ No newline at end of file diff --git a/external/config/desktop/bookworm/environments/gnome/only_for b/external/config/desktop/bookworm/environments/gnome/only_for new file mode 120000 index 0000000..6d7ee1a --- /dev/null +++ b/external/config/desktop/bookworm/environments/gnome/only_for @@ -0,0 +1 @@ +../../../buster/environments/gnome/only_for \ No newline at end of file diff --git a/external/config/desktop/bookworm/environments/gnome/orangepi b/external/config/desktop/bookworm/environments/gnome/orangepi new file mode 120000 index 0000000..038072b --- /dev/null +++ b/external/config/desktop/bookworm/environments/gnome/orangepi @@ -0,0 +1 @@ +../../../buster/environments/gnome/orangepi \ No newline at end of file diff --git a/external/config/desktop/bookworm/environments/gnome/support b/external/config/desktop/bookworm/environments/gnome/support new file mode 120000 index 0000000..2f641df --- /dev/null +++ b/external/config/desktop/bookworm/environments/gnome/support @@ -0,0 +1 @@ +../../../buster/environments/gnome/support \ No newline at end of file diff --git a/external/config/desktop/bookworm/environments/mate/config_base/packages b/external/config/desktop/bookworm/environments/mate/config_base/packages new file mode 100644 index 0000000..e2d5432 --- /dev/null +++ b/external/config/desktop/bookworm/environments/mate/config_base/packages @@ -0,0 +1,111 @@ +apt-config-auto-update +apt-xapian-index +blueman +bluez +bluez-tools +cifs-utils +dbus-x11 +debian-mate-default-settings +dictionaries-common +gcr +gdebi +gnome-keyring +gnome-orca +gnome-packagekit +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +gvfs-fuse +hunspell-en-us +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +libpam-gnome-keyring +lightdm +lightdm-gtk-greeter-settings +mate-applet-appmenu +mate-applet-brisk-menu +mate-applets +mate-applets-common +mate-backgrounds +mate-calc +mate-calc-common +mate-common +mate-control-center +mate-control-center-common +mate-core +mate-desktop +mate-desktop-common +mate-desktop-environment +mate-desktop-environment-core +mate-desktop-environment-extra +mate-desktop-environment-extras +mate-dock-applet +mate-equake-applet +mate-icon-theme +mate-indicator-applet +mate-indicator-applet-common +mate-media +mate-media-common +mate-menu +mate-menus +mate-netbook +mate-netbook-common +mate-notification-daemon +mate-notification-daemon-common +mate-panel +mate-panel-common +mate-polkit +mate-polkit-bin +mate-polkit-common +mate-power-manager +mate-power-manager-common +mate-screensaver +mate-screensaver-common +mate-sensors-applet +mate-sensors-applet-common +mate-session-manager +mate-settings-daemon +mate-settings-daemon-common +mate-settings-daemon-dev +mate-sntray-plugin +mate-system-monitor +mate-system-monitor-common +mate-terminal +mate-terminal-common +mate-themes +mate-tweak +mate-user-guide +mate-user-share +mate-user-share-common +mate-utils +mate-utils-common +mate-window-applets-common +mate-window-buttons-applet +mate-window-menu-applet +mate-window-title-applet +network-manager-gnome +numix-gtk-theme +p11-kit +pasystray +pavucontrol +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +smbclient +software-properties-common +synaptic +system-config-printer +system-config-printer-common +tracker +tracker-extract +tracker-miner-fs +x11-xserver-utils +xfonts-base +xinit +xserver-xorg +xserver-xorg-video-fbdev diff --git a/external/config/desktop/bookworm/environments/mate/config_base/packages.uninstall b/external/config/desktop/bookworm/environments/mate/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/bookworm/environments/mate/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/bookworm/environments/mate/debian/postinst b/external/config/desktop/bookworm/environments/mate/debian/postinst new file mode 100644 index 0000000..d18b471 --- /dev/null +++ b/external/config/desktop/bookworm/environments/mate/debian/postinst @@ -0,0 +1,5 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/bookworm/environments/mate/orangepi/create_desktop_package.sh b/external/config/desktop/bookworm/environments/mate/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..fa599e2 --- /dev/null +++ b/external/config/desktop/bookworm/environments/mate/orangepi/create_desktop_package.sh @@ -0,0 +1,43 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ + +mkdir -p "${destination}"/usr/share/mate-background-properties +cat <<-EOF > "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF + +mkdir -p "${destination}"/usr/share/glib-2.0/schemas +cat <<-EOF > "${destination}"/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override +[org.gnome.desktop.background] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +show-desktop-icons=true +EOF diff --git a/external/config/desktop/bookworm/environments/mate/support b/external/config/desktop/bookworm/environments/mate/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/bookworm/environments/mate/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/bookworm/environments/xfce/config_base/packages b/external/config/desktop/bookworm/environments/xfce/config_base/packages new file mode 100644 index 0000000..993ac80 --- /dev/null +++ b/external/config/desktop/bookworm/environments/xfce/config_base/packages @@ -0,0 +1,130 @@ +anacron +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gnome-font-viewer +gnome-orca +gnome-software +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs +hplip +hunspell-en-us +inputattach +keyutils +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lxtask +menulibre +mesa-utils +mousepad +mousetweaks +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +arc-theme +papirus-icon-theme +openprinting-ppds +p7zip-full +pamix +plank +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +thunar-volman +tumbler +update-inetd +viewnior +x11-apps +x11-xserver-utils +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfce4-pulseaudio-plugin +xfce4-statusnotifier-plugin +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/bookworm/environments/xfce/config_base/packages.uninstall b/external/config/desktop/bookworm/environments/xfce/config_base/packages.uninstall new file mode 100644 index 0000000..4b622d4 --- /dev/null +++ b/external/config/desktop/bookworm/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 diff --git a/external/config/desktop/bookworm/environments/xfce/debian/postinst b/external/config/desktop/bookworm/environments/xfce/debian/postinst new file mode 100644 index 0000000..c24facc --- /dev/null +++ b/external/config/desktop/bookworm/environments/xfce/debian/postinst @@ -0,0 +1,29 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +#if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/WhiteSur-light.png/g' /etc/lightdm/slick-greeter.conf; fi + +# Adjust menu +#if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +#sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +#\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +#\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +#fi + +# Change theme +#if [ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then +#sed -i '/"ThemeName"/c\ ' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +#fi + +# Change icon +#if [ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then +#sed -i '/"IconThemeName"/c\ ' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +#fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/bookworm/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/bookworm/environments/xfce/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..9030c1b --- /dev/null +++ b/external/config/desktop/bookworm/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,26 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +if [[ $BOARD == orangepi800 ]]; then + cp -R "${EXTER}"/packages/blobs/desktop/skel_new/. "${destination}"/etc/skel +else + cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel +fi + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/bookworm/environments/xfce/support b/external/config/desktop/bookworm/environments/xfce/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/bookworm/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/bullseye/appgroups/browsers/debian/postinst b/external/config/desktop/bullseye/appgroups/browsers/debian/postinst new file mode 100644 index 0000000..d2e421d --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/browsers/debian/postinst @@ -0,0 +1,12 @@ +# overwrite stock chromium configuration +if [ -d /etc/chromium-browser/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium-browser/default; fi +if [ -d /etc/chromium.d/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium.d/chromium.conf; fi +cp -R /etc/orangepi/chromium /usr/share + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/bullseye/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/bullseye/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/bullseye/appgroups/browsers/packages b/external/config/desktop/bullseye/appgroups/browsers/packages new file mode 100644 index 0000000..5fd57ac --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/browsers/packages @@ -0,0 +1 @@ +firefox-esr diff --git a/external/config/desktop/bullseye/appgroups/chat b/external/config/desktop/bullseye/appgroups/chat new file mode 120000 index 0000000..6fd6d40 --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/chat @@ -0,0 +1 @@ +../../buster/appgroups/chat \ No newline at end of file diff --git a/external/config/desktop/bullseye/appgroups/desktop_tools b/external/config/desktop/bullseye/appgroups/desktop_tools new file mode 120000 index 0000000..6cac32a --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/desktop_tools @@ -0,0 +1 @@ +../../buster/appgroups/desktop_tools \ No newline at end of file diff --git a/external/config/desktop/bullseye/appgroups/editors b/external/config/desktop/bullseye/appgroups/editors new file mode 120000 index 0000000..f5a1dbb --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/editors @@ -0,0 +1 @@ +../../buster/appgroups/editors \ No newline at end of file diff --git a/external/config/desktop/bullseye/appgroups/games/packages b/external/config/desktop/bullseye/appgroups/games/packages new file mode 100755 index 0000000..e95002d --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/games/packages @@ -0,0 +1,5 @@ +gnome-mahjongg +gnome-mines +gnome-sudoku +quadrapassel +sgt-puzzles diff --git a/external/config/desktop/bullseye/appgroups/internet b/external/config/desktop/bullseye/appgroups/internet new file mode 120000 index 0000000..755097c --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/internet @@ -0,0 +1 @@ +../../buster/appgroups/internet \ No newline at end of file diff --git a/external/config/desktop/bullseye/appgroups/multimedia b/external/config/desktop/bullseye/appgroups/multimedia new file mode 120000 index 0000000..f974a28 --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/multimedia @@ -0,0 +1 @@ +../../buster/appgroups/multimedia \ No newline at end of file diff --git a/external/config/desktop/bullseye/appgroups/office/packages b/external/config/desktop/bullseye/appgroups/office/packages new file mode 100644 index 0000000..63a39a7 --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/office/packages @@ -0,0 +1 @@ +libreoffice diff --git a/external/config/desktop/bullseye/appgroups/programming b/external/config/desktop/bullseye/appgroups/programming new file mode 120000 index 0000000..aa2c6e7 --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/programming @@ -0,0 +1 @@ +../../buster/appgroups/programming \ No newline at end of file diff --git a/external/config/desktop/bullseye/appgroups/remote_desktop b/external/config/desktop/bullseye/appgroups/remote_desktop new file mode 120000 index 0000000..f3f9057 --- /dev/null +++ b/external/config/desktop/bullseye/appgroups/remote_desktop @@ -0,0 +1 @@ +../../buster/appgroups/remote_desktop \ No newline at end of file diff --git a/external/config/desktop/bullseye/environments/gnome/config_base/packages b/external/config/desktop/bullseye/environments/gnome/config_base/packages new file mode 100644 index 0000000..a3e259c --- /dev/null +++ b/external/config/desktop/bullseye/environments/gnome/config_base/packages @@ -0,0 +1,205 @@ +anacron +apt-config-auto-update +at-spi2-core +bubblewrap +cups +dbus-x11 +dictionaries-common +dmz-cursor-theme +evolution-data-server +evolution-data-server-common +fonts-freefont-ttf +fonts-urw-base35 +foomatic-db-compressed-ppds +gcr +gdebi +gdm3 +genisoimage +geoclue-2.0 +ghostscript +ghostscript-x +gir1.2-accountsservice-1.0 +gir1.2-atspi-2.0 +gir1.2-gck-1 +gir1.2-gcr-3 +gir1.2-gdesktopenums-3.0 +gir1.2-gdm-1.0 +gir1.2-geoclue-2.0 +gir1.2-gnomebluetooth-1.0 +gir1.2-gnomedesktop-3.0 +gir1.2-goa-1.0 +gir1.2-graphene-1.0 +gir1.2-gweather-3.0 +gir1.2-ibus-1.0 +gir1.2-json-1.0 +gir1.2-mutter-7 +gir1.2-nm-1.0 +gir1.2-nma-1.0 +gir1.2-polkit-1.0 +gir1.2-rsvg-2.0 +gir1.2-snapd-1 +gir1.2-soup-2.4 +gir1.2-upowerglib-1.0 +gjs +gnome-control-center +gnome-desktop3-data +gnome-keyring +gnome-menus +gnome-packagekit +gnome-session +gnome-session-bin +gnome-session-common +gnome-settings-daemon +gnome-settings-daemon-common +gnome-shell +gnome-shell-common +gnome-shell-extension-appindicator +gnome-shell-extension-desktop-icons +gnome-shell-extension-trash +gvfs-backends +gvfs-bin +hunspell-en-us +inputattach +libaccountsservice0 +libasound2 +libasound2-plugins +libaspell15 +libatk-adaptor +libcairo-gobject-perl +libcairo-perl +libcamel-1.2-62 +libcue2 +libdee-1.0-4 +libebackend-1.2-10 +libebook-1.2-20 +libebook-contacts-1.2-3 +libecal-2.0-1 +libedata-book-1.2-26 +libedata-cal-2.0-1 +libedataserver-1.2-25 +libedataserverui-1.2-2 +libenchant-2-2 +libexempi8 +libexiv2-27 +libextutils-depends-perl +libextutils-pkgconfig-perl +libfontenc1 +libgck-1-0 +libgcr-base-3-1 +libgcr-ui-3-1 +libgdata22 +libgdata-common +libgdm1 +libgeoclue-2-0 +libgeocode-glib0 +libgexiv2-2 +libgjs0g +libglib-object-introspection-perl +libglib-perl +libglu1-mesa +libgnome-autoar-0-0 +libgnome-bluetooth13 +libgnome-desktop-3-19 +libgoa-1.0-0b +libgoa-1.0-common +libgraphene-1.0-0 +libgs9 +libgs9-common +libgsf-1-114 +libgsf-1-common +libgtk3-perl +libgweather-3-16 +libgweather-common +libgxps2 +libibus-1.0-5 +libical3 +libidn11 +libijs-0.35 +libimobiledevice6 +libjavascriptcoregtk-4.0-18 +libjbig2dec0 +libmutter-7-0 +libnautilus-extension1a +libnma0 +libnotify-bin +libpaper1 +libphonenumber8 +libplist3 +libpoppler-glib8 +libprotobuf23 +libpulsedsp +libsasl2-modules +libspeexdsp1 +libtext-iconv-perl +libtotem-plparser18 +libtotem-plparser-common +libtracker-control-2.0-0 +libtracker-miner-2.0-0 +libtracker-sparql-2.0-0 +libu2f-udev +libunwind8 +libupower-glib3 +libusbmuxd6 +libwebkit2gtk-4.0-37 +libxaw7 +libxfont2 +libxkbfile1 +libxmu6 +libxmuu1 +libxtst6 +libxxf86dga1 +libyelp0 +mutter +mutter-common +nautilus +nautilus-data +openprinting-ppds +p11-kit +p11-kit-modules +pavucontrol +pinentry-gnome3 +poppler-data +printer-driver-pnm2ppa +pulseaudio +pulseaudio-module-bluetooth +pulseaudio-utils +python3-click +python3-colorama +python3-dateutil +python3-debconf +python3-debian +python3-distutils +python3-distutils-extra +python3-yaml +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker +tracker-extract +tracker-miner-fs +upower +x11-apps +x11-session-utils +x11-utils +x11-xkb-utils +x11-xserver-utils +xarchiver +xdg-dbus-proxy +xdg-desktop-portal +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-base +xinit +xinput +xorg +xorg-docs-core +xserver-common +xserver-xorg +xserver-xorg-video-fbdev +xwayland +yelp +yelp-xsl +zenity +zenity-common diff --git a/external/config/desktop/bullseye/environments/gnome/debian b/external/config/desktop/bullseye/environments/gnome/debian new file mode 120000 index 0000000..015282d --- /dev/null +++ b/external/config/desktop/bullseye/environments/gnome/debian @@ -0,0 +1 @@ +../../../buster/environments/gnome/debian \ No newline at end of file diff --git a/external/config/desktop/bullseye/environments/gnome/only_for b/external/config/desktop/bullseye/environments/gnome/only_for new file mode 120000 index 0000000..6d7ee1a --- /dev/null +++ b/external/config/desktop/bullseye/environments/gnome/only_for @@ -0,0 +1 @@ +../../../buster/environments/gnome/only_for \ No newline at end of file diff --git a/external/config/desktop/bullseye/environments/gnome/orangepi b/external/config/desktop/bullseye/environments/gnome/orangepi new file mode 120000 index 0000000..038072b --- /dev/null +++ b/external/config/desktop/bullseye/environments/gnome/orangepi @@ -0,0 +1 @@ +../../../buster/environments/gnome/orangepi \ No newline at end of file diff --git a/external/config/desktop/bullseye/environments/gnome/support b/external/config/desktop/bullseye/environments/gnome/support new file mode 120000 index 0000000..2f641df --- /dev/null +++ b/external/config/desktop/bullseye/environments/gnome/support @@ -0,0 +1 @@ +../../../buster/environments/gnome/support \ No newline at end of file diff --git a/external/config/desktop/bullseye/environments/mate/config_base/packages b/external/config/desktop/bullseye/environments/mate/config_base/packages new file mode 100644 index 0000000..9b674a8 --- /dev/null +++ b/external/config/desktop/bullseye/environments/mate/config_base/packages @@ -0,0 +1,112 @@ +apt-config-auto-update +apt-xapian-index +blueman +bluez +bluez-tools +cifs-utils +dbus-x11 +debian-mate-default-settings +dictionaries-common +gcr +gdebi +gnome-keyring +gnome-orca +gnome-packagekit +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +gvfs-fuse +hunspell-en-us +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +libpam-gnome-keyring +lightdm +lightdm-gtk-greeter-settings +mate-applet-appmenu +mate-applet-brisk-menu +mate-applets +mate-applets-common +mate-backgrounds +mate-calc +mate-calc-common +mate-common +mate-control-center +mate-control-center-common +mate-core +mate-desktop +mate-desktop-common +mate-desktop-environment +mate-desktop-environment-core +mate-desktop-environment-extra +mate-desktop-environment-extras +mate-dock-applet +mate-equake-applet +mate-icon-theme +mate-indicator-applet +mate-indicator-applet-common +mate-media +mate-media-common +mate-menu +mate-menus +mate-netbook +mate-netbook-common +mate-notification-daemon +mate-notification-daemon-common +mate-panel +mate-panel-common +mate-polkit +mate-polkit-bin +mate-polkit-common +mate-power-manager +mate-power-manager-common +mate-screensaver +mate-screensaver-common +mate-sensors-applet +mate-sensors-applet-common +mate-session-manager +mate-settings-daemon +mate-settings-daemon-common +mate-settings-daemon-dev +mate-sntray-plugin +mate-system-monitor +mate-system-monitor-common +mate-terminal +mate-terminal-common +mate-themes +mate-tweak +mate-user-guide +mate-user-share +mate-user-share-common +mate-utils +mate-utils-common +mate-window-applets-common +mate-window-buttons-applet +mate-window-menu-applet +mate-window-title-applet +network-manager-gnome +numix-gtk-theme +p11-kit +pasystray +pavucontrol +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +smbclient +software-properties-common +synaptic +system-config-printer +system-config-printer-common +tracker +tracker-extract +tracker-miner-fs +x11-xserver-utils +xarchiver +xfonts-base +xinit +xserver-xorg +xserver-xorg-video-fbdev diff --git a/external/config/desktop/bullseye/environments/mate/config_base/packages.uninstall b/external/config/desktop/bullseye/environments/mate/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/bullseye/environments/mate/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/bullseye/environments/mate/debian/postinst b/external/config/desktop/bullseye/environments/mate/debian/postinst new file mode 100644 index 0000000..d18b471 --- /dev/null +++ b/external/config/desktop/bullseye/environments/mate/debian/postinst @@ -0,0 +1,5 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/bullseye/environments/mate/orangepi/create_desktop_package.sh b/external/config/desktop/bullseye/environments/mate/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..fa599e2 --- /dev/null +++ b/external/config/desktop/bullseye/environments/mate/orangepi/create_desktop_package.sh @@ -0,0 +1,43 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ + +mkdir -p "${destination}"/usr/share/mate-background-properties +cat <<-EOF > "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF + +mkdir -p "${destination}"/usr/share/glib-2.0/schemas +cat <<-EOF > "${destination}"/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override +[org.gnome.desktop.background] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +show-desktop-icons=true +EOF diff --git a/external/config/desktop/bullseye/environments/mate/support b/external/config/desktop/bullseye/environments/mate/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/bullseye/environments/mate/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/bullseye/environments/xfce/config_base/packages b/external/config/desktop/bullseye/environments/xfce/config_base/packages new file mode 100644 index 0000000..0ad7869 --- /dev/null +++ b/external/config/desktop/bullseye/environments/xfce/config_base/packages @@ -0,0 +1,132 @@ +anacron +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gnome-font-viewer +gnome-orca +gnome-software +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs +hplip +hunspell-en-us +inputattach +keyutils +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lxtask +menulibre +mesa-utils +mousepad +mousetweaks +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +arc-theme +papirus-icon-theme +openprinting-ppds +p7zip-full +pamix +plank +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +thunar-volman +ttf-ubuntu-font-family +tumbler +update-inetd +viewnior +x11-apps +x11-xserver-utils +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfce4-pulseaudio-plugin +xfce4-statusnotifier-plugin +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/bullseye/environments/xfce/config_base/packages.uninstall b/external/config/desktop/bullseye/environments/xfce/config_base/packages.uninstall new file mode 100644 index 0000000..4b622d4 --- /dev/null +++ b/external/config/desktop/bullseye/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 diff --git a/external/config/desktop/bullseye/environments/xfce/debian/postinst b/external/config/desktop/bullseye/environments/xfce/debian/postinst new file mode 100644 index 0000000..c24facc --- /dev/null +++ b/external/config/desktop/bullseye/environments/xfce/debian/postinst @@ -0,0 +1,29 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +#if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/WhiteSur-light.png/g' /etc/lightdm/slick-greeter.conf; fi + +# Adjust menu +#if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +#sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +#\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +#\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +#fi + +# Change theme +#if [ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then +#sed -i '/"ThemeName"/c\ ' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +#fi + +# Change icon +#if [ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then +#sed -i '/"IconThemeName"/c\ ' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +#fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/bullseye/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/bullseye/environments/xfce/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..9030c1b --- /dev/null +++ b/external/config/desktop/bullseye/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,26 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +if [[ $BOARD == orangepi800 ]]; then + cp -R "${EXTER}"/packages/blobs/desktop/skel_new/. "${destination}"/etc/skel +else + cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel +fi + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/bullseye/environments/xfce/support b/external/config/desktop/bullseye/environments/xfce/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/bullseye/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/buster/appgroups/browsers/debian/postinst b/external/config/desktop/buster/appgroups/browsers/debian/postinst new file mode 100644 index 0000000..d2e421d --- /dev/null +++ b/external/config/desktop/buster/appgroups/browsers/debian/postinst @@ -0,0 +1,12 @@ +# overwrite stock chromium configuration +if [ -d /etc/chromium-browser/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium-browser/default; fi +if [ -d /etc/chromium.d/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium.d/chromium.conf; fi +cp -R /etc/orangepi/chromium /usr/share + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/buster/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/buster/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/buster/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/buster/appgroups/browsers/packages b/external/config/desktop/buster/appgroups/browsers/packages new file mode 100644 index 0000000..e090179 --- /dev/null +++ b/external/config/desktop/buster/appgroups/browsers/packages @@ -0,0 +1 @@ +chromium diff --git a/external/config/desktop/buster/appgroups/chat/packages b/external/config/desktop/buster/appgroups/chat/packages new file mode 100644 index 0000000..7503620 --- /dev/null +++ b/external/config/desktop/buster/appgroups/chat/packages @@ -0,0 +1 @@ +hexchat diff --git a/external/config/desktop/buster/appgroups/desktop_tools/packages b/external/config/desktop/buster/appgroups/desktop_tools/packages new file mode 100644 index 0000000..59ad3e2 --- /dev/null +++ b/external/config/desktop/buster/appgroups/desktop_tools/packages @@ -0,0 +1,6 @@ +gparted +catfish +xarchiver +gnome-calculator +xfce4-dict +synaptic diff --git a/external/config/desktop/buster/appgroups/editors/packages b/external/config/desktop/buster/appgroups/editors/packages new file mode 100644 index 0000000..ae6070c --- /dev/null +++ b/external/config/desktop/buster/appgroups/editors/packages @@ -0,0 +1,3 @@ +gimp +inkscape +tuxpaint diff --git a/external/config/desktop/buster/appgroups/email/packages b/external/config/desktop/buster/appgroups/email/packages new file mode 100644 index 0000000..84daedd --- /dev/null +++ b/external/config/desktop/buster/appgroups/email/packages @@ -0,0 +1 @@ +thunderbird diff --git a/external/config/desktop/buster/appgroups/internet/packages b/external/config/desktop/buster/appgroups/internet/packages new file mode 100644 index 0000000..0e8ab6a --- /dev/null +++ b/external/config/desktop/buster/appgroups/internet/packages @@ -0,0 +1,3 @@ +thunderbird +transmission +transmission-gtk diff --git a/external/config/desktop/buster/appgroups/multimedia/packages b/external/config/desktop/buster/appgroups/multimedia/packages new file mode 100644 index 0000000..b6d0c36 --- /dev/null +++ b/external/config/desktop/buster/appgroups/multimedia/packages @@ -0,0 +1 @@ +mpv diff --git a/external/config/desktop/buster/appgroups/office/packages b/external/config/desktop/buster/appgroups/office/packages new file mode 100644 index 0000000..7e55d25 --- /dev/null +++ b/external/config/desktop/buster/appgroups/office/packages @@ -0,0 +1,2 @@ +libreoffice +libreoffice-style-tango diff --git a/external/config/desktop/buster/appgroups/programming/packages b/external/config/desktop/buster/appgroups/programming/packages new file mode 100644 index 0000000..e769390 --- /dev/null +++ b/external/config/desktop/buster/appgroups/programming/packages @@ -0,0 +1,2 @@ +geany +thonny diff --git a/external/config/desktop/buster/appgroups/remote_desktop/packages b/external/config/desktop/buster/appgroups/remote_desktop/packages new file mode 100644 index 0000000..025a2f1 --- /dev/null +++ b/external/config/desktop/buster/appgroups/remote_desktop/packages @@ -0,0 +1 @@ +remmina diff --git a/external/config/desktop/buster/environments/gnome/config_base/packages b/external/config/desktop/buster/environments/gnome/config_base/packages new file mode 100644 index 0000000..7ed5a81 --- /dev/null +++ b/external/config/desktop/buster/environments/gnome/config_base/packages @@ -0,0 +1,205 @@ +anacron +apt-config-auto-update +at-spi2-core +bubblewrap +cups +dbus-x11 +dictionaries-common +dmz-cursor-theme +evolution-data-server +evolution-data-server-common +fonts-freefont-ttf +fonts-urw-base35 +foomatic-db-compressed-ppds +gcr +gdebi +gdm3 +genisoimage +geoclue-2.0 +ghostscript +ghostscript-x +gir1.2-accountsservice-1.0 +gir1.2-atspi-2.0 +gir1.2-gck-1 +gir1.2-gcr-3 +gir1.2-gdesktopenums-3.0 +gir1.2-gdm-1.0 +gir1.2-geoclue-2.0 +gir1.2-gnomebluetooth-1.0 +gir1.2-gnomedesktop-3.0 +gir1.2-goa-1.0 +gir1.2-graphene-1.0 +gir1.2-gweather-3.0 +gir1.2-ibus-1.0 +gir1.2-json-1.0 +gir1.2-mutter-3 +gir1.2-nm-1.0 +gir1.2-nma-1.0 +gir1.2-polkit-1.0 +gir1.2-rsvg-2.0 +gir1.2-snapd-1 +gir1.2-soup-2.4 +gir1.2-upowerglib-1.0 +gjs +gnome-control-center +gnome-desktop3-data +gnome-keyring +gnome-menus +gnome-packagekit +gnome-session +gnome-session-bin +gnome-session-common +gnome-settings-daemon +gnome-settings-daemon-common +gnome-shell +gnome-shell-common +gnome-shell-extension-appindicator +gnome-shell-extension-desktop-icons +gnome-shell-extension-trash +gvfs-backends +gvfs-bin +hunspell-en-us +inputattach +libaccountsservice0 +libasound2 +libasound2-plugins +libaspell15 +libatk-adaptor +libcairo-gobject-perl +libcairo-perl +libcamel-1.2-62 +libcue2 +libdee-1.0-4 +libebackend-1.2-10 +libebook-1.2-19 +libebook-contacts-1.2-2 +libecal-1.2-19 +libedata-book-1.2-25 +libedata-cal-1.2-29 +libedataserver-1.2-23 +libedataserverui-1.2-2 +libenchant1c2a +libexempi8 +libexiv2-14 +libextutils-depends-perl +libextutils-pkgconfig-perl +libfontenc1 +libgck-1-0 +libgcr-base-3-1 +libgcr-ui-3-1 +libgdata22 +libgdata-common +libgdm1 +libgeoclue-2-0 +libgeocode-glib0 +libgexiv2-2 +libgjs0g +libglib-object-introspection-perl +libglib-perl +libglu1-mesa +libgnome-autoar-0-0 +libgnome-bluetooth13 +libgnome-desktop-3-17 +libgoa-1.0-0b +libgoa-1.0-common +libgraphene-1.0-0 +libgs9 +libgs9-common +libgsf-1-114 +libgsf-1-common +libgtk3-perl +libgweather-3-15 +libgweather-common +libgxps2 +libibus-1.0-5 +libical3 +libidn11 +libijs-0.35 +libimobiledevice6 +libjavascriptcoregtk-4.0-18 +libjbig2dec0 +libmutter-3-0 +libnautilus-extension1a +libnma0 +libnotify-bin +libpaper1 +libphonenumber7 +libplist3 +libpoppler-glib8 +libprotobuf17 +libpulsedsp +libsasl2-modules +libspeexdsp1 +libtext-iconv-perl +libtotem-plparser18 +libtotem-plparser-common +libtracker-control-2.0-0 +libtracker-miner-2.0-0 +libtracker-sparql-2.0-0 +libu2f-udev +libunwind8 +libupower-glib3 +libusbmuxd4 +libwebkit2gtk-4.0-37 +libxaw7 +libxfont2 +libxkbfile1 +libxmu6 +libxmuu1 +libxtst6 +libxxf86dga1 +libyelp0 +mutter +mutter-common +nautilus +nautilus-data +openprinting-ppds +p11-kit +p11-kit-modules +pavucontrol +pinentry-gnome3 +poppler-data +printer-driver-pnm2ppa +pulseaudio +pulseaudio-module-bluetooth +pulseaudio-utils +python3-click +python3-colorama +python3-dateutil +python3-debconf +python3-debian +python3-distutils +python3-distutils-extra +python3-yaml +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker +tracker-extract +tracker-miner-fs +upower +x11-apps +x11-session-utils +x11-utils +x11-xkb-utils +x11-xserver-utils +xarchiver +xdg-dbus-proxy +xdg-desktop-portal +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-base +xinit +xinput +xorg +xorg-docs-core +xserver-common +xserver-xorg +xserver-xorg-video-fbdev +xwayland +yelp +yelp-xsl +zenity +zenity-common diff --git a/external/config/desktop/buster/environments/gnome/debian/postinst b/external/config/desktop/buster/environments/gnome/debian/postinst new file mode 100644 index 0000000..810ba69 --- /dev/null +++ b/external/config/desktop/buster/environments/gnome/debian/postinst @@ -0,0 +1,44 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +# set wallpapper to orangepi + +keys=/etc/dconf/db/local.d/00-bg +locks=/etc/dconf/db/local.d/locks/background +profile=/etc/dconf/profile/user + +install -Dv /dev/null $keys +install -Dv /dev/null $locks +install -Dv /dev/null $profile + +echo "[org/gnome/desktop/background] +picture-uri='file:///usr/share/backgrounds/gnome/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF' + +[org/gnome/desktop/screensaver] +picture-uri='file:///usr/share/backgrounds/gnome/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF'" >> $keys + +echo "/org/gnome/desktop/background/picture-uri +/org/gnome/desktop/background/picture-options +/org/gnome/desktop/background/primary-color +/org/gnome/desktop/background/secondary-color + +/org/gnome/desktop/screensaver/picture-uri +/org/gnome/desktop/screensaver/picture-options +/org/gnome/desktop/screensaver/primary-color +/org/gnome/desktop/screensaver/secondary-color" >> $locks + +echo "user-db:user +system-db:local" >> $profile + +dconf update + +#sudo apt-get -y remove gnome-shell-extension-desktop-icons diff --git a/external/config/desktop/buster/environments/gnome/only_for b/external/config/desktop/buster/environments/gnome/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/buster/environments/gnome/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/buster/environments/gnome/orangepi/create_desktop_package.sh b/external/config/desktop/buster/environments/gnome/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..dfb4f87 --- /dev/null +++ b/external/config/desktop/buster/environments/gnome/orangepi/create_desktop_package.sh @@ -0,0 +1,32 @@ +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/gnome/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/gnome/ +mkdir -p "${destination}"/usr/share/gnome-background-properties +cat <<-EOF > "${destination}"/usr/share/gnome-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/gnome/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/gnome/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/buster/environments/gnome/support b/external/config/desktop/buster/environments/gnome/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/buster/environments/gnome/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/buster/environments/lxde/config_base/packages b/external/config/desktop/buster/environments/lxde/config_base/packages new file mode 100644 index 0000000..eba7567 --- /dev/null +++ b/external/config/desktop/buster/environments/lxde/config_base/packages @@ -0,0 +1,121 @@ +anacron +apt-xapian-index +blueman +bluez +bluez-cups +bluez-tools +brltty +bubblewrap +cifs-utils +cups +cups-bsd +cups-filters +dbus-x11 +dictionaries-common +doc-base +foomatic-db-compressed-ppds +gcr +gdebi +ghostscript-x +gnome-keyring +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hunspell-en-us +inputattach +keyutils +libatk-adaptor +libgail-common +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +liblouis-bin +liblouisutdml-bin +libmenu-cache3 +libmenu-cache-bin +libmenu-cache-doc +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +lightdm +lightdm-gtk-greeter +lightdm-gtk-greeter-settings +lxappearance +lxappearance-obconf +lxde +lxde-common +lxde-core +lxde-icon-theme +lxde-settings-daemon +lxdm +lxinput +lxlauncher +lxlock +lxmenu-data +lxmusic +lxpanel +lxpanel-data +lxpolkit +lxrandr +lxsession +lxsession-edit +lxsession-logout +lxtask +lxterminal +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn-gnome +network-manager-pptp +network-manager-vpnc +numix-gtk-theme +openbox-lxde-session +openprinting-ppds +orca +p11-kit +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +redshift +samba +smbclient +software-properties-common +software-properties-gtk +speech-dispatcher +spice-vdagent +synaptic +system-config-printer +system-config-printer-common +task-lxde-desktop +terminator +x11-apps +x11-xserver-utils +xarchiver +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-scalable +xinit +xorg-docs +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +zip diff --git a/external/config/desktop/buster/environments/lxde/debian/postinst b/external/config/desktop/buster/environments/lxde/debian/postinst new file mode 100644 index 0000000..d18b471 --- /dev/null +++ b/external/config/desktop/buster/environments/lxde/debian/postinst @@ -0,0 +1,5 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/buster/environments/lxde/orangepi/create_desktop_package.sh b/external/config/desktop/buster/environments/lxde/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..fa599e2 --- /dev/null +++ b/external/config/desktop/buster/environments/lxde/orangepi/create_desktop_package.sh @@ -0,0 +1,43 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ + +mkdir -p "${destination}"/usr/share/mate-background-properties +cat <<-EOF > "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF + +mkdir -p "${destination}"/usr/share/glib-2.0/schemas +cat <<-EOF > "${destination}"/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override +[org.gnome.desktop.background] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +show-desktop-icons=true +EOF diff --git a/external/config/desktop/buster/environments/lxde/support b/external/config/desktop/buster/environments/lxde/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/buster/environments/lxde/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/buster/environments/mate/config_base/packages b/external/config/desktop/buster/environments/mate/config_base/packages new file mode 100644 index 0000000..7921936 --- /dev/null +++ b/external/config/desktop/buster/environments/mate/config_base/packages @@ -0,0 +1,113 @@ +apt-config-auto-update +apt-xapian-index +blueman +bluez +bluez-tools +cifs-utils +dbus-x11 +debian-mate-default-settings +dictionaries-common +gcr +gdebi +gnome-keyring +gnome-orca +gnome-packagekit +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +gvfs-fuse +hunspell-en-us +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +libpam-gnome-keyring +lightdm +lightdm-gtk-greeter-settings +mate-applet-appmenu +mate-applet-brisk-menu +mate-applets +mate-applets-common +mate-backgrounds +mate-calc +mate-calc-common +mate-common +mate-control-center +mate-control-center-common +mate-core +mate-desktop +mate-desktop-common +mate-desktop-environment +mate-desktop-environment-core +mate-desktop-environment-extra +mate-desktop-environment-extras +mate-dock-applet +mate-equake-applet +mate-icon-theme +mate-icon-theme-faenza +mate-indicator-applet +mate-indicator-applet-common +mate-media +mate-media-common +mate-menu +mate-menus +mate-netbook +mate-netbook-common +mate-notification-daemon +mate-notification-daemon-common +mate-panel +mate-panel-common +mate-polkit +mate-polkit-bin +mate-polkit-common +mate-power-manager +mate-power-manager-common +mate-screensaver +mate-screensaver-common +mate-sensors-applet +mate-sensors-applet-common +mate-session-manager +mate-settings-daemon +mate-settings-daemon-common +mate-settings-daemon-dev +mate-sntray-plugin +mate-system-monitor +mate-system-monitor-common +mate-terminal +mate-terminal-common +mate-themes +mate-tweak +mate-user-guide +mate-user-share +mate-user-share-common +mate-utils +mate-utils-common +mate-window-applets-common +mate-window-buttons-applet +mate-window-menu-applet +mate-window-title-applet +network-manager-gnome +numix-gtk-theme +p11-kit +pasystray +pavucontrol +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +smbclient +software-properties-common +synaptic +system-config-printer +system-config-printer-common +tracker +tracker-extract +tracker-miner-fs +x11-xserver-utils +xarchiver +xfonts-base +xinit +xserver-xorg +xserver-xorg-video-fbdev diff --git a/external/config/desktop/buster/environments/mate/config_base/packages.uninstall b/external/config/desktop/buster/environments/mate/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/buster/environments/mate/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/buster/environments/mate/debian/postinst b/external/config/desktop/buster/environments/mate/debian/postinst new file mode 100644 index 0000000..d18b471 --- /dev/null +++ b/external/config/desktop/buster/environments/mate/debian/postinst @@ -0,0 +1,5 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/buster/environments/mate/orangepi/create_desktop_package.sh b/external/config/desktop/buster/environments/mate/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..fa599e2 --- /dev/null +++ b/external/config/desktop/buster/environments/mate/orangepi/create_desktop_package.sh @@ -0,0 +1,43 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ + +mkdir -p "${destination}"/usr/share/mate-background-properties +cat <<-EOF > "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF + +mkdir -p "${destination}"/usr/share/glib-2.0/schemas +cat <<-EOF > "${destination}"/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override +[org.gnome.desktop.background] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +show-desktop-icons=true +EOF diff --git a/external/config/desktop/buster/environments/mate/support b/external/config/desktop/buster/environments/mate/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/buster/environments/mate/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/buster/environments/xfce/config_base/packages b/external/config/desktop/buster/environments/xfce/config_base/packages new file mode 100644 index 0000000..02d9360 --- /dev/null +++ b/external/config/desktop/buster/environments/xfce/config_base/packages @@ -0,0 +1,132 @@ +anacron +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gnome-font-viewer +gnome-orca +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +inputattach +keyutils +laptop-detect +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lxtask +mesa-utils +mousepad +mousetweaks +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +terminator +thunar-volman +ttf-ubuntu-font-family +update-inetd +viewnior +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/buster/environments/xfce/config_base/packages.uninstall b/external/config/desktop/buster/environments/xfce/config_base/packages.uninstall new file mode 100644 index 0000000..4b622d4 --- /dev/null +++ b/external/config/desktop/buster/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 diff --git a/external/config/desktop/buster/environments/xfce/debian/postinst b/external/config/desktop/buster/environments/xfce/debian/postinst new file mode 100644 index 0000000..1547df8 --- /dev/null +++ b/external/config/desktop/buster/environments/xfce/debian/postinst @@ -0,0 +1,18 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Adjust menu +if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/buster/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/buster/environments/xfce/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..dda7225 --- /dev/null +++ b/external/config/desktop/buster/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,22 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/buster/environments/xfce/support b/external/config/desktop/buster/environments/xfce/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/buster/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/focal/appgroups/3dsupport/packages b/external/config/desktop/focal/appgroups/3dsupport/packages new file mode 100644 index 0000000..b6400d8 --- /dev/null +++ b/external/config/desktop/focal/appgroups/3dsupport/packages @@ -0,0 +1,3 @@ +glmark2 +mesa-utils +mesa-utils-extra diff --git a/external/config/desktop/focal/appgroups/3dsupport/sources/apt/oibaf.source b/external/config/desktop/focal/appgroups/3dsupport/sources/apt/oibaf.source new file mode 100644 index 0000000..2e6ad7c --- /dev/null +++ b/external/config/desktop/focal/appgroups/3dsupport/sources/apt/oibaf.source @@ -0,0 +1 @@ +ppa:oibaf/graphics-drivers \ No newline at end of file diff --git a/external/config/desktop/focal/appgroups/browsers/debian/postinst b/external/config/desktop/focal/appgroups/browsers/debian/postinst new file mode 100644 index 0000000..96dc4f1 --- /dev/null +++ b/external/config/desktop/focal/appgroups/browsers/debian/postinst @@ -0,0 +1,14 @@ +if [ -f /etc/chromium-browser/default ]; then +cat > /etc/chromium-browser/default << DELIM +# Options to pass to chromium-browser +CHROMIUM_FLAGS="--use-gl=egl --ignore-gpu-blocklist --enable-accelerated-video-decode --enable-zero-copy --enable-gpu-rasterization --enable-oop-rasterization --enable-pinch --flag-switches-begin --flag-switches-end --origin-trial-disabled-features=SecurePaymentConfirmation" +DELIM +fi + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/focal/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/focal/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/focal/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/focal/appgroups/browsers/packages b/external/config/desktop/focal/appgroups/browsers/packages new file mode 100644 index 0000000..dbfb8f9 --- /dev/null +++ b/external/config/desktop/focal/appgroups/browsers/packages @@ -0,0 +1 @@ +firefox diff --git a/external/config/desktop/focal/appgroups/browsers/sources/apt/chromium-browser.source b/external/config/desktop/focal/appgroups/browsers/sources/apt/chromium-browser.source new file mode 100644 index 0000000..428bf80 --- /dev/null +++ b/external/config/desktop/focal/appgroups/browsers/sources/apt/chromium-browser.source @@ -0,0 +1 @@ +ppa:saiarcot895/chromium-dev diff --git a/external/config/desktop/focal/appgroups/chat/packages b/external/config/desktop/focal/appgroups/chat/packages new file mode 100644 index 0000000..7503620 --- /dev/null +++ b/external/config/desktop/focal/appgroups/chat/packages @@ -0,0 +1 @@ +hexchat diff --git a/external/config/desktop/focal/appgroups/desktop_tools/packages b/external/config/desktop/focal/appgroups/desktop_tools/packages new file mode 100644 index 0000000..23f24bf --- /dev/null +++ b/external/config/desktop/focal/appgroups/desktop_tools/packages @@ -0,0 +1,4 @@ +bleachbit +fbi +gparted +kazam diff --git a/external/config/desktop/focal/appgroups/editors/debian/postinst b/external/config/desktop/focal/appgroups/editors/debian/postinst new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/focal/appgroups/editors/packages b/external/config/desktop/focal/appgroups/editors/packages new file mode 100644 index 0000000..8b52c4f --- /dev/null +++ b/external/config/desktop/focal/appgroups/editors/packages @@ -0,0 +1,3 @@ +emacs +notepadqq +vim diff --git a/external/config/desktop/focal/appgroups/email/packages b/external/config/desktop/focal/appgroups/email/packages new file mode 100644 index 0000000..84daedd --- /dev/null +++ b/external/config/desktop/focal/appgroups/email/packages @@ -0,0 +1 @@ +thunderbird diff --git a/external/config/desktop/focal/appgroups/emulators/only_for b/external/config/desktop/focal/appgroups/emulators/only_for new file mode 100755 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/appgroups/emulators/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/appgroups/emulators/packages b/external/config/desktop/focal/appgroups/emulators/packages new file mode 100755 index 0000000..d248784 --- /dev/null +++ b/external/config/desktop/focal/appgroups/emulators/packages @@ -0,0 +1 @@ +box64 diff --git a/external/config/desktop/focal/appgroups/emulators/sources/apt/box64.source b/external/config/desktop/focal/appgroups/emulators/sources/apt/box64.source new file mode 100755 index 0000000..20af820 --- /dev/null +++ b/external/config/desktop/focal/appgroups/emulators/sources/apt/box64.source @@ -0,0 +1 @@ +deb http://ryanfortner.github.io/box64-debs/debian ./ diff --git a/external/config/desktop/focal/appgroups/emulators/sources/apt/box64.source.gpg b/external/config/desktop/focal/appgroups/emulators/sources/apt/box64.source.gpg new file mode 100755 index 0000000..56b6eb1 --- /dev/null +++ b/external/config/desktop/focal/appgroups/emulators/sources/apt/box64.source.gpg @@ -0,0 +1,51 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGDrWFABEADCHlJTHb7+qdUNJYWwiTxtYr9gd3czgjWSTtijDe6ZYwm/znPz +azu345aTKCKRuAlTy4wkuC2sSNxqCprPjcOtPEonB9DgxWfnuu1gEew9QTU2uu1o +qvoN0tHzkCEPt1RH8adco1uFpMXHmEbcgXrsxS4HIAmuXqIA8OsO9pJeWUNx7cHI +5Qm4dqyjWIWPGii88B4gjkuRLUjABjGcm+7mQ6FAUkuxYo/yifZhqJpuslXGyB3S +Jnl6G+pmxTb/Q2DIcdQODVk0xF6cg3Kx2MwTo8Lm1zCOgRFYjXLmlb+eYJjVF56L +ZVhrqslfIyQlgWmwJmr9Jr/7CLfeDLacq0k0G1710sGZYlzWQtXnm4Rw0WTYB1LX +M9FNkbdk4jROjdk7uU7xkWZwf/DHpB28oOo2MZ/wvPv4NtpMgtALZTFaNL4k4fXv +OLfNkkXscQxsYAnZx/0NvR0A0ewcrh74zTr3qCQylHmqY4p31VcZE3oRvIgQXqZz +8jFJ4vcm2VdwZ7fm3oeW/C/hh2gaOKvP7yjzYdczdjB1AtdC81w5HPXOXhReWlLz +6Ardl7w4SdFq/2kN4VfqK+H6KctDaGYfZUiyunBIyY5vj+8jCP8MolbvP8X/yZDF +uUppK6V4B2RjxrbXQC2/ETdiLyPFi5OGZjjnjq/+V3SGnR9cdlahCTRrPQARAQAB +tCNSeWFuIEZvcnRuZXIgPHBpbmV0bWVkaWFAZ21haWwuY29tPokCTgQTAQoAOBYh +BN+aG4Ujwy7u/yps2ndZ+h2f7KyeBQJg61hQAhsDBQsJCAcCBhUKCQgLAgQWAgMB +Ah4BAheAAAoJEHdZ+h2f7KyeJDMP/2hjyH+vrXxNRXbjOT4VMxQmLIFlMSsap1F9 +q5R/u2HJlB/TMkwdiP99DFLSfan6IlQ695GFZW24jEY9qbuOtOY4LFLTgfOITsh9 +zEbcVGFIFYLcNWG2xbKChh6ZTx8Q1CBAE3mpudmgn6MP21F7gHuAAG1CfEmZQ90M +vrDfQEhDTFOx13/gGjDjFYl267nciQaiTHM5tPOSzvuVnhgP3s4w0Unokt62ueaS +9IlQmaoVJiCyxgupLOBygqJXYZD+O+ZAUvHGurqSyDzxUAY+AwTs8mHCAiqyojMU +k+YAfMgKYdwkjl63+L/0L/IDccu1l3BVKtyiuwoQn7NIGaPXo72JJz6L0Fgsd8zW +skuk6jcXJWZJNI2Lw7YFVSpySqyPFG951gdIfKz+0erUKHduzLsMH+DjCVvjqCxN +Cp+/X63YloVJqSUtPgmvcIuYmr0KlT1LI7XDLUmuS9pe4ALtR653eRiCP5g/Ti1J +c86INbtIiLWimK1t203Cdnc/4tJxOYMZH5MpM3KFtUO8qXjsLlWe+/q9AsSFAnnA +oDqdymWIj4YEUqCf38uJ5dCiJuzZg25coqxOjsrS8sQIJU2yR3y8adjZ7DDlI0ue +RW47ZTtiwagLS0NItNA1r1Sh3TX8rKcF3jYyNwuJdJm7mrm5mH4t5nOiIDGzzimW +4pw9oTvTuQINBGDrWFABEADVgvlYtACNT8nKlqDod7s1fRsyiHOIp3XaDmoJcG3k +8JICTtX06ixtzoax3B4bvqJiWE9v5PjK87Ad4rSl1ixZdCDg7Snt4xJr30fVeAIj +HOVFiJoyzj7gnI9lZTM67IqdqurqFv1RDGg7V40wkaeROZj0fVff6DB6oCvDxSOR +ytkFrWiFEvs0eg1djzBBZgyf1SnPXus/ABfq04ixc+R/JYZNwSpygStU/4ZRvxbe +cvqTEzjeqCLuXjJg79enmXHFCo1Aixc5Uyra1t/0/ETAnpWzm4c4wp4KUDOrF+7i +3DMX4dmhme5mJFXjTamr9ERS4nZgl8OQ/50AXy+JOeZ3D73Xwr8xeFzpM3SeXZpX +0E0eiq6DTpoqz/kG7EIs/TIdG2J2ya4VRujFbzAerEu9NyPPWSpWoETEjvAiyU47 +AUOwA45qBcGN06vVhihG5E82qD3DpEtlCMVN9TGogMU2G+rf8pGtCYpz12k0vgQ/ +xfD6qqDN2x2+WG3yuFPMGxgSAkaWumGtDa2qDCaNvMJ9v5dZYXgVn1h/XVJxE5FX +N3HdXCn9ZREFJZxqeEzWInDK/W0DrKjFgQqZkx3YVfPF3ytwJcIj89V0Ggk5F/ak +2VBgVSuTjSnR6sviEHXnEzl7oPY0I01NQE3NJTCudDsUk40DfwQqJ6+NMYMeR3su +kwARAQABiQI2BBgBCgAgFiEE35obhSPDLu7/Kmzad1n6HZ/srJ4FAmDrWFACGwwA +CgkQd1n6HZ/srJ5ycxAAuxQ9F9T16B42CRFKbGZjnkN41Lq5gV1197YO4iDS4ybG +9HmphuJx5i55dRnSY/WdXC1bT+YEAmtEf9RoVRKmM7lx06Ne6IX7bJWxngVR7JSr +9wLEM08YiryqJOuV7sLM6Lj+Z6khcfbbgqT7fkgTUwN1mvmtYzJCGFrW67WwLhVa +zbFunRA4KycFPJcyoSoZ9NacWy6YhoMeLvtmBHkyup0aTyWdLql0TUaDGOwbekSM +shCHThZ4SWZSr0Qn8S0vo9Fa0Sx+RzGCPh/BYkiR41L/dPdd65cMuA9Qg9ro1ES9 +Rn3wnnEVsPaFCuYBsWp/wM3JnZM7zavbqkZyC/WEdhaRZSyIfNFlXoF5b7Rb4Fzy +KOmoS2slM6mDWHIjmfNc12v1yy38Aa68djGDEleqex526+skAf7EggR457x/IfZQ +iKz06lr1x7+OeRb9e/yW0thov1BRURLr2siCPMMKHAa5eteLtaooBtN1WAmPCfwS +U3EBiKPAB/JOBcHmqEJhVV0rktCS+k4neAii9mtIvJ2wyMDNjF6E8SrrG9NKg4EH +Rrp9864fzCw4zRfEUtNz5QhmuJM+JiTUATftCtGghHUmt19GDEHF3IeIYMnxatcr +B1VZmw6tWcgaqflWTOAwZJNldyx7y4WNs2HbQfNeAGE0M5xn6YAGRmBBh4prTtw= +=yWSi +-----END PGP PUBLIC KEY BLOCK----- diff --git a/external/config/desktop/focal/appgroups/internet/packages b/external/config/desktop/focal/appgroups/internet/packages new file mode 100644 index 0000000..a2c5a91 --- /dev/null +++ b/external/config/desktop/focal/appgroups/internet/packages @@ -0,0 +1,4 @@ +filezilla +putty +transmission +transmission-remote-gtk diff --git a/external/config/desktop/focal/appgroups/multimedia/packages b/external/config/desktop/focal/appgroups/multimedia/packages new file mode 100644 index 0000000..7be8ad7 --- /dev/null +++ b/external/config/desktop/focal/appgroups/multimedia/packages @@ -0,0 +1,3 @@ +celluloid +gimp +mpv diff --git a/external/config/desktop/focal/appgroups/office/packages b/external/config/desktop/focal/appgroups/office/packages new file mode 100644 index 0000000..25e91f3 --- /dev/null +++ b/external/config/desktop/focal/appgroups/office/packages @@ -0,0 +1,3 @@ +libreoffice +libreoffice-style-elementary +simple-scan diff --git a/external/config/desktop/focal/appgroups/programming/custom/desktops/cinnamon/packages b/external/config/desktop/focal/appgroups/programming/custom/desktops/cinnamon/packages new file mode 100644 index 0000000..35db926 --- /dev/null +++ b/external/config/desktop/focal/appgroups/programming/custom/desktops/cinnamon/packages @@ -0,0 +1,2 @@ +gnome-builder +sysprof diff --git a/external/config/desktop/focal/appgroups/programming/custom/desktops/gnome/packages b/external/config/desktop/focal/appgroups/programming/custom/desktops/gnome/packages new file mode 100644 index 0000000..96c54c3 --- /dev/null +++ b/external/config/desktop/focal/appgroups/programming/custom/desktops/gnome/packages @@ -0,0 +1,2 @@ +geany +gnome-builder diff --git a/external/config/desktop/focal/appgroups/programming/custom/desktops/kde/packages b/external/config/desktop/focal/appgroups/programming/custom/desktops/kde/packages new file mode 100644 index 0000000..5988f0d --- /dev/null +++ b/external/config/desktop/focal/appgroups/programming/custom/desktops/kde/packages @@ -0,0 +1,2 @@ +kdevelop +qtcreator diff --git a/external/config/desktop/focal/appgroups/programming/packages b/external/config/desktop/focal/appgroups/programming/packages new file mode 100644 index 0000000..3cf275b --- /dev/null +++ b/external/config/desktop/focal/appgroups/programming/packages @@ -0,0 +1,6 @@ +build-essential +clang +codium +geany +meld +regexxer diff --git a/external/config/desktop/focal/appgroups/programming/sources/apt/vscodium.source b/external/config/desktop/focal/appgroups/programming/sources/apt/vscodium.source new file mode 100755 index 0000000..0eb625d --- /dev/null +++ b/external/config/desktop/focal/appgroups/programming/sources/apt/vscodium.source @@ -0,0 +1 @@ +deb http://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main diff --git a/external/config/desktop/focal/appgroups/programming/sources/apt/vscodium.source.gpg b/external/config/desktop/focal/appgroups/programming/sources/apt/vscodium.source.gpg new file mode 100755 index 0000000..d4fb5f7 --- /dev/null +++ b/external/config/desktop/focal/appgroups/programming/sources/apt/vscodium.source.gpg @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFu8c8sBEACrPcX4UB0rGFObGzIpa3fqJy0K//W5XENNBrGlk6DS68SwkSza +QFoD+ZoGiwGZWy+X5m2bm6A0j8ff61uKLZFx4turikggdqey6RL3NIQOmhzbz9jc +90ZtVG3W2VHwP1Oy2sITJBD1UdCtnRR7ONfoLVJbavPrjHL0VEJqV6kF7ki45DAK +yVbEGjsg668l8FmfMIYyoqV8HQ+JosXQ6ItOH2QlGwvD5RvBmIRzIXSS159+UHBj +jrk81Pb1RLWUafoh8Geh4VZHQrvqkLmds/74KZQg47zDr1atKeIRe/p7UPZIEJsr +puOQP+4yfW8CKN/du62mO37xyJBcQpdsk+27/AAbpluwwzfrRAZcI9wqlmE7CRie +tARI3eLA/BVeLm0U5Jxemc1asTAptQTij9BvzFfZcpkwK+AcVmaicQhJ9iaa8bQ2 +oTTE5keewHgVdun+XfeMPPuRcF5QxeVK9dZQVI3nSObOXrehulkYXusMQ4vq8bh7 +GktI5n1O2qehnSn/Is7kdLBWDy8xGlgYEWe9oStQ5NSXo4PR7YWDzPs5aXBz9LOa +zthJqM1Ah41q5/rSgfhM3e+vXtF3M8phLoJTE5mlb370XVH1ZLNbXVvIuHO0L+Lh +ruZc/tREFWThOiS+FIGv/MDs4DieWEwr9+/598pFERo7cJEo5AZNgPy8SQARAQAB +tCRQYXZsbyBSdWR5aSA8cGF1bGNhcnJvdHlAcmlzZXVwLm5ldD6JAk4EEwEIADgW +IQQTAt5gIxiJ/h66ytxUZ4z3WieNnAUCW7xzywIbAwULCQgHAgYVCgkICwIEFgID +AQIeAQIXgAAKCRBUZ4z3WieNnPDyD/oCSpzl4uua0r/T4cL0rEhHVg82HounlTs2 +BxI0ZhJpjdqIE2ytIFiwdV47yAkt04ow0zEBHbZQldvixfsM3tDYrC6iiC4pRMMc +W6oVGf18r8nKKRmYTaOSPWL5yhLgO/IkQ/kCBsu3Wf0bp3GbHQ4wny+rmP745oG9 +npGPPW7EiUcFYPIM/YX2YqSH/FOGcMOwlp1QEvVqypQqaogyUmDRP+6bpKYMuq/c +GuPxHuwPmS7a3Zd6ybAtYBNumC/lNYbfxAZA1NK4WViVGB/P5GBWC0HSfLPsBu7D +/GqoqYCDTYYtSpnw2kUpkGWqOaWZc9S5Jvp26Hw+VoVGBdJUe7s7qJyeNmdjM/cR +/dNY9+fW3w9zWgJZcXTnScmpi0vzA7BLmFfsphPBZ7J1Sc+N72uV/W9A70yyNhSw +DQ20/4D2AHNozmq881LhBlOIw24jb0LlbrA7CFoR10zkpXsS/Vh1EWReV1z4zJDv +H1SKUzXaOJUpqqW0EpblEpH4qg5hknnnW4XjvlWZO/ICkKTi0LxXK9Lmcbhtzg9t +Wh7bfDXHXoQYS4QooJbzUhAHwXvQp03R0qu6UhEVhO42y5PVQ/+18FlhgBd+zP1Q +7Urb93f+7YbSa8e34ANcVvJZc7gP2oRTuVyKVjO/Q9l6+Qzg9DTFVPGYLvYJKIpK +odUkTbb/ArkCDQRbvHPLARAA3zMxF1XX4tLaz/0U7p381AXmtMA2L63mRQ3YGZxg +fVxyVx6FdLujxJHytIGnLb9FYQZkxjYyMVc8/7ukrPUTHDUHm2ab4mG0SvhDI3nx +2qeXE2dYMkpLoBqvFLekFAU129w9BLm9lbHfN+JbbdMmoqlyiufuPM6gz0gBV6ce +oXUtu8Q2/ixshSfvcdHx21ZD2HuNqSyworbzkA+0B0F51QRp1tqYJ7wQm3n82rQ+ +YFS97Un+7VWgJrX4aofUxRiDx0VHIYkEN8QcDZTQywT4zkj6tDMyKEp40axvZ6zM +AlaTI1GVrGMUHH7bnZXiF2ZyKHOF6XjTuEfotHXm8fzEHLdhtdUxiQ4+GK5ajQN2 +ay/v5JEtsc3FSAmjfTW9r6jEAiDn5TbeKHtLpeGmtPqvgK/Nzo5rRRx0NgymymeF +q7Ir4ATu9x8KKYXa/tFd2Qe8rtxNqhYjUh+W7FpMMNXYa18G+PbwNqpEGMdp51rS +9/Lq2GSYcuCV/jD2QbySUX5wHe9zDNiOuovBFhJZS8H2OGl6aep6zEpV/Q7FcWEG +9fz4RHADSGB6RFFI8hyV0/YaVU9rB4fAOZzybuJ4DSadOAsVVfkk2WdnUM6x1z24 +XhRdakH+ekGDg+nqs8wUc4u4ouo7dPTPaxbrUas5gdzjbtwoYXoKaIUnisPRranz +EjsAEQEAAYkCNgQYAQgAIBYhBBMC3mAjGIn+HrrK3FRnjPdaJ42cBQJbvHPLAhsM +AAoJEFRnjPdaJ42cEq8QAKJ1YUzQsgzUWSzkPgSZJwOAujWkDdhw+YbNvjHAgRZA +DrNbIyIYkJ/IevubOnteJgwGP/6qaMJwemM+VJ3e/YHvcvAmIilmH33tnnMRqWsj +xqG021SuX3FGdMXR7WwINZaToh+Lqaj4YXpanjPzGMGKZlzaSdj6avm7KT3HGHjO +Gk/nz0rAsqXfuzQBkHZ+JozUMqrh30+POcvkyFhqmTQ9juECFzOtegbEWYdDFBMA +tig1whBccebZ0W+Sva+e1AKktwHNtweaofCg8zQ39Nx1KOz9FoH4B2QF+dYU/yMQ +BpPYTRQPfbaf2/t5JJaoplWrE2gP+JS8ET11J7U4xtzqs7QprcCurTZv42PjwPKu +Hc8uwE1VaeX+d7zRGXD9ooR+u+BWKiwxD9p54/QHu/qh/x/4evrETTIZGsheojgm +srMYT2mW1hLFcOANAgvxuIm+O51+XYviQCGPqg8J2jm5zmxMNwEhVx0ObYcnJqve +klJniYNw9Ja9gnXxXWycChhmGM/QFLE0yrN7di7oDeN/JUhPPgppCken/xFihoxz +hlNM8vyJMQiddIBiEcz0zcAbbT74+qFJv9KRsfWAU0MEy3a66H/hybEJu140qTNw +d7e/dbqns8bDX1BP/x5/QKfxbZNoH2QWmCdv/b5dJ97OXFBtPM/VnOYaaFG5y2gX +=LCWI +-----END PGP PUBLIC KEY BLOCK----- + diff --git a/external/config/desktop/focal/appgroups/remote_desktop/packages b/external/config/desktop/focal/appgroups/remote_desktop/packages new file mode 100644 index 0000000..025a2f1 --- /dev/null +++ b/external/config/desktop/focal/appgroups/remote_desktop/packages @@ -0,0 +1 @@ +remmina diff --git a/external/config/desktop/focal/environments/budgie/config_base/packages b/external/config/desktop/focal/environments/budgie/config_base/packages new file mode 100644 index 0000000..420e799 --- /dev/null +++ b/external/config/desktop/focal/environments/budgie/config_base/packages @@ -0,0 +1,199 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +budgie-app-launcher-applet +budgie-applications-menu-applet +budgie-appmenu-applet +budgie-brightness-controller-applet +budgie-clockworks-applet +budgie-countdown-applet +budgie-desktop +budgie-desktop-doc +budgie-desktop-environment +budgie-dropby-applet +budgie-extras-common +budgie-extras-daemon +budgie-fuzzyclock-applet +budgie-hotcorners-applet +budgie-indicator-applet +budgie-kangaroo-applet +budgie-keyboard-autoswitch-applet +budgie-network-manager-applet +budgie-previews +budgie-previews-applet +budgie-quickchar +budgie-quicknote-applet +budgie-recentlyused-applet +budgie-rotation-lock-applet +budgie-showtime-applet +budgie-sntray-plugin +budgie-takeabreak-applet +budgie-trash-applet +budgie-visualspace-applet +budgie-wallpapers-focal +budgie-wallstreet +budgie-weathershow-applet +budgie-welcome +budgie-window-mover-applet +budgie-window-shuffler +budgie-workspace-overview-applet +budgie-workspace-stopwatch-applet +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-noto-mono +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-orca +gnome-screenshot +gnome-tweak-tool +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libcvc0 +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libplank1 +libplank-common +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +mesa-utils +mousepad +mousetweaks +nemo +nemo-data +nemo-fileroller +nemo-font-manager +nemo-gtkhash +network-manager-config-connectivity-ubuntu +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +plank +policykit-1 +policykit-1-gnome +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker-extract +tracker-miner-fs +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/budgie/config_base/packages.uninstall b/external/config/desktop/focal/environments/budgie/config_base/packages.uninstall new file mode 100644 index 0000000..cee3373 --- /dev/null +++ b/external/config/desktop/focal/environments/budgie/config_base/packages.uninstall @@ -0,0 +1,2 @@ +gdm3 +tilix diff --git a/external/config/desktop/focal/environments/budgie/debian/postinst b/external/config/desktop/focal/environments/budgie/debian/postinst new file mode 100755 index 0000000..e4210ef --- /dev/null +++ b/external/config/desktop/focal/environments/budgie/debian/postinst @@ -0,0 +1,85 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +#if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/orangepi-4k-purplepunk-gauss.jpg/g' /etc/lightdm/slick-greeter.conf; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +##dconf desktop settings +keys=/etc/dconf/db/local.d/00-desktop +profile=/etc/dconf/profile/user + +install -Dv /dev/null $keys +install -Dv /dev/null $profile + +# gather dconf settings +# deconf dump org/nemo/ > nemo_backup +# deconf dump org/budgie/ > budgie_desktop_backup + +echo "[org/nemo/desktop] +desktop-layout='true::false' +font='Noto Sans UI 11' + +[org/nemo/list-view] +default-visible-columns=['name', 'size', 'type', 'date_modified', 'owner', 'permissions'] + +[org/nemo/preferences] +quick-renames-with-pause-in-between=true +show-advanced-permissions=true +show-compact-view-icon-toolbar=false +show-full-path-titles=true +show-hidden-files=true +show-home-icon-toolbar=true +show-icon-view-icon-toolbar=false +show-image-thumbnails='never' +show-list-view-icon-toolbar=false +show-new-folder-icon-toolbar=true +show-open-in-terminal-toolbar=true + +[org/nemo/window-state] +geometry='800x550+550+244' +maximized=false +sidebar-bookmark-breakpoint=5 + +[org/gnome/desktop/background] +color-shading-type='solid' +picture-options='stretched' +picture-uri='file:////usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +primary-color='#008094' + +[org/gnome/desktop/interface] +cursor-theme='DMZ-White' +document-font-name='Noto Sans UI 11' +font-name='Noto Sans UI 11' +gtk-im-module='gtk-im-context-simple' +gtk-theme='Numix' +icon-theme='LoginIcons' +monospace-font-name='Noto Mono 11' +toolkit-accessibility=false + +[org/gnome/desktop/screensaver] +picture-uri='file:///usr/share/backgrounds/orangepi-lightdm/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg' + +[org/cinnamon/desktop/applications/terminal] +exec='/usr/bin/terminator' + +[org/cinnamon/desktop/default-applications/terminal] +exec='/usr/bin/terminator' + +[org/gnome/desktop/wm/preferences] +button-layout='appmenu:minimize,maximize,close' +num-workspaces=2 +theme='Plata-Compact' +titlebar-font='Noto Sans UI Bold 11' + +[org/ubuntubudgie/budgie-wpreviews] +allworkspaces=true +enable-previews=true" >> $keys + +echo "user-db:user +system-db:local" >> $profile + +dconf update + +#re-compile schemas +if [ -d /usr/share/glib-2.0/schemas ]; then glib-compile-schemas /usr/share/glib-2.0/schemas; fi diff --git a/external/config/desktop/focal/environments/budgie/only_for b/external/config/desktop/focal/environments/budgie/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/budgie/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/budgie/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/budgie/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..e94a936 --- /dev/null +++ b/external/config/desktop/focal/environments/budgie/orangepi/create_desktop_package.sh @@ -0,0 +1,164 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +#generate wallpaper list for background changer +mkdir -p "${destination}"/usr/share/cinnamon-background-properties +cat < "${destination}"/usr/share/cinnamon-background-properties/orangepi.xml + + + + + OrangePi black-pyscho + /usr/share/backgrounds/orangepi/orangepi-4k-black-psycho.jpg + zoom + #ffffff + #000000 + + + OrangePi bluie-circle + /usr/share/backgrounds/orangepi/orangepi-4k-blue-circle.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-monday + /usr/share/backgrounds/orangepi/orangepi-4k-blue-monday.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-blue-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi gray-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-gray.jpg + zoom + #ffffff + #000000 + + + OrangePi green-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi green-retro + /usr/share/backgrounds/orangepi/orangepi-4k-green-retro.jpg + zoom + #ffffff + #000000 + + + OrangePi green-wall-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi 4k-neglated + /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg + zoom + #ffffff + #000000 + + + OrangePi neon-gray-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-neon-gray-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi plastic-love + /usr/share/backgrounds/orangepi/orangepi-4k-plastic-love.jpg + zoom + #ffffff + #000000 + + + OrangePi purple-penguine + /usr/share/backgrounds/orangepi/orangepi-4k-purple-penguine.jpg + zoom + #ffffff + #000000 + + + OrangePi purplepunk-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-purplepunk.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin-dark + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin-dark.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi uc + /usr/share/backgrounds/orangepi/orangepi-full-under-construction-3840-2160.jpg + zoom + #ffffff + #000000 + + + OrangePi clear + /usr/share/backgrounds/orangepi/OrangePi-clear-rounded-bakcground-3840-2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/focal/environments/budgie/support b/external/config/desktop/focal/environments/budgie/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/budgie/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/cinnamon/config_base/packages b/external/config/desktop/focal/environments/cinnamon/config_base/packages new file mode 100644 index 0000000..f5db6dc --- /dev/null +++ b/external/config/desktop/focal/environments/cinnamon/config_base/packages @@ -0,0 +1,186 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cinnamon +cinnamon-common +cinnamon-control-center +cinnamon-control-center-data +cinnamon-core +cinnamon-desktop-data +cinnamon-screensaver +cinnamon-session +cinnamon-session-common +cinnamon-settings-daemon +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gir1.2-cinnamondesktop-3.0 +gir1.2-cmenu-3.0 +gir1.2-cvc-1.0 +gnome-orca +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libcinnamon-desktop4 +libcinnamon-menu-3-0 +libcscreensaver0 +libcvc0 +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mesa-utils +mousepad +mousetweaks +nemo +nemo-data +nemo-fileroller +nemo-font-manager +nemo-gtkhash +network-manager-config-connectivity-ubuntu +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +policykit-1 +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/cinnamon/config_base/packages.uninstall b/external/config/desktop/focal/environments/cinnamon/config_base/packages.uninstall new file mode 100644 index 0000000..09eac11 --- /dev/null +++ b/external/config/desktop/focal/environments/cinnamon/config_base/packages.uninstall @@ -0,0 +1,3 @@ +gdm3 +gnome-software +gnome-keyring diff --git a/external/config/desktop/focal/environments/cinnamon/debian/postinst b/external/config/desktop/focal/environments/cinnamon/debian/postinst new file mode 100755 index 0000000..ecc1139 --- /dev/null +++ b/external/config/desktop/focal/environments/cinnamon/debian/postinst @@ -0,0 +1,134 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +#if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/orangepi-4k-neon-gray-penguin-gauss.jpg/g' /etc/lightdm/slick-greeter.conf; fi + +# disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +##dconf desktop settings +keys=/etc/dconf/db/local.d/00-desktop +profile=/etc/dconf/profile/user + +install -Dv /dev/null $keys +install -Dv /dev/null $profile + +# gather dconf settings +# deconf dump org/nemo/ > nemo_backup +# deconf dump org/cinnamon/ > cinnamon_desktop_backup + +echo "[org/nemo/list-view] +default-visible-columns=['name', 'size', 'type', 'date_modified', 'owner', 'permissions'] + +[org/nemo/preferences] +quick-renames-with-pause-in-between=true +show-advanced-permissions=true +show-compact-view-icon-toolbar=false +show-full-path-titles=true +show-hidden-files=true +show-home-icon-toolbar=true +show-icon-view-icon-toolbar=false +show-image-thumbnails='never' +show-list-view-icon-toolbar=false +show-new-folder-icon-toolbar=true +show-open-in-terminal-toolbar=true + +[org/nemo/window-state] +geometry='800x550+550+244' +maximized=false +sidebar-bookmark-breakpoint=5 + +[org/cinnamon] +desklet-decorations=0 +desktop-effects=false +enabled-applets=['panel1:left:0:menu@cinnamon.org:0', 'panel1:left:1:show-desktop@cinnamon.org:1', 'panel1:left:2:grouped-window-list@cinnamon.org:2', 'panel1:right:0:systray@cinnamon.org:3', 'panel1:right:1:xapp-status@cinnamon.org:4', 'panel1:right:2:notifications@cinnamon.org:5', 'panel1:right:3:printers@cinnamon.org:6', 'panel1:right:4:removable-drives@cinnamon.org:7', 'panel1:right:5:keyboard@cinnamon.org:8', 'panel1:right:6:favorites@cinnamon.org:9', 'panel1:right:7:network@cinnamon.org:10', 'panel1:right:8:sound@cinnamon.org:11', 'panel1:right:9:power@cinnamon.org:12', 'panel1:right:10:calendar@cinnamon.org:13'] +enabled-desklets=@as [] +next-applet-id=14 +panels-height=['1:33'] +panels-resizable=['1:true'] +startup-animation=false + +[org/cinnamon/desktop/a11y/applications] +screen-keyboard-enabled=false +screen-reader-enabled=false + +[org/cinnamon/desktop/a11y/mouse] +dwell-click-enabled=false +dwell-threshold=10 +dwell-time=1.2 +secondary-click-enabled=false +secondary-click-time=1.2 + +[org/cinnamon/desktop/background] +picture-options='zoom' +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +primary-color='#456789' +secondary-color='#FFFFFF' + +[org/cinnamon/desktop/applications/terminal] +exec='/usr/bin/terminator' + +[org/cinnamon/desktop/default-applications/terminal] +exec='/usr/bin/terminator' + +[org/cinnamon/desktop/interface] +clock-show-date=true +cursor-theme='whiteglass' +gtk-theme='Numix' +icon-theme='Numix' +scaling-factor=uint32 0 +toolkit-accessibility=false + +[org/cinnamon/desktop/media-handling] +autorun-never=false + +[org/cinnamon/desktop/screensaver] +picture-options='zoom' +picture-uri='file:///usr/share/backgrounds/orangepi-lightdm/orangepi03-Dre0x-Minum-dark-3840x2160' +primary-color='#456789' +secondary-color='#FFFFFF' + +[org/cinnamon/desktop/wm/preferences] +num-workspaces=2 +theme='Numix' + +[org/cinnamon/settings-daemon/peripherals/touchpad] +disable-while-typing=true +horiz-scroll-enabled=false +motion-acceleration=5.4820717131474108 +motion-threshold=2 +natural-scroll=false +scroll-method='two-finger-scrolling' +three-finger-click=2 +two-finger-click=3 + +[org/cinnamon/settings-daemon/plugins/power] +button-power='interactive' +critical-battery-action='hibernate' +idle-brightness=30 +idle-dim-time=90 +lid-close-ac-action='nothing' +lid-close-battery-action='nothing' +sleep-display-ac=600 +sleep-display-battery=600 +sleep-inactive-ac-timeout=0 +sleep-inactive-battery-timeout=0 + +[org/cinnamon/settings-daemon/plugins/xsettings] +buttons-have-icons=true +menus-have-icons=true + +[org/cinnamon/sounds] +login-enabled=false +logout-enabled=false +plug-enabled=false +switch-enabled=false +tile-enabled=false +unplug-enabled=false" >> $keys + +echo "user-db:user +system-db:local" >> $profile + +dconf update + +#re-compile schemas +if [ -d /usr/share/glib-2.0/schemas ]; then glib-compile-schemas /usr/share/glib-2.0/schemas; fi diff --git a/external/config/desktop/focal/environments/cinnamon/only_for b/external/config/desktop/focal/environments/cinnamon/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/cinnamon/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/cinnamon/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/cinnamon/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..301bb35 --- /dev/null +++ b/external/config/desktop/focal/environments/cinnamon/orangepi/create_desktop_package.sh @@ -0,0 +1,164 @@ +# install default lightdm greeter settings +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install lightdm wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install startup icons +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# generate wallpaper list for background changer +mkdir -p "${destination}"/usr/share/cinnamon-background-properties +cat < "${destination}"/usr/share/cinnamon-background-properties/orangepi.xml + + + + + OrangePi black-pyscho + /usr/share/backgrounds/orangepi/orangepi-4k-black-psycho.jpg + zoom + #ffffff + #000000 + + + OrangePi bluie-circle + /usr/share/backgrounds/orangepi/orangepi-4k-blue-circle.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-monday + /usr/share/backgrounds/orangepi/orangepi-4k-blue-monday.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-blue-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi gray-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-gray.jpg + zoom + #ffffff + #000000 + + + OrangePi green-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi green-retro + /usr/share/backgrounds/orangepi/orangepi-4k-green-retro.jpg + zoom + #ffffff + #000000 + + + OrangePi green-wall-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi 4k-neglated + /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg + zoom + #ffffff + #000000 + + + OrangePi neon-gray-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-neon-gray-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi plastic-love + /usr/share/backgrounds/orangepi/orangepi-4k-plastic-love.jpg + zoom + #ffffff + #000000 + + + OrangePi purple-penguine + /usr/share/backgrounds/orangepi/orangepi-4k-purple-penguine.jpg + zoom + #ffffff + #000000 + + + OrangePi purplepunk-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-purplepunk.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin-dark + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin-dark.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi uc + /usr/share/backgrounds/orangepi/orangepi-full-under-construction-3840-2160.jpg + zoom + #ffffff + #000000 + + + OrangePi clear + /usr/share/backgrounds/orangepi/OrangePi-clear-rounded-bakcground-3840-2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/focal/environments/cinnamon/support b/external/config/desktop/focal/environments/cinnamon/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/cinnamon/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/deepin/config_base/packages b/external/config/desktop/focal/environments/deepin/config_base/packages new file mode 100644 index 0000000..c639c06 --- /dev/null +++ b/external/config/desktop/focal/environments/deepin/config_base/packages @@ -0,0 +1,209 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dde-account-faces +dde-api +dde-calendar +dde-control-center +dde-daemon +dde-desktop +dde-disk-mount-plugin +dde-dock +dde-dock-onboard-plugin +dde-file-manager +dde-launcher +dde-polkit-agent +dde-qt5integration +dde-session-ui +deepin-calculator +deepin-deb-installer +deepin-desktop-base +deepin-desktop-schemas +deepin-gettext-tools +deepin-gtk-theme +deepin-icon-theme +deepin-image-viewer +deepin-menu +deepin-metacity +deepin-movie +deepin-music +deepin-mutter +deepin-picker +deepin-screensaver +deepin-screenshot +deepin-shortcut-viewer +deepin-sound-theme +deepin-system-monitor +deepin-terminal +deepin-topbar +deepin-turbo +deepin-turbo-booster +deepin-voice-recorder +deepin-wm +dictionaries-common +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-orca +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libcvc0 +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mesa-utils +mousepad +mousetweaks +network-manager-config-connectivity-ubuntu +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +policykit-1 +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +startdde +system-config-printer +terminator +tracker +tracker-extract +tracker-miner-fs +ttf-ubuntu-font-family +ubuntudde-default-settings +ubuntudde-icon-theme +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/deepin/config_base/packages.uninstall b/external/config/desktop/focal/environments/deepin/config_base/packages.uninstall new file mode 100644 index 0000000..abe4bc5 --- /dev/null +++ b/external/config/desktop/focal/environments/deepin/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 snapd gnome-software gnome-keyring \ No newline at end of file diff --git a/external/config/desktop/focal/environments/deepin/debian/postinst b/external/config/desktop/focal/environments/deepin/debian/postinst new file mode 100644 index 0000000..391c354 --- /dev/null +++ b/external/config/desktop/focal/environments/deepin/debian/postinst @@ -0,0 +1,10 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/orangepi-4k-neglated-gauss.jpg/g' /etc/lightdm/slick-greeter.conf; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +#remove linked file +rm /etc/alternatives/deepin-default-background +ln -s /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg /etc/alternatives/deepin-default-background diff --git a/external/config/desktop/focal/environments/deepin/only_for b/external/config/desktop/focal/environments/deepin/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/deepin/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/deepin/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/deepin/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..ba03dcd --- /dev/null +++ b/external/config/desktop/focal/environments/deepin/orangepi/create_desktop_package.sh @@ -0,0 +1,164 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +#generate wallpaper list for background changer +mkdir -p "${destination}"/usr/sharedeepin-background-properties +cat < "${destination}"/usr/share/deepin-background-properties/orangepi.xml + + + + + OrangePi black-pyscho + /usr/share/backgrounds/orangepi/orangepi-4k-black-psycho.jpg + zoom + #ffffff + #000000 + + + OrangePi bluie-circle + /usr/share/backgrounds/orangepi/orangepi-4k-blue-circle.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-monday + /usr/share/backgrounds/orangepi/orangepi-4k-blue-monday.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-blue-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi gray-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-gray.jpg + zoom + #ffffff + #000000 + + + OrangePi green-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi green-retro + /usr/share/backgrounds/orangepi/orangepi-4k-green-retro.jpg + zoom + #ffffff + #000000 + + + OrangePi green-wall-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi 4k-neglated + /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg + zoom + #ffffff + #000000 + + + OrangePi neon-gray-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-neon-gray-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi plastic-love + /usr/share/backgrounds/orangepi/orangepi-4k-plastic-love.jpg + zoom + #ffffff + #000000 + + + OrangePi purple-penguine + /usr/share/backgrounds/orangepi/orangepi-4k-purple-penguine.jpg + zoom + #ffffff + #000000 + + + OrangePi purplepunk-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-purplepunk.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin-dark + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin-dark.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi uc + /usr/share/backgrounds/orangepi/orangepi-full-under-construction-3840-2160.jpg + zoom + #ffffff + #000000 + + + OrangePi clear + /usr/share/backgrounds/orangepi/OrangePi-clear-rounded-bakcground-3840-2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/focal/environments/deepin/support b/external/config/desktop/focal/environments/deepin/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/deepin/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/enlightenment/config_base/packages b/external/config/desktop/focal/environments/enlightenment/config_base/packages new file mode 100644 index 0000000..61c0a5e --- /dev/null +++ b/external/config/desktop/focal/environments/enlightenment/config_base/packages @@ -0,0 +1,173 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +doc-base +enlightenment +enlightenment-data +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-orca +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libcvc0 +libevas-loaders +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libplank1 +libplank-common +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mesa-utils +mousepad +mousetweaks +network-manager-config-connectivity-ubuntu +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +plank +policykit-1 +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +terminology +terminology-data +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/enlightenment/config_base/packages.uninstall b/external/config/desktop/focal/environments/enlightenment/config_base/packages.uninstall new file mode 100644 index 0000000..6e0f428 --- /dev/null +++ b/external/config/desktop/focal/environments/enlightenment/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 gnome-software gnome-keyring ubuntu-session \ No newline at end of file diff --git a/external/config/desktop/focal/environments/enlightenment/debian/postinst b/external/config/desktop/focal/environments/enlightenment/debian/postinst new file mode 100755 index 0000000..63a65ea --- /dev/null +++ b/external/config/desktop/focal/environments/enlightenment/debian/postinst @@ -0,0 +1,6 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +#if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/orangepi-4k-blue-circle-gauss.jpg/g' /etc/lightdm/slick-greeter.conf; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/focal/environments/enlightenment/only_for b/external/config/desktop/focal/environments/enlightenment/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/enlightenment/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/enlightenment/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/enlightenment/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..dd06009 --- /dev/null +++ b/external/config/desktop/focal/environments/enlightenment/orangepi/create_desktop_package.sh @@ -0,0 +1,164 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +#generate wallpaper list for background changer +mkdir -p "${destination}"/usr/share/enlightenment-background-properties +cat < "${destination}"/usr/share/enlightenment-background-properties/orangepi.xml + + + + + OrangePi black-pyscho + /usr/share/backgrounds/orangepi/orangepi-4k-black-psycho.jpg + zoom + #ffffff + #000000 + + + OrangePi bluie-circle + /usr/share/backgrounds/orangepi/orangepi-4k-blue-circle.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-monday + /usr/share/backgrounds/orangepi/orangepi-4k-blue-monday.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-blue-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi gray-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-gray.jpg + zoom + #ffffff + #000000 + + + OrangePi green-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi green-retro + /usr/share/backgrounds/orangepi/orangepi-4k-green-retro.jpg + zoom + #ffffff + #000000 + + + OrangePi green-wall-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi 4k-neglated + /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg + zoom + #ffffff + #000000 + + + OrangePi neon-gray-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-neon-gray-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi plastic-love + /usr/share/backgrounds/orangepi/orangepi-4k-plastic-love.jpg + zoom + #ffffff + #000000 + + + OrangePi purple-penguine + /usr/share/backgrounds/orangepi/orangepi-4k-purple-penguine.jpg + zoom + #ffffff + #000000 + + + OrangePi purplepunk-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-purplepunk.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin-dark + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin-dark.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi uc + /usr/share/backgrounds/orangepi/orangepi-full-under-construction-3840-2160.jpg + zoom + #ffffff + #000000 + + + OrangePi clear + /usr/share/backgrounds/orangepi/OrangePi-clear-rounded-bakcground-3840-2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/focal/environments/enlightenment/support b/external/config/desktop/focal/environments/enlightenment/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/enlightenment/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/gnome/config_base/packages b/external/config/desktop/focal/environments/gnome/config_base/packages new file mode 100644 index 0000000..e2e9bea --- /dev/null +++ b/external/config/desktop/focal/environments/gnome/config_base/packages @@ -0,0 +1,244 @@ +alsa-base +anacron +at-spi2-core +bubblewrap +cups +dbus-x11 +dictionaries-common +dmz-cursor-theme +eject +evolution-data-server +evolution-data-server-common +fonts-freefont-ttf +fonts-ubuntu +fonts-urw-base35 +foomatic-db-compressed-ppds +gcr +gdebi +gdm3 +gedit +genisoimage +geoclue-2.0 +ghostscript +ghostscript-x +gir1.2-accountsservice-1.0 +gir1.2-atspi-2.0 +gir1.2-gck-1 +gir1.2-gcr-3 +gir1.2-gdesktopenums-3.0 +gir1.2-gdm-1.0 +gir1.2-geoclue-2.0 +gir1.2-gnomebluetooth-1.0 +gir1.2-gnomedesktop-3.0 +gir1.2-goa-1.0 +gir1.2-graphene-1.0 +gir1.2-gweather-3.0 +gir1.2-ibus-1.0 +gir1.2-json-1.0 +gir1.2-mutter-6 +gir1.2-nm-1.0 +gir1.2-nma-1.0 +gir1.2-polkit-1.0 +gir1.2-rsvg-2.0 +gir1.2-snapd-1 +gir1.2-soup-2.4 +gir1.2-upowerglib-1.0 +gjs +gnome-control-center +gnome-desktop3-data +gnome-keyring +gnome-menus +gnome-packagekit +gnome-photos +gnome-power-manager +gnome-screensaver +gnome-screenshot +gnome-session +gnome-session-bin +gnome-session-common +gnome-settings-daemon +gnome-settings-daemon-common +gnome-shell +gnome-shell-common +gnome-shell-extension-appindicator +gnome-shell-extension-desktop-icons +gnome-shell-extension-trash +gnome-system-log +gnome-system-tools +gnome-terminal +gnome-todo +gnome-tweaks +gnome-tweak-tool +gpaint +gpaste +gvfs-backends +gvfs-bin +hunspell-en-us +inputattach +language-pack-gnome-de +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +libaccountsservice0 +libasound2-plugins +libaspell15 +libatk-adaptor +libcairo-gobject-perl +libcairo-perl +libcamel-1.2-62 +libcue2 +libdee-1.0-4 +libebackend-1.2-10 +libebook-1.2-20 +libebook-contacts-1.2-3 +libecal-2.0-1 +libedata-book-1.2-26 +libedata-cal-2.0-1 +libedataserver-1.2-24 +libedataserverui-1.2-2 +libenchant-2-2 +libexempi8 +libexiv2-27 +libextutils-depends-perl +libextutils-pkgconfig-perl +libfontenc1 +libgck-1-0 +libgcr-base-3-1 +libgcr-ui-3-1 +libgdata22 +libgdata-common +libgdm1 +libgeoclue-2-0 +libgeocode-glib0 +libgexiv2-2 +libgjs0g +libglib-object-introspection-perl +libglib-perl +libglu1-mesa +libgnome-autoar-0-0 +libgnome-bluetooth13 +libgnome-desktop-3-19 +libgoa-1.0-0b +libgoa-1.0-common +libgraphene-1.0-0 +libgs9 +libgs9-common +libgsf-1-114 +libgsf-1-common +libgtk3-perl +libgweather-3-16 +libgweather-common +libgxps2 +libibus-1.0-5 +libical3 +libidn11 +libijs-0.35 +libimobiledevice6 +libjavascriptcoregtk-4.0-18 +libjbig2dec0 +libmutter-6-0 +libnautilus-extension1a +libnma0 +libnotify-bin +libpaper1 +libphonenumber7 +libplist3 +libpoppler-glib8 +libprotobuf17 +libpulsedsp +libsasl2-modules +libspeexdsp1 +libtext-iconv-perl +libtotem-plparser18 +libtotem-plparser-common +libtracker-control-2.0-0 +libtracker-miner-2.0-0 +libtracker-sparql-2.0-0 +libu2f-udev +libunity9 +libunity-protocol-private0 +libunity-scopes-json-def-desktop +libunwind8 +libupower-glib3 +libusbmuxd6 +libwebkit2gtk-4.0-37 +libxaw7 +libxfont2 +libxkbfile1 +libxmu6 +libxmuu1 +libxtst6 +libxxf86dga1 +libyelp0 +lightdm +lightdm-gtk-greeter +lightdm-gtk-greeter-settings +linux-sound-base +mutter +mutter-common +nautilus +nautilus-data +network-manager-openvpn-gnome +openprinting-ppds +p11-kit +p11-kit-modules +pavucontrol +pinentry-gnome3 +poppler-data +printer-driver-pnm2ppa +pulseaudio +pulseaudio-module-bluetooth +pulseaudio-utils +python3-click +python3-colorama +python3-dateutil +python3-debconf +python3-debian +python3-distupgrade +python3-update-manager +python3-xkit +python3-yaml +slick-greeter +software-properties-gtk +spice-vdagent +synaptic +system-config-printer-gnome +terminator +tracker +tracker-extract +tracker-miner-fs +ubuntu-desktop-minimal +ubuntu-session +ubuntu-settings +update-manager +update-manager-core +update-notifier +update-notifier-common +upower +x11-apps +x11-session-utils +x11-utils +x11-xkb-utils +x11-xserver-utils +xarchiver +xdg-dbus-proxy +xdg-desktop-portal +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-base +xinit +xinput +xorg +xorg-docs-core +xserver-common +xserver-xorg +xserver-xorg-video-fbdev +xwayland +yaru-theme-gnome-shell +yelp +yelp-xsl +zenity +zenity-common diff --git a/external/config/desktop/focal/environments/gnome/config_base/packages.uninstall b/external/config/desktop/focal/environments/gnome/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/focal/environments/gnome/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/focal/environments/gnome/debian/postinst b/external/config/desktop/focal/environments/gnome/debian/postinst new file mode 100644 index 0000000..1ee5cbf --- /dev/null +++ b/external/config/desktop/focal/environments/gnome/debian/postinst @@ -0,0 +1,37 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/orangepi-4k-black-psycho-gauss.jpg/g' /etc/lightdm/slick-greeter.conf; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +# set wallpapper to orangepi +keys=/etc/dconf/db/local.d/00-bg +profile=/etc/dconf/profile/user + +install -Dv /dev/null $keys +install -Dv /dev/null $profile + +echo "[org/gnome/desktop/background] +picture-uri='file:///usr/share/backgrounds/orangepi/aorangepi-4k-black-psycho.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF' + +[org/gnome/desktop/screensaver] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi-4k-black-psycho-gauss.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF'" >> $keys + +echo "user-db:user +system-db:local" >> $profile + +dconf update + +#sudo apt-get -y remove gnome-shell-extension-desktop-icons + +#compile schemas +if [ -d /usr/share/glib-2.0/schemas ]; then + glib-compile-schemas /usr/share/glib-2.0/schemas +fi diff --git a/external/config/desktop/focal/environments/gnome/only_for b/external/config/desktop/focal/environments/gnome/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/gnome/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/gnome/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/gnome/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..b3c7efb --- /dev/null +++ b/external/config/desktop/focal/environments/gnome/orangepi/create_desktop_package.sh @@ -0,0 +1,164 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +#generate wallpaper list for background changer +mkdir -p "${destination}"/usr/share/gnome-background-properties +cat < "${destination}"/usr/share/gnome-background-properties/orangepi.xml + + + + + OrangePi black-pyscho + /usr/share/backgrounds/orangepi/orangepi-4k-black-psycho.jpg + zoom + #ffffff + #000000 + + + OrangePi bluie-circle + /usr/share/backgrounds/orangepi/orangepi-4k-blue-circle.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-monday + /usr/share/backgrounds/orangepi/orangepi-4k-blue-monday.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-blue-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi gray-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-gray.jpg + zoom + #ffffff + #000000 + + + OrangePi green-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi green-retro + /usr/share/backgrounds/orangepi/orangepi-4k-green-retro.jpg + zoom + #ffffff + #000000 + + + OrangePi green-wall-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi 4k-neglated + /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg + zoom + #ffffff + #000000 + + + OrangePi neon-gray-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-neon-gray-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi plastic-love + /usr/share/backgrounds/orangepi/orangepi-4k-plastic-love.jpg + zoom + #ffffff + #000000 + + + OrangePi purple-penguine + /usr/share/backgrounds/orangepi/orangepi-4k-purple-penguine.jpg + zoom + #ffffff + #000000 + + + OrangePi purplepunk-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-purplepunk.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin-dark + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin-dark.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi uc + /usr/share/backgrounds/orangepi/orangepi-full-under-construction-3840-2160.jpg + zoom + #ffffff + #000000 + + + OrangePi clear + /usr/share/backgrounds/orangepi/OrangePi-clear-rounded-bakcground-3840-2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/focal/environments/gnome/support b/external/config/desktop/focal/environments/gnome/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/gnome/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/i3-wm/config_base/packages b/external/config/desktop/focal/environments/i3-wm/config_base/packages new file mode 100644 index 0000000..9b143a8 --- /dev/null +++ b/external/config/desktop/focal/environments/i3-wm/config_base/packages @@ -0,0 +1,170 @@ +anacron +apport-gtk +arandr +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +compton +conky +conky-all +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +dunst +evince +evince-common +feh +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-bluetooth +gnome-font-viewer +gnome-orca +gnome-power-manager +gnome-system-monitor +gnome-system-tools +gromit +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gvfs-backends +hplip +hunspell-en-us +i3 +i3lock +i3status +i3-wm +indicator-printers +inputattach +kerneloops +keyutils +language-pack-en +laptop-detect +libanyevent-i3-perl +libappindicator3-1 +libatk-adaptor +libev4 +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgnome-bluetooth13 +libgsettings-qt1 +libjson-xs-perl +libnotify-bin +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcb-cursor0 +libxcursor1 +lightdm +lightdm-gtk-greeter +lightdm-gtk-greeter-settings +lightdm-settings +lxappearance +mousetweaks +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn-gnome +network-manager-pptp +network-manager-vpnc +nitrogen +numix-gtk-theme +openprinting-ppds +overlay-scrollbar +overlay-scrollbar-gtk2 +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +policykit-1-gnome +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +rofi +samba +slick-greeter +smbclient +software-properties-gtk +speech-dispatcher +spice-vdagent +system-config-printer +system-config-printer-common +system-config-printer-gnome +terminator +thunar +totem +totem-common +totem-plugins +ttf-ubuntu-font-family +ubuntu-docs +ubuntu-drivers-common +ubuntu-wallpapers +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +vifm +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xtitle +xttitle +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/i3-wm/config_base/packages.uninstall b/external/config/desktop/focal/environments/i3-wm/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/focal/environments/i3-wm/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/focal/environments/i3-wm/debian/postinst b/external/config/desktop/focal/environments/i3-wm/debian/postinst new file mode 100644 index 0000000..a52b936 --- /dev/null +++ b/external/config/desktop/focal/environments/i3-wm/debian/postinst @@ -0,0 +1,9 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +# set wallpapper to orangepi + + diff --git a/external/config/desktop/focal/environments/i3-wm/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/i3-wm/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..234332a --- /dev/null +++ b/external/config/desktop/focal/environments/i3-wm/orangepi/create_desktop_package.sh @@ -0,0 +1,14 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ diff --git a/external/config/desktop/focal/environments/i3-wm/support b/external/config/desktop/focal/environments/i3-wm/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/i3-wm/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/kde-plasma/config_base/packages b/external/config/desktop/focal/environments/kde-plasma/config_base/packages new file mode 100644 index 0000000..3c41bd1 --- /dev/null +++ b/external/config/desktop/focal/environments/kde-plasma/config_base/packages @@ -0,0 +1,168 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-orca +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kde-plasma-desktop +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libcvc0 +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +mesa-utils +mousepad +mousetweaks +network-manager-config-connectivity-ubuntu +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +policykit-1 +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker +tracker-extract +tracker-miner-fs +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/kde-plasma/config_base/packages.uninstall b/external/config/desktop/focal/environments/kde-plasma/config_base/packages.uninstall new file mode 100644 index 0000000..035c085 --- /dev/null +++ b/external/config/desktop/focal/environments/kde-plasma/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 gnome-software gnome-keyring \ No newline at end of file diff --git a/external/config/desktop/focal/environments/kde-plasma/debian/postinst b/external/config/desktop/focal/environments/kde-plasma/debian/postinst new file mode 100755 index 0000000..6ce027d --- /dev/null +++ b/external/config/desktop/focal/environments/kde-plasma/debian/postinst @@ -0,0 +1,6 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg/orangepi-4k-plastic-love-gauss.jpg/g' /etc/lightdm/slick-greeter.conf; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/focal/environments/kde-plasma/only_for b/external/config/desktop/focal/environments/kde-plasma/only_for new file mode 100755 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/kde-plasma/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/kde-plasma/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/kde-plasma/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..bbc20d2 --- /dev/null +++ b/external/config/desktop/focal/environments/kde-plasma/orangepi/create_desktop_package.sh @@ -0,0 +1,22 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/focal/environments/kde-plasma/support b/external/config/desktop/focal/environments/kde-plasma/support new file mode 100755 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/kde-plasma/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/mate/config_base/packages b/external/config/desktop/focal/environments/mate/config_base/packages new file mode 100644 index 0000000..14149a0 --- /dev/null +++ b/external/config/desktop/focal/environments/mate/config_base/packages @@ -0,0 +1,225 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-orca +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libcvc0 +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mate-accessibility-profiles +mate-applet-appmenu +mate-applet-brisk-menu +mate-applets +mate-applets-common +mate-backgrounds +mate-calc +mate-calc-common +mate-common +mate-control-center +mate-control-center-common +mate-core +mate-desktop +mate-desktop-common +mate-desktop-environment +mate-desktop-environment-core +mate-desktop-environment-extra +mate-desktop-environment-extras +mate-dock-applet +mate-equake-applet +mate-hud +mate-icon-theme +mate-indicator-applet +mate-indicator-applet-common +mate-media +mate-media-common +mate-menu +mate-menus +mate-notification-daemon +mate-notification-daemon-common +mate-panel +mate-panel-common +mate-polkit +mate-polkit-bin +mate-polkit-common +mate-power-manager +mate-power-manager-common +mate-screensaver +mate-screensaver-common +mate-sensors-applet +mate-sensors-applet-common +mate-session-manager +mate-settings-daemon +mate-settings-daemon-common +mate-sntray-plugin +mate-system-monitor +mate-system-monitor-common +mate-terminal +mate-terminal-common +mate-themes +mate-tweak +mate-user-guide +mate-user-share +mate-user-share-common +mate-utils +mate-utils-common +mate-window-applets-common +mate-window-buttons-applet +mate-window-menu-applet +mate-window-title-applet +mesa-utils +mousepad +mousetweaks +network-manager-config-connectivity-ubuntu +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-blue-gtk-theme +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +printer-driver-all +pulseaudio-module-bluetooth +redshift +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker +tracker-extract +tracker-miner-fs +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/mate/config_base/packages.uninstall b/external/config/desktop/focal/environments/mate/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/focal/environments/mate/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/focal/environments/mate/debian/postinst b/external/config/desktop/focal/environments/mate/debian/postinst new file mode 100644 index 0000000..f855d4b --- /dev/null +++ b/external/config/desktop/focal/environments/mate/debian/postinst @@ -0,0 +1,37 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi +if [ -f /etc/lightdm/slick-greeter.conf ]; then sed '/^orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg s/orangepi-4k-greeen-wall-penguin-gauss.jpg' /etc/lightdm/slick-greeter.conf; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +# set wallpapper to orangepi + +keys=/etc/dconf/db/local.d/00-desktop +profile=/etc/dconf/profile/user + +install -Dv /dev/null $keys +install -Dv /dev/null $profile + +echo "[org/mate/desktop/background] +color-shading-type='vertical-gradient' +picture-filename='/usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg' +picture-options='zoom' +primary-color='rgb(255,255,255)' +secondary-color='rgb(0,0,0)' + +[org/mate/desktop/screensaver] +picture-filename='/usr/share/backgrounds/orangepi/orangepi-4k-greeen-wall-penguin-gauss.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF'" >> $keys + +echo "user-db:user +system-db:local" >> $profile + +dconf update + +#compile schemas +if [ -d /usr/share/glib-2.0/schemas ]; then + glib-compile-schemas /usr/share/glib-2.0/schemas +fi diff --git a/external/config/desktop/focal/environments/mate/only_for b/external/config/desktop/focal/environments/mate/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/mate/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/mate/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/mate/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..2e727c1 --- /dev/null +++ b/external/config/desktop/focal/environments/mate/orangepi/create_desktop_package.sh @@ -0,0 +1,164 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +#generate wallpaper list for background changer +mkdir -p "${destination}"/usr/share/mate-background-properties +cat < "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi black-pyscho + /usr/share/backgrounds/orangepi/orangepi-4k-black-psycho.jpg + zoom + #ffffff + #000000 + + + OrangePi bluie-circle + /usr/share/backgrounds/orangepi/orangepi-4k-blue-circle.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-monday + /usr/share/backgrounds/orangepi/orangepi-4k-blue-monday.jpg + zoom + #ffffff + #000000 + + + OrangePi blue-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-blue-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi gray-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-gray.jpg + zoom + #ffffff + #000000 + + + OrangePi green-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi green-retro + /usr/share/backgrounds/orangepi/orangepi-4k-green-retro.jpg + zoom + #ffffff + #000000 + + + OrangePi green-wall-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-green-wall-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi 4k-neglated + /usr/share/backgrounds/orangepi/orangepi-4k-neglated.jpg + zoom + #ffffff + #000000 + + + OrangePi neon-gray-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-neon-gray-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi plastic-love + /usr/share/backgrounds/orangepi/orangepi-4k-plastic-love.jpg + zoom + #ffffff + #000000 + + + OrangePi purple-penguine + /usr/share/backgrounds/orangepi/orangepi-4k-purple-penguine.jpg + zoom + #ffffff + #000000 + + + OrangePi purplepunk-resultado + /usr/share/backgrounds/orangepi/orangepi-4k-purplepunk.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin-dark + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin-dark.jpg + zoom + #ffffff + #000000 + + + OrangePi red-penguin + /usr/share/backgrounds/orangepi/orangepi-4k-red-penguin.jpg + zoom + #ffffff + #000000 + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi uc + /usr/share/backgrounds/orangepi/orangepi-full-under-construction-3840-2160.jpg + zoom + #ffffff + #000000 + + + OrangePi clear + /usr/share/backgrounds/orangepi/OrangePi-clear-rounded-bakcground-3840-2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/focal/environments/mate/support b/external/config/desktop/focal/environments/mate/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/mate/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/focal/environments/xfce/appgroups/programming/packages b/external/config/desktop/focal/environments/xfce/appgroups/programming/packages new file mode 100644 index 0000000..96c54c3 --- /dev/null +++ b/external/config/desktop/focal/environments/xfce/appgroups/programming/packages @@ -0,0 +1,2 @@ +geany +gnome-builder diff --git a/external/config/desktop/focal/environments/xfce/config_base/packages b/external/config/desktop/focal/environments/xfce/config_base/packages new file mode 100644 index 0000000..b170697 --- /dev/null +++ b/external/config/desktop/focal/environments/xfce/config_base/packages @@ -0,0 +1,176 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-font-viewer +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-fr +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gnome-system-monitor +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +language-selector-gnome +laptop-detect +libappindicator3-1 +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mesa-utils +mousepad +mousetweaks +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +orca +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +policykit-1 +policykit-1-gnome +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +thunar-volman +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +wngerman +wogerman +zip diff --git a/external/config/desktop/focal/environments/xfce/config_base/packages.uninstall b/external/config/desktop/focal/environments/xfce/config_base/packages.uninstall new file mode 100644 index 0000000..18c0f36 --- /dev/null +++ b/external/config/desktop/focal/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 ubuntu-session \ No newline at end of file diff --git a/external/config/desktop/focal/environments/xfce/debian/orangepi-bsp-desktop/postinst b/external/config/desktop/focal/environments/xfce/debian/orangepi-bsp-desktop/postinst new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/focal/environments/xfce/debian/orangepi-bsp-desktop/prepare.sh b/external/config/desktop/focal/environments/xfce/debian/orangepi-bsp-desktop/prepare.sh new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/focal/environments/xfce/debian/postinst b/external/config/desktop/focal/environments/xfce/debian/postinst new file mode 100644 index 0000000..f2d3e99 --- /dev/null +++ b/external/config/desktop/focal/environments/xfce/debian/postinst @@ -0,0 +1,22 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + + +#Adjust xsettings.xml for NumixBlue Theme Ubuntu +if [ -f /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then sed -i 's/Xfce-dusk/NumixBlue/g' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml; fi + +# Adjust menu +if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/focal/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/xfce/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..dda7225 --- /dev/null +++ b/external/config/desktop/focal/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,22 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/focal/environments/xfce/support b/external/config/desktop/focal/environments/xfce/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/focal/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/focal/environments/xmonad/config_base/packages b/external/config/desktop/focal/environments/xmonad/config_base/packages new file mode 100644 index 0000000..6dae222 --- /dev/null +++ b/external/config/desktop/focal/environments/xmonad/config_base/packages @@ -0,0 +1,152 @@ +anacron +apport-gtk +arandr +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +cifs-utils +compton +conky-all +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmenu +dmz-cursor-theme +doc-base +feh +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +fonts-ubuntu-font-family-console +foomatic-db-compressed-ppds +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-bluetooth +gnome-font-viewer +gromit +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-de +language-pack-en +language-pack-es +language-pack-fr-base +language-pack-it +language-pack-pt +language-pack-ru +language-pack-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libghc-xmonad-contrib-dev +libghc-xmonad-wallpaper-dev +libgnome-bluetooth13 +libgsettings-qt1 +libnotify-bin +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-gtk-greeter +lightdm-gtk-greeter-settings +lightdm-settings +mousetweaks +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn-gnome +network-manager-pptp +network-manager-vpnc +nitrogen +numix-gtk-theme +openprinting-ppds +orca +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +policykit-1-gnome +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +rofi +samba +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +system-config-printer-gnome +terminator +thunar +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +vifm +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xmobar +xmonad +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xtitle +xttitle +xwallpaper +zip diff --git a/external/config/desktop/focal/environments/xmonad/config_base/packages.uninstall b/external/config/desktop/focal/environments/xmonad/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/focal/environments/xmonad/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/focal/environments/xmonad/debian/postinst b/external/config/desktop/focal/environments/xmonad/debian/postinst new file mode 100644 index 0000000..a52b936 --- /dev/null +++ b/external/config/desktop/focal/environments/xmonad/debian/postinst @@ -0,0 +1,9 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +# set wallpapper to orangepi + + diff --git a/external/config/desktop/focal/environments/xmonad/only_for b/external/config/desktop/focal/environments/xmonad/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/focal/environments/xmonad/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/focal/environments/xmonad/orangepi/create_desktop_package.sh b/external/config/desktop/focal/environments/xmonad/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..234332a --- /dev/null +++ b/external/config/desktop/focal/environments/xmonad/orangepi/create_desktop_package.sh @@ -0,0 +1,14 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ diff --git a/external/config/desktop/focal/environments/xmonad/support b/external/config/desktop/focal/environments/xmonad/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/focal/environments/xmonad/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/jammy/appgroups/3dsupport/packages b/external/config/desktop/jammy/appgroups/3dsupport/packages new file mode 100755 index 0000000..b6400d8 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/3dsupport/packages @@ -0,0 +1,3 @@ +glmark2 +mesa-utils +mesa-utils-extra diff --git a/external/config/desktop/jammy/appgroups/3dsupport/sources/apt/oibaf.source b/external/config/desktop/jammy/appgroups/3dsupport/sources/apt/oibaf.source new file mode 100755 index 0000000..2e6ad7c --- /dev/null +++ b/external/config/desktop/jammy/appgroups/3dsupport/sources/apt/oibaf.source @@ -0,0 +1 @@ +ppa:oibaf/graphics-drivers \ No newline at end of file diff --git a/external/config/desktop/jammy/appgroups/browsers/debian/postinst b/external/config/desktop/jammy/appgroups/browsers/debian/postinst new file mode 100755 index 0000000..96dc4f1 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/browsers/debian/postinst @@ -0,0 +1,14 @@ +if [ -f /etc/chromium-browser/default ]; then +cat > /etc/chromium-browser/default << DELIM +# Options to pass to chromium-browser +CHROMIUM_FLAGS="--use-gl=egl --ignore-gpu-blocklist --enable-accelerated-video-decode --enable-zero-copy --enable-gpu-rasterization --enable-oop-rasterization --enable-pinch --flag-switches-begin --flag-switches-end --origin-trial-disabled-features=SecurePaymentConfirmation" +DELIM +fi + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/jammy/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/jammy/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/jammy/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/jammy/appgroups/browsers/packages b/external/config/desktop/jammy/appgroups/browsers/packages new file mode 100755 index 0000000..dbfb8f9 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/browsers/packages @@ -0,0 +1 @@ +firefox diff --git a/external/config/desktop/jammy/appgroups/browsers/sources/apt/chromium-browser.source b/external/config/desktop/jammy/appgroups/browsers/sources/apt/chromium-browser.source new file mode 100755 index 0000000..428bf80 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/browsers/sources/apt/chromium-browser.source @@ -0,0 +1 @@ +ppa:saiarcot895/chromium-dev diff --git a/external/config/desktop/jammy/appgroups/chat/packages b/external/config/desktop/jammy/appgroups/chat/packages new file mode 100755 index 0000000..7503620 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/chat/packages @@ -0,0 +1 @@ +hexchat diff --git a/external/config/desktop/jammy/appgroups/desktop_tools/packages b/external/config/desktop/jammy/appgroups/desktop_tools/packages new file mode 100755 index 0000000..23f24bf --- /dev/null +++ b/external/config/desktop/jammy/appgroups/desktop_tools/packages @@ -0,0 +1,4 @@ +bleachbit +fbi +gparted +kazam diff --git a/external/config/desktop/jammy/appgroups/editors/debian/postinst b/external/config/desktop/jammy/appgroups/editors/debian/postinst new file mode 100755 index 0000000..e69de29 diff --git a/external/config/desktop/jammy/appgroups/editors/packages b/external/config/desktop/jammy/appgroups/editors/packages new file mode 100755 index 0000000..8b52c4f --- /dev/null +++ b/external/config/desktop/jammy/appgroups/editors/packages @@ -0,0 +1,3 @@ +emacs +notepadqq +vim diff --git a/external/config/desktop/jammy/appgroups/email/packages b/external/config/desktop/jammy/appgroups/email/packages new file mode 100755 index 0000000..84daedd --- /dev/null +++ b/external/config/desktop/jammy/appgroups/email/packages @@ -0,0 +1 @@ +thunderbird diff --git a/external/config/desktop/jammy/appgroups/emulators/only_for b/external/config/desktop/jammy/appgroups/emulators/only_for new file mode 100755 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/emulators/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/jammy/appgroups/emulators/packages b/external/config/desktop/jammy/appgroups/emulators/packages new file mode 100755 index 0000000..d248784 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/emulators/packages @@ -0,0 +1 @@ +box64 diff --git a/external/config/desktop/jammy/appgroups/emulators/sources/apt/box64.source b/external/config/desktop/jammy/appgroups/emulators/sources/apt/box64.source new file mode 100755 index 0000000..20af820 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/emulators/sources/apt/box64.source @@ -0,0 +1 @@ +deb http://ryanfortner.github.io/box64-debs/debian ./ diff --git a/external/config/desktop/jammy/appgroups/emulators/sources/apt/box64.source.gpg b/external/config/desktop/jammy/appgroups/emulators/sources/apt/box64.source.gpg new file mode 100755 index 0000000..56b6eb1 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/emulators/sources/apt/box64.source.gpg @@ -0,0 +1,51 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGDrWFABEADCHlJTHb7+qdUNJYWwiTxtYr9gd3czgjWSTtijDe6ZYwm/znPz +azu345aTKCKRuAlTy4wkuC2sSNxqCprPjcOtPEonB9DgxWfnuu1gEew9QTU2uu1o +qvoN0tHzkCEPt1RH8adco1uFpMXHmEbcgXrsxS4HIAmuXqIA8OsO9pJeWUNx7cHI +5Qm4dqyjWIWPGii88B4gjkuRLUjABjGcm+7mQ6FAUkuxYo/yifZhqJpuslXGyB3S +Jnl6G+pmxTb/Q2DIcdQODVk0xF6cg3Kx2MwTo8Lm1zCOgRFYjXLmlb+eYJjVF56L +ZVhrqslfIyQlgWmwJmr9Jr/7CLfeDLacq0k0G1710sGZYlzWQtXnm4Rw0WTYB1LX +M9FNkbdk4jROjdk7uU7xkWZwf/DHpB28oOo2MZ/wvPv4NtpMgtALZTFaNL4k4fXv +OLfNkkXscQxsYAnZx/0NvR0A0ewcrh74zTr3qCQylHmqY4p31VcZE3oRvIgQXqZz +8jFJ4vcm2VdwZ7fm3oeW/C/hh2gaOKvP7yjzYdczdjB1AtdC81w5HPXOXhReWlLz +6Ardl7w4SdFq/2kN4VfqK+H6KctDaGYfZUiyunBIyY5vj+8jCP8MolbvP8X/yZDF +uUppK6V4B2RjxrbXQC2/ETdiLyPFi5OGZjjnjq/+V3SGnR9cdlahCTRrPQARAQAB +tCNSeWFuIEZvcnRuZXIgPHBpbmV0bWVkaWFAZ21haWwuY29tPokCTgQTAQoAOBYh +BN+aG4Ujwy7u/yps2ndZ+h2f7KyeBQJg61hQAhsDBQsJCAcCBhUKCQgLAgQWAgMB +Ah4BAheAAAoJEHdZ+h2f7KyeJDMP/2hjyH+vrXxNRXbjOT4VMxQmLIFlMSsap1F9 +q5R/u2HJlB/TMkwdiP99DFLSfan6IlQ695GFZW24jEY9qbuOtOY4LFLTgfOITsh9 +zEbcVGFIFYLcNWG2xbKChh6ZTx8Q1CBAE3mpudmgn6MP21F7gHuAAG1CfEmZQ90M +vrDfQEhDTFOx13/gGjDjFYl267nciQaiTHM5tPOSzvuVnhgP3s4w0Unokt62ueaS +9IlQmaoVJiCyxgupLOBygqJXYZD+O+ZAUvHGurqSyDzxUAY+AwTs8mHCAiqyojMU +k+YAfMgKYdwkjl63+L/0L/IDccu1l3BVKtyiuwoQn7NIGaPXo72JJz6L0Fgsd8zW +skuk6jcXJWZJNI2Lw7YFVSpySqyPFG951gdIfKz+0erUKHduzLsMH+DjCVvjqCxN +Cp+/X63YloVJqSUtPgmvcIuYmr0KlT1LI7XDLUmuS9pe4ALtR653eRiCP5g/Ti1J +c86INbtIiLWimK1t203Cdnc/4tJxOYMZH5MpM3KFtUO8qXjsLlWe+/q9AsSFAnnA +oDqdymWIj4YEUqCf38uJ5dCiJuzZg25coqxOjsrS8sQIJU2yR3y8adjZ7DDlI0ue +RW47ZTtiwagLS0NItNA1r1Sh3TX8rKcF3jYyNwuJdJm7mrm5mH4t5nOiIDGzzimW +4pw9oTvTuQINBGDrWFABEADVgvlYtACNT8nKlqDod7s1fRsyiHOIp3XaDmoJcG3k +8JICTtX06ixtzoax3B4bvqJiWE9v5PjK87Ad4rSl1ixZdCDg7Snt4xJr30fVeAIj +HOVFiJoyzj7gnI9lZTM67IqdqurqFv1RDGg7V40wkaeROZj0fVff6DB6oCvDxSOR +ytkFrWiFEvs0eg1djzBBZgyf1SnPXus/ABfq04ixc+R/JYZNwSpygStU/4ZRvxbe +cvqTEzjeqCLuXjJg79enmXHFCo1Aixc5Uyra1t/0/ETAnpWzm4c4wp4KUDOrF+7i +3DMX4dmhme5mJFXjTamr9ERS4nZgl8OQ/50AXy+JOeZ3D73Xwr8xeFzpM3SeXZpX +0E0eiq6DTpoqz/kG7EIs/TIdG2J2ya4VRujFbzAerEu9NyPPWSpWoETEjvAiyU47 +AUOwA45qBcGN06vVhihG5E82qD3DpEtlCMVN9TGogMU2G+rf8pGtCYpz12k0vgQ/ +xfD6qqDN2x2+WG3yuFPMGxgSAkaWumGtDa2qDCaNvMJ9v5dZYXgVn1h/XVJxE5FX +N3HdXCn9ZREFJZxqeEzWInDK/W0DrKjFgQqZkx3YVfPF3ytwJcIj89V0Ggk5F/ak +2VBgVSuTjSnR6sviEHXnEzl7oPY0I01NQE3NJTCudDsUk40DfwQqJ6+NMYMeR3su +kwARAQABiQI2BBgBCgAgFiEE35obhSPDLu7/Kmzad1n6HZ/srJ4FAmDrWFACGwwA +CgkQd1n6HZ/srJ5ycxAAuxQ9F9T16B42CRFKbGZjnkN41Lq5gV1197YO4iDS4ybG +9HmphuJx5i55dRnSY/WdXC1bT+YEAmtEf9RoVRKmM7lx06Ne6IX7bJWxngVR7JSr +9wLEM08YiryqJOuV7sLM6Lj+Z6khcfbbgqT7fkgTUwN1mvmtYzJCGFrW67WwLhVa +zbFunRA4KycFPJcyoSoZ9NacWy6YhoMeLvtmBHkyup0aTyWdLql0TUaDGOwbekSM +shCHThZ4SWZSr0Qn8S0vo9Fa0Sx+RzGCPh/BYkiR41L/dPdd65cMuA9Qg9ro1ES9 +Rn3wnnEVsPaFCuYBsWp/wM3JnZM7zavbqkZyC/WEdhaRZSyIfNFlXoF5b7Rb4Fzy +KOmoS2slM6mDWHIjmfNc12v1yy38Aa68djGDEleqex526+skAf7EggR457x/IfZQ +iKz06lr1x7+OeRb9e/yW0thov1BRURLr2siCPMMKHAa5eteLtaooBtN1WAmPCfwS +U3EBiKPAB/JOBcHmqEJhVV0rktCS+k4neAii9mtIvJ2wyMDNjF6E8SrrG9NKg4EH +Rrp9864fzCw4zRfEUtNz5QhmuJM+JiTUATftCtGghHUmt19GDEHF3IeIYMnxatcr +B1VZmw6tWcgaqflWTOAwZJNldyx7y4WNs2HbQfNeAGE0M5xn6YAGRmBBh4prTtw= +=yWSi +-----END PGP PUBLIC KEY BLOCK----- diff --git a/external/config/desktop/jammy/appgroups/internet/packages b/external/config/desktop/jammy/appgroups/internet/packages new file mode 100755 index 0000000..a2c5a91 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/internet/packages @@ -0,0 +1,4 @@ +filezilla +putty +transmission +transmission-remote-gtk diff --git a/external/config/desktop/jammy/appgroups/multimedia/packages b/external/config/desktop/jammy/appgroups/multimedia/packages new file mode 100755 index 0000000..7be8ad7 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/multimedia/packages @@ -0,0 +1,3 @@ +celluloid +gimp +mpv diff --git a/external/config/desktop/jammy/appgroups/office/packages b/external/config/desktop/jammy/appgroups/office/packages new file mode 100755 index 0000000..25e91f3 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/office/packages @@ -0,0 +1,3 @@ +libreoffice +libreoffice-style-elementary +simple-scan diff --git a/external/config/desktop/jammy/appgroups/programming/custom/desktops/cinnamon/packages b/external/config/desktop/jammy/appgroups/programming/custom/desktops/cinnamon/packages new file mode 100755 index 0000000..35db926 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/programming/custom/desktops/cinnamon/packages @@ -0,0 +1,2 @@ +gnome-builder +sysprof diff --git a/external/config/desktop/jammy/appgroups/programming/custom/desktops/gnome/packages b/external/config/desktop/jammy/appgroups/programming/custom/desktops/gnome/packages new file mode 100755 index 0000000..96c54c3 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/programming/custom/desktops/gnome/packages @@ -0,0 +1,2 @@ +geany +gnome-builder diff --git a/external/config/desktop/jammy/appgroups/programming/custom/desktops/kde/packages b/external/config/desktop/jammy/appgroups/programming/custom/desktops/kde/packages new file mode 100755 index 0000000..5988f0d --- /dev/null +++ b/external/config/desktop/jammy/appgroups/programming/custom/desktops/kde/packages @@ -0,0 +1,2 @@ +kdevelop +qtcreator diff --git a/external/config/desktop/jammy/appgroups/programming/packages b/external/config/desktop/jammy/appgroups/programming/packages new file mode 100755 index 0000000..3cf275b --- /dev/null +++ b/external/config/desktop/jammy/appgroups/programming/packages @@ -0,0 +1,6 @@ +build-essential +clang +codium +geany +meld +regexxer diff --git a/external/config/desktop/jammy/appgroups/programming/sources/apt/vscodium.source b/external/config/desktop/jammy/appgroups/programming/sources/apt/vscodium.source new file mode 100755 index 0000000..0eb625d --- /dev/null +++ b/external/config/desktop/jammy/appgroups/programming/sources/apt/vscodium.source @@ -0,0 +1 @@ +deb http://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main diff --git a/external/config/desktop/jammy/appgroups/programming/sources/apt/vscodium.source.gpg b/external/config/desktop/jammy/appgroups/programming/sources/apt/vscodium.source.gpg new file mode 100755 index 0000000..d4fb5f7 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/programming/sources/apt/vscodium.source.gpg @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFu8c8sBEACrPcX4UB0rGFObGzIpa3fqJy0K//W5XENNBrGlk6DS68SwkSza +QFoD+ZoGiwGZWy+X5m2bm6A0j8ff61uKLZFx4turikggdqey6RL3NIQOmhzbz9jc +90ZtVG3W2VHwP1Oy2sITJBD1UdCtnRR7ONfoLVJbavPrjHL0VEJqV6kF7ki45DAK +yVbEGjsg668l8FmfMIYyoqV8HQ+JosXQ6ItOH2QlGwvD5RvBmIRzIXSS159+UHBj +jrk81Pb1RLWUafoh8Geh4VZHQrvqkLmds/74KZQg47zDr1atKeIRe/p7UPZIEJsr +puOQP+4yfW8CKN/du62mO37xyJBcQpdsk+27/AAbpluwwzfrRAZcI9wqlmE7CRie +tARI3eLA/BVeLm0U5Jxemc1asTAptQTij9BvzFfZcpkwK+AcVmaicQhJ9iaa8bQ2 +oTTE5keewHgVdun+XfeMPPuRcF5QxeVK9dZQVI3nSObOXrehulkYXusMQ4vq8bh7 +GktI5n1O2qehnSn/Is7kdLBWDy8xGlgYEWe9oStQ5NSXo4PR7YWDzPs5aXBz9LOa +zthJqM1Ah41q5/rSgfhM3e+vXtF3M8phLoJTE5mlb370XVH1ZLNbXVvIuHO0L+Lh +ruZc/tREFWThOiS+FIGv/MDs4DieWEwr9+/598pFERo7cJEo5AZNgPy8SQARAQAB +tCRQYXZsbyBSdWR5aSA8cGF1bGNhcnJvdHlAcmlzZXVwLm5ldD6JAk4EEwEIADgW +IQQTAt5gIxiJ/h66ytxUZ4z3WieNnAUCW7xzywIbAwULCQgHAgYVCgkICwIEFgID +AQIeAQIXgAAKCRBUZ4z3WieNnPDyD/oCSpzl4uua0r/T4cL0rEhHVg82HounlTs2 +BxI0ZhJpjdqIE2ytIFiwdV47yAkt04ow0zEBHbZQldvixfsM3tDYrC6iiC4pRMMc +W6oVGf18r8nKKRmYTaOSPWL5yhLgO/IkQ/kCBsu3Wf0bp3GbHQ4wny+rmP745oG9 +npGPPW7EiUcFYPIM/YX2YqSH/FOGcMOwlp1QEvVqypQqaogyUmDRP+6bpKYMuq/c +GuPxHuwPmS7a3Zd6ybAtYBNumC/lNYbfxAZA1NK4WViVGB/P5GBWC0HSfLPsBu7D +/GqoqYCDTYYtSpnw2kUpkGWqOaWZc9S5Jvp26Hw+VoVGBdJUe7s7qJyeNmdjM/cR +/dNY9+fW3w9zWgJZcXTnScmpi0vzA7BLmFfsphPBZ7J1Sc+N72uV/W9A70yyNhSw +DQ20/4D2AHNozmq881LhBlOIw24jb0LlbrA7CFoR10zkpXsS/Vh1EWReV1z4zJDv +H1SKUzXaOJUpqqW0EpblEpH4qg5hknnnW4XjvlWZO/ICkKTi0LxXK9Lmcbhtzg9t +Wh7bfDXHXoQYS4QooJbzUhAHwXvQp03R0qu6UhEVhO42y5PVQ/+18FlhgBd+zP1Q +7Urb93f+7YbSa8e34ANcVvJZc7gP2oRTuVyKVjO/Q9l6+Qzg9DTFVPGYLvYJKIpK +odUkTbb/ArkCDQRbvHPLARAA3zMxF1XX4tLaz/0U7p381AXmtMA2L63mRQ3YGZxg +fVxyVx6FdLujxJHytIGnLb9FYQZkxjYyMVc8/7ukrPUTHDUHm2ab4mG0SvhDI3nx +2qeXE2dYMkpLoBqvFLekFAU129w9BLm9lbHfN+JbbdMmoqlyiufuPM6gz0gBV6ce +oXUtu8Q2/ixshSfvcdHx21ZD2HuNqSyworbzkA+0B0F51QRp1tqYJ7wQm3n82rQ+ +YFS97Un+7VWgJrX4aofUxRiDx0VHIYkEN8QcDZTQywT4zkj6tDMyKEp40axvZ6zM +AlaTI1GVrGMUHH7bnZXiF2ZyKHOF6XjTuEfotHXm8fzEHLdhtdUxiQ4+GK5ajQN2 +ay/v5JEtsc3FSAmjfTW9r6jEAiDn5TbeKHtLpeGmtPqvgK/Nzo5rRRx0NgymymeF +q7Ir4ATu9x8KKYXa/tFd2Qe8rtxNqhYjUh+W7FpMMNXYa18G+PbwNqpEGMdp51rS +9/Lq2GSYcuCV/jD2QbySUX5wHe9zDNiOuovBFhJZS8H2OGl6aep6zEpV/Q7FcWEG +9fz4RHADSGB6RFFI8hyV0/YaVU9rB4fAOZzybuJ4DSadOAsVVfkk2WdnUM6x1z24 +XhRdakH+ekGDg+nqs8wUc4u4ouo7dPTPaxbrUas5gdzjbtwoYXoKaIUnisPRranz +EjsAEQEAAYkCNgQYAQgAIBYhBBMC3mAjGIn+HrrK3FRnjPdaJ42cBQJbvHPLAhsM +AAoJEFRnjPdaJ42cEq8QAKJ1YUzQsgzUWSzkPgSZJwOAujWkDdhw+YbNvjHAgRZA +DrNbIyIYkJ/IevubOnteJgwGP/6qaMJwemM+VJ3e/YHvcvAmIilmH33tnnMRqWsj +xqG021SuX3FGdMXR7WwINZaToh+Lqaj4YXpanjPzGMGKZlzaSdj6avm7KT3HGHjO +Gk/nz0rAsqXfuzQBkHZ+JozUMqrh30+POcvkyFhqmTQ9juECFzOtegbEWYdDFBMA +tig1whBccebZ0W+Sva+e1AKktwHNtweaofCg8zQ39Nx1KOz9FoH4B2QF+dYU/yMQ +BpPYTRQPfbaf2/t5JJaoplWrE2gP+JS8ET11J7U4xtzqs7QprcCurTZv42PjwPKu +Hc8uwE1VaeX+d7zRGXD9ooR+u+BWKiwxD9p54/QHu/qh/x/4evrETTIZGsheojgm +srMYT2mW1hLFcOANAgvxuIm+O51+XYviQCGPqg8J2jm5zmxMNwEhVx0ObYcnJqve +klJniYNw9Ja9gnXxXWycChhmGM/QFLE0yrN7di7oDeN/JUhPPgppCken/xFihoxz +hlNM8vyJMQiddIBiEcz0zcAbbT74+qFJv9KRsfWAU0MEy3a66H/hybEJu140qTNw +d7e/dbqns8bDX1BP/x5/QKfxbZNoH2QWmCdv/b5dJ97OXFBtPM/VnOYaaFG5y2gX +=LCWI +-----END PGP PUBLIC KEY BLOCK----- + diff --git a/external/config/desktop/jammy/appgroups/remote_desktop/packages b/external/config/desktop/jammy/appgroups/remote_desktop/packages new file mode 100755 index 0000000..025a2f1 --- /dev/null +++ b/external/config/desktop/jammy/appgroups/remote_desktop/packages @@ -0,0 +1 @@ +remmina diff --git a/external/config/desktop/jammy/environments/xfce/appgroups/programming/packages b/external/config/desktop/jammy/environments/xfce/appgroups/programming/packages new file mode 100755 index 0000000..96c54c3 --- /dev/null +++ b/external/config/desktop/jammy/environments/xfce/appgroups/programming/packages @@ -0,0 +1,2 @@ +geany +gnome-builder diff --git a/external/config/desktop/jammy/environments/xfce/config_base/packages b/external/config/desktop/jammy/environments/xfce/config_base/packages new file mode 100755 index 0000000..bc6d47f --- /dev/null +++ b/external/config/desktop/jammy/environments/xfce/config_base/packages @@ -0,0 +1,170 @@ +anacron +apport-gtk +blueman +bluez +bluez-cups +bluez-tools +brltty +brltty-x11 +caffeine +cifs-utils +cups +cups-bsd +cups-client +cups-filters +dbus-x11 +dictionaries-common +dmz-cursor-theme +doc-base +evince +evince-common +fontconfig +fontconfig-config +fonts-arphic-ukai +fonts-arphic-uming +fonts-dejavu-core +fonts-freefont-ttf +fonts-guru +fonts-guru-extra +fonts-kacst +fonts-kacst-one +fonts-khmeros-core +fonts-liberation +fonts-nanum +fonts-opensymbol +fonts-stix +fonts-symbola +foomatic-db-compressed-ppds +gdebi +ghostscript-x +gir1.2-appindicator3-0.1 +gnome-font-viewer +gnome-screenshot +gnome-user-docs-de +gnome-user-docs-es +gnome-user-docs-it +gnome-user-docs-pt +gnome-user-docs-ru +gnome-user-docs-sl +gnome-system-monitor +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gstreamer1.0-pulseaudio +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hplip +hunspell-en-us +indicator-printers +inputattach +kerneloops +keyutils +language-pack-gnome-de +language-pack-gnome-en +language-pack-gnome-es +language-pack-gnome-fr +language-pack-gnome-it +language-pack-gnome-pt +language-pack-gnome-ru +language-pack-gnome-sl +laptop-detect +libappindicator3-1 +libatk-adaptor +libfont-afm-perl +libfontconfig1 +libfontembed1 +libfontenc1 +libgail-common +libgl1-mesa-dri +libgsettings-qt1 +libgtk2.0-bin +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +libxcursor1 +lightdm +lightdm-settings +lxtask +mesa-utils +mousepad +mousetweaks +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn +network-manager-pptp +network-manager-ssh +network-manager-vpnc +numix-gtk-theme +numix-icon-theme +numix-icon-theme-circle +openprinting-ppds +orca +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +pinta +policykit-1 +policykit-desktop-privileges +printer-driver-all +profile-sync-daemon +pulseaudio-module-bluetooth +redshift +slick-greeter +smbclient +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +thunar-volman +ttf-ubuntu-font-family +ubuntu-drivers-common +update-inetd +update-manager +update-manager-core +update-notifier +update-notifier-common +viewnior +wamerican +wbrazilian +wbritish +wfrench +witalian +wportuguese +wspanish +wswiss +x11-apps +x11-xserver-utils +xarchiver +xbacklight +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-encodings +xfonts-scalable +xfonts-utils +xinit +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +xterm +xtermcontrol +xtermset +xwallpaper +zip diff --git a/external/config/desktop/jammy/environments/xfce/config_base/packages.uninstall b/external/config/desktop/jammy/environments/xfce/config_base/packages.uninstall new file mode 100755 index 0000000..18c0f36 --- /dev/null +++ b/external/config/desktop/jammy/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 ubuntu-session \ No newline at end of file diff --git a/external/config/desktop/jammy/environments/xfce/debian/orangepi-bsp-desktop/postinst b/external/config/desktop/jammy/environments/xfce/debian/orangepi-bsp-desktop/postinst new file mode 100755 index 0000000..e69de29 diff --git a/external/config/desktop/jammy/environments/xfce/debian/orangepi-bsp-desktop/prepare.sh b/external/config/desktop/jammy/environments/xfce/debian/orangepi-bsp-desktop/prepare.sh new file mode 100755 index 0000000..e69de29 diff --git a/external/config/desktop/jammy/environments/xfce/debian/postinst b/external/config/desktop/jammy/environments/xfce/debian/postinst new file mode 100755 index 0000000..f2d3e99 --- /dev/null +++ b/external/config/desktop/jammy/environments/xfce/debian/postinst @@ -0,0 +1,22 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + + +#Adjust xsettings.xml for NumixBlue Theme Ubuntu +if [ -f /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]; then sed -i 's/Xfce-dusk/NumixBlue/g' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml; fi + +# Adjust menu +if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/jammy/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/jammy/environments/xfce/orangepi/create_desktop_package.sh new file mode 100755 index 0000000..bbc20d2 --- /dev/null +++ b/external/config/desktop/jammy/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,22 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +#install cinnamon desktop bar icons +mkdir -p "${destination}"/usr/share/icons/orangepi +cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/ +cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.jpg "${destination}"/usr/share/backgrounds/orangepi-lightdm + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi diff --git a/external/config/desktop/jammy/environments/xfce/support b/external/config/desktop/jammy/environments/xfce/support new file mode 100755 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/jammy/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/sid/appgroups/browsers/debian/postinst b/external/config/desktop/sid/appgroups/browsers/debian/postinst new file mode 100644 index 0000000..d2e421d --- /dev/null +++ b/external/config/desktop/sid/appgroups/browsers/debian/postinst @@ -0,0 +1,12 @@ +# overwrite stock chromium configuration +if [ -d /etc/chromium-browser/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium-browser/default; fi +if [ -d /etc/chromium.d/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium.d/chromium.conf; fi +cp -R /etc/orangepi/chromium /usr/share + +# overwrite stock firefox configuration +if [ -d /etc/firefox/ ]; then ln -sf /etc/orangepi/firefox.conf /etc/firefox/syspref.js; fi +if [ -d /usr/lib/firefox-esr/ ]; then + ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg + echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js + echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js +fi diff --git a/external/config/desktop/sid/appgroups/browsers/orangepi/create_desktop_package.sh b/external/config/desktop/sid/appgroups/browsers/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..d5b9f0d --- /dev/null +++ b/external/config/desktop/sid/appgroups/browsers/orangepi/create_desktop_package.sh @@ -0,0 +1,4 @@ +# install optimized browser configurations +cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi +cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi +cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi diff --git a/external/config/desktop/sid/appgroups/browsers/packages b/external/config/desktop/sid/appgroups/browsers/packages new file mode 100644 index 0000000..67f9959 --- /dev/null +++ b/external/config/desktop/sid/appgroups/browsers/packages @@ -0,0 +1,2 @@ +chromium +firefox-esr diff --git a/external/config/desktop/sid/appgroups/chat b/external/config/desktop/sid/appgroups/chat new file mode 120000 index 0000000..6fd6d40 --- /dev/null +++ b/external/config/desktop/sid/appgroups/chat @@ -0,0 +1 @@ +../../buster/appgroups/chat \ No newline at end of file diff --git a/external/config/desktop/sid/appgroups/desktop_tools b/external/config/desktop/sid/appgroups/desktop_tools new file mode 120000 index 0000000..6cac32a --- /dev/null +++ b/external/config/desktop/sid/appgroups/desktop_tools @@ -0,0 +1 @@ +../../buster/appgroups/desktop_tools \ No newline at end of file diff --git a/external/config/desktop/sid/appgroups/editors b/external/config/desktop/sid/appgroups/editors new file mode 120000 index 0000000..f5a1dbb --- /dev/null +++ b/external/config/desktop/sid/appgroups/editors @@ -0,0 +1 @@ +../../buster/appgroups/editors \ No newline at end of file diff --git a/external/config/desktop/sid/appgroups/email/packages b/external/config/desktop/sid/appgroups/email/packages new file mode 100644 index 0000000..e69de29 diff --git a/external/config/desktop/sid/appgroups/internet b/external/config/desktop/sid/appgroups/internet new file mode 120000 index 0000000..755097c --- /dev/null +++ b/external/config/desktop/sid/appgroups/internet @@ -0,0 +1 @@ +../../buster/appgroups/internet \ No newline at end of file diff --git a/external/config/desktop/sid/appgroups/multimedia b/external/config/desktop/sid/appgroups/multimedia new file mode 120000 index 0000000..f974a28 --- /dev/null +++ b/external/config/desktop/sid/appgroups/multimedia @@ -0,0 +1 @@ +../../buster/appgroups/multimedia \ No newline at end of file diff --git a/external/config/desktop/sid/appgroups/office/packages b/external/config/desktop/sid/appgroups/office/packages new file mode 100644 index 0000000..63a39a7 --- /dev/null +++ b/external/config/desktop/sid/appgroups/office/packages @@ -0,0 +1 @@ +libreoffice diff --git a/external/config/desktop/sid/appgroups/programming b/external/config/desktop/sid/appgroups/programming new file mode 120000 index 0000000..aa2c6e7 --- /dev/null +++ b/external/config/desktop/sid/appgroups/programming @@ -0,0 +1 @@ +../../buster/appgroups/programming \ No newline at end of file diff --git a/external/config/desktop/sid/appgroups/remote_desktop b/external/config/desktop/sid/appgroups/remote_desktop new file mode 120000 index 0000000..f3f9057 --- /dev/null +++ b/external/config/desktop/sid/appgroups/remote_desktop @@ -0,0 +1 @@ +../../buster/appgroups/remote_desktop \ No newline at end of file diff --git a/external/config/desktop/sid/environments/gnome/config_base/packages b/external/config/desktop/sid/environments/gnome/config_base/packages new file mode 100644 index 0000000..83ce8ce --- /dev/null +++ b/external/config/desktop/sid/environments/gnome/config_base/packages @@ -0,0 +1,205 @@ +anacron +apt-config-auto-update +at-spi2-core +bubblewrap +cups +dbus-x11 +dictionaries-common +dmz-cursor-theme +evolution-data-server +evolution-data-server-common +fonts-freefont-ttf +fonts-urw-base35 +foomatic-db-compressed-ppds +gcr +gdebi +gdm3 +genisoimage +geoclue-2.0 +ghostscript +ghostscript-x +gir1.2-accountsservice-1.0 +gir1.2-atspi-2.0 +gir1.2-gck-1 +gir1.2-gcr-3 +gir1.2-gdesktopenums-3.0 +gir1.2-gdm-1.0 +gir1.2-geoclue-2.0 +gir1.2-gnomebluetooth-1.0 +gir1.2-gnomedesktop-3.0 +gir1.2-goa-1.0 +gir1.2-graphene-1.0 +gir1.2-gweather-3.0 +gir1.2-ibus-1.0 +gir1.2-json-1.0 +gir1.2-mutter-7 +gir1.2-nm-1.0 +gir1.2-nma-1.0 +gir1.2-polkit-1.0 +gir1.2-rsvg-2.0 +gir1.2-snapd-1 +gir1.2-soup-2.4 +gir1.2-upowerglib-1.0 +gjs +gnome-control-center +gnome-desktop3-data +gnome-keyring +gnome-menus +gnome-packagekit +gnome-session +gnome-session-bin +gnome-session-common +gnome-settings-daemon +gnome-settings-daemon-common +gnome-shell +gnome-shell-common +gnome-shell-extension-appindicator +gnome-shell-extension-desktop-icons +gnome-shell-extension-trash +gvfs-backends +gvfs-bin +hunspell-en-us +inputattach +libaccountsservice0 +libasound2 +libasound2-plugins +libaspell15 +libatk-adaptor +libcairo-gobject-perl +libcairo-perl +libcamel-1.2-62 +libcue2 +libdee-1.0-4 +libebackend-1.2-10 +libebook-1.2-20 +libebook-contacts-1.2-3 +libecal-2.0-1 +libedata-book-1.2-26 +libedata-cal-2.0-1 +libedataserver-1.2-25 +libedataserverui-1.2-2 +libenchant-2-2 +libexempi8 +libexiv2-27 +libextutils-depends-perl +libextutils-pkgconfig-perl +libfontenc1 +libgck-1-0 +libgcr-base-3-1 +libgcr-ui-3-1 +libgdata22 +libgdata-common +libgdm1 +libgeoclue-2-0 +libgeocode-glib0 +libgexiv2-2 +libgjs0g +libglib-object-introspection-perl +libglib-perl +libglu1-mesa +libgnome-autoar-0-0 +libgnome-bluetooth13 +libgnome-desktop-3-19 +libgoa-1.0-0b +libgoa-1.0-common +libgraphene-1.0-0 +libgs9 +libgs9-common +libgsf-1-114 +libgsf-1-common +libgtk3-perl +libgweather-3-16 +libgweather-common +libgxps2 +libibus-1.0-5 +libical3 +libidn11 +libijs-0.35 +libimobiledevice6 +libjavascriptcoregtk-4.0-18 +libjbig2dec0 +libmutter-6-0 +libnautilus-extension1a +libnma0 +libnotify-bin +libpaper1 +libphonenumber8 +libplist3 +libpoppler-glib8 +libprotobuf17 +libpulsedsp +libsasl2-modules +libspeexdsp1 +libtext-iconv-perl +libtotem-plparser18 +libtotem-plparser-common +libtracker-control-2.0-0 +libtracker-miner-2.0-0 +libtracker-sparql-2.0-0 +libu2f-udev +libunwind8 +libupower-glib3 +libusbmuxd6 +libwebkit2gtk-4.0-37 +libxaw7 +libxfont2 +libxkbfile1 +libxmu6 +libxmuu1 +libxtst6 +libxxf86dga1 +libyelp0 +mutter +mutter-common +nautilus +nautilus-data +openprinting-ppds +p11-kit +p11-kit-modules +pavucontrol +pinentry-gnome3 +poppler-data +printer-driver-pnm2ppa +pulseaudio +pulseaudio-module-bluetooth +pulseaudio-utils +python3-click +python3-colorama +python3-dateutil +python3-debconf +python3-debian +python3-distutils +python3-distutils-extra +python3-yaml +software-properties-gtk +spice-vdagent +system-config-printer +system-config-printer-common +terminator +tracker +tracker-extract +tracker-miner-fs +upower +x11-apps +x11-session-utils +x11-utils +x11-xkb-utils +x11-xserver-utils +xarchiver +xdg-dbus-proxy +xdg-desktop-portal +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-base +xinit +xinput +xorg +xorg-docs-core +xserver-common +xserver-xorg +xserver-xorg-video-fbdev +xwayland +yelp +yelp-xsl +zenity +zenity-common diff --git a/external/config/desktop/sid/environments/gnome/debian/postinst b/external/config/desktop/sid/environments/gnome/debian/postinst new file mode 100644 index 0000000..810ba69 --- /dev/null +++ b/external/config/desktop/sid/environments/gnome/debian/postinst @@ -0,0 +1,44 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi + +# set wallpapper to orangepi + +keys=/etc/dconf/db/local.d/00-bg +locks=/etc/dconf/db/local.d/locks/background +profile=/etc/dconf/profile/user + +install -Dv /dev/null $keys +install -Dv /dev/null $locks +install -Dv /dev/null $profile + +echo "[org/gnome/desktop/background] +picture-uri='file:///usr/share/backgrounds/gnome/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF' + +[org/gnome/desktop/screensaver] +picture-uri='file:///usr/share/backgrounds/gnome/orangepi03-Dre0x-Minum-dark-blurred-3840x2160.jpg' +picture-options='zoom' +primary-color='#456789' +secondary-color='#FFFFFF'" >> $keys + +echo "/org/gnome/desktop/background/picture-uri +/org/gnome/desktop/background/picture-options +/org/gnome/desktop/background/primary-color +/org/gnome/desktop/background/secondary-color + +/org/gnome/desktop/screensaver/picture-uri +/org/gnome/desktop/screensaver/picture-options +/org/gnome/desktop/screensaver/primary-color +/org/gnome/desktop/screensaver/secondary-color" >> $locks + +echo "user-db:user +system-db:local" >> $profile + +dconf update + +#sudo apt-get -y remove gnome-shell-extension-desktop-icons diff --git a/external/config/desktop/sid/environments/gnome/only_for b/external/config/desktop/sid/environments/gnome/only_for new file mode 100644 index 0000000..d400067 --- /dev/null +++ b/external/config/desktop/sid/environments/gnome/only_for @@ -0,0 +1 @@ +arm64 diff --git a/external/config/desktop/sid/environments/gnome/orangepi/create_desktop_package.sh b/external/config/desktop/sid/environments/gnome/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..dfb4f87 --- /dev/null +++ b/external/config/desktop/sid/environments/gnome/orangepi/create_desktop_package.sh @@ -0,0 +1,32 @@ +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/gnome/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/gnome/ +mkdir -p "${destination}"/usr/share/gnome-background-properties +cat <<-EOF > "${destination}"/usr/share/gnome-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/gnome/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/gnome/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF diff --git a/external/config/desktop/sid/environments/gnome/support b/external/config/desktop/sid/environments/gnome/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/sid/environments/gnome/support @@ -0,0 +1 @@ +supported diff --git a/external/config/desktop/sid/environments/lxde/config_base/packages b/external/config/desktop/sid/environments/lxde/config_base/packages new file mode 100644 index 0000000..eba7567 --- /dev/null +++ b/external/config/desktop/sid/environments/lxde/config_base/packages @@ -0,0 +1,121 @@ +anacron +apt-xapian-index +blueman +bluez +bluez-cups +bluez-tools +brltty +bubblewrap +cifs-utils +cups +cups-bsd +cups-filters +dbus-x11 +dictionaries-common +doc-base +foomatic-db-compressed-ppds +gcr +gdebi +ghostscript-x +gnome-keyring +gstreamer1.0-packagekit +gstreamer1.0-plugins-base-apps +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +hunspell-en-us +inputattach +keyutils +libatk-adaptor +libgail-common +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +liblouis-bin +liblouisutdml-bin +libmenu-cache3 +libmenu-cache-bin +libmenu-cache-doc +libnotify-bin +libpam-gnome-keyring +libproxy1-plugin-gsettings +libproxy1-plugin-networkmanager +libu2f-udev +libwmf0.2-7-gtk +lightdm +lightdm-gtk-greeter +lightdm-gtk-greeter-settings +lxappearance +lxappearance-obconf +lxde +lxde-common +lxde-core +lxde-icon-theme +lxde-settings-daemon +lxdm +lxinput +lxlauncher +lxlock +lxmenu-data +lxmusic +lxpanel +lxpanel-data +lxpolkit +lxrandr +lxsession +lxsession-edit +lxsession-logout +lxtask +lxterminal +network-manager-gnome +network-manager-l2tp +network-manager-openconnect +network-manager-openvpn-gnome +network-manager-pptp +network-manager-vpnc +numix-gtk-theme +openbox-lxde-session +openprinting-ppds +orca +p11-kit +p7zip-full +pamix +pasystray +pavucontrol +pavucontrol-qt +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +redshift +samba +smbclient +software-properties-common +software-properties-gtk +speech-dispatcher +spice-vdagent +synaptic +system-config-printer +system-config-printer-common +task-lxde-desktop +terminator +x11-apps +x11-xserver-utils +xarchiver +xcursor-themes +xdg-user-dirs +xdg-user-dirs-gtk +xfonts-100dpi +xfonts-75dpi +xfonts-base +xfonts-scalable +xinit +xorg-docs +xorg-docs-core +xscreensaver +xserver-xorg +xserver-xorg-video-fbdev +zip diff --git a/external/config/desktop/sid/environments/lxde/debian/postinst b/external/config/desktop/sid/environments/lxde/debian/postinst new file mode 100644 index 0000000..d18b471 --- /dev/null +++ b/external/config/desktop/sid/environments/lxde/debian/postinst @@ -0,0 +1,5 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/sid/environments/lxde/orangepi/create_desktop_package.sh b/external/config/desktop/sid/environments/lxde/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..fa599e2 --- /dev/null +++ b/external/config/desktop/sid/environments/lxde/orangepi/create_desktop_package.sh @@ -0,0 +1,43 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ + +mkdir -p "${destination}"/usr/share/mate-background-properties +cat <<-EOF > "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF + +mkdir -p "${destination}"/usr/share/glib-2.0/schemas +cat <<-EOF > "${destination}"/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override +[org.gnome.desktop.background] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +show-desktop-icons=true +EOF diff --git a/external/config/desktop/sid/environments/lxde/support b/external/config/desktop/sid/environments/lxde/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/sid/environments/lxde/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/sid/environments/mate/config_base/packages b/external/config/desktop/sid/environments/mate/config_base/packages new file mode 100644 index 0000000..7921936 --- /dev/null +++ b/external/config/desktop/sid/environments/mate/config_base/packages @@ -0,0 +1,113 @@ +apt-config-auto-update +apt-xapian-index +blueman +bluez +bluez-tools +cifs-utils +dbus-x11 +debian-mate-default-settings +dictionaries-common +gcr +gdebi +gnome-keyring +gnome-orca +gnome-packagekit +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +gvfs-fuse +hunspell-en-us +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +libpam-gnome-keyring +lightdm +lightdm-gtk-greeter-settings +mate-applet-appmenu +mate-applet-brisk-menu +mate-applets +mate-applets-common +mate-backgrounds +mate-calc +mate-calc-common +mate-common +mate-control-center +mate-control-center-common +mate-core +mate-desktop +mate-desktop-common +mate-desktop-environment +mate-desktop-environment-core +mate-desktop-environment-extra +mate-desktop-environment-extras +mate-dock-applet +mate-equake-applet +mate-icon-theme +mate-icon-theme-faenza +mate-indicator-applet +mate-indicator-applet-common +mate-media +mate-media-common +mate-menu +mate-menus +mate-netbook +mate-netbook-common +mate-notification-daemon +mate-notification-daemon-common +mate-panel +mate-panel-common +mate-polkit +mate-polkit-bin +mate-polkit-common +mate-power-manager +mate-power-manager-common +mate-screensaver +mate-screensaver-common +mate-sensors-applet +mate-sensors-applet-common +mate-session-manager +mate-settings-daemon +mate-settings-daemon-common +mate-settings-daemon-dev +mate-sntray-plugin +mate-system-monitor +mate-system-monitor-common +mate-terminal +mate-terminal-common +mate-themes +mate-tweak +mate-user-guide +mate-user-share +mate-user-share-common +mate-utils +mate-utils-common +mate-window-applets-common +mate-window-buttons-applet +mate-window-menu-applet +mate-window-title-applet +network-manager-gnome +numix-gtk-theme +p11-kit +pasystray +pavucontrol +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +smbclient +software-properties-common +synaptic +system-config-printer +system-config-printer-common +tracker +tracker-extract +tracker-miner-fs +x11-xserver-utils +xarchiver +xfonts-base +xinit +xserver-xorg +xserver-xorg-video-fbdev diff --git a/external/config/desktop/sid/environments/mate/config_base/packages.uninstall b/external/config/desktop/sid/environments/mate/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/sid/environments/mate/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/sid/environments/mate/debian/postinst b/external/config/desktop/sid/environments/mate/debian/postinst new file mode 100644 index 0000000..d18b471 --- /dev/null +++ b/external/config/desktop/sid/environments/mate/debian/postinst @@ -0,0 +1,5 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/sid/environments/mate/orangepi/create_desktop_package.sh b/external/config/desktop/sid/environments/mate/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..fa599e2 --- /dev/null +++ b/external/config/desktop/sid/environments/mate/orangepi/create_desktop_package.sh @@ -0,0 +1,43 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# install logo for login screen +mkdir -p "${destination}"/usr/share/pixmaps/orangepi +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ + +mkdir -p "${destination}"/usr/share/mate-background-properties +cat <<-EOF > "${destination}"/usr/share/mate-background-properties/orangepi.xml + + + + + OrangePi light + /usr/share/backgrounds/orangepi/orangepi18-Dre0x-Minum-light-3840x2160.jpg + zoom + #ffffff + #000000 + + + OrangePi dark + /usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg + zoom + #ffffff + #000000 + + +EOF + +mkdir -p "${destination}"/usr/share/glib-2.0/schemas +cat <<-EOF > "${destination}"/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override +[org.gnome.desktop.background] +picture-uri='file:///usr/share/backgrounds/orangepi/orangepi03-Dre0x-Minum-dark-3840x2160.jpg' +show-desktop-icons=true +EOF diff --git a/external/config/desktop/sid/environments/mate/support b/external/config/desktop/sid/environments/mate/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/desktop/sid/environments/mate/support @@ -0,0 +1 @@ +csc diff --git a/external/config/desktop/sid/environments/xfce/config_base/packages b/external/config/desktop/sid/environments/xfce/config_base/packages new file mode 100644 index 0000000..545e976 --- /dev/null +++ b/external/config/desktop/sid/environments/xfce/config_base/packages @@ -0,0 +1,54 @@ +apt-xapian-index +blueman +bluez +bluez-tools +cifs-utils +dbus-x11 +dictionaries-common +gcr +gdebi +gnome-keyring +gnome-orca +gtk2-engines +gtk2-engines-murrine +gtk2-engines-pixbuf +gvfs-backends +gvfs-fuse +hunspell-en-us +libgck-1-0 +libgl1-mesa-dri +libgtk2.0-bin +libpam-gnome-keyring +lightdm +lightdm-gtk-greeter +lightdm-gtk-greeter-settings +lxtask +network-manager-gnome +numix-gtk-theme +p11-kit +pasystray +pavucontrol +pavumeter +policykit-1 +printer-driver-all +profile-sync-daemon +pulseaudio +pulseaudio-module-bluetooth +samba +smbclient +software-properties-common +synaptic +system-config-printer +system-config-printer-common +terminator +thunar-volman +x11-xserver-utils +xarchiver +xfce4 +xfce4-notifyd +xfce4-screenshooter +xfce4-terminal +xfonts-base +xinit +xserver-xorg +xserver-xorg-video-fbdev diff --git a/external/config/desktop/sid/environments/xfce/config_base/packages.uninstall b/external/config/desktop/sid/environments/xfce/config_base/packages.uninstall new file mode 100644 index 0000000..ec0762d --- /dev/null +++ b/external/config/desktop/sid/environments/xfce/config_base/packages.uninstall @@ -0,0 +1 @@ +gdm3 \ No newline at end of file diff --git a/external/config/desktop/sid/environments/xfce/debian/postinst b/external/config/desktop/sid/environments/xfce/debian/postinst new file mode 100644 index 0000000..1547df8 --- /dev/null +++ b/external/config/desktop/sid/environments/xfce/debian/postinst @@ -0,0 +1,18 @@ +# overwrite stock lightdm greeter configuration +if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + +# Adjust menu +if [ -f /etc/xdg/menus/xfce-applications.menu ]; then +sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ +\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ +\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu +fi + +# Hide few items +if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi +if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi +if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi +if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi + +# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver +if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/external/config/desktop/sid/environments/xfce/orangepi/create_desktop_package.sh b/external/config/desktop/sid/environments/xfce/orangepi/create_desktop_package.sh new file mode 100644 index 0000000..3aad859 --- /dev/null +++ b/external/config/desktop/sid/environments/xfce/orangepi/create_desktop_package.sh @@ -0,0 +1,22 @@ +# install lightdm greeter +cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + +# install default desktop settings +mkdir -p "${destination}"/etc/skel +cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel + +# using different icon pack. Workaround due to this bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867779 +sed -i 's//g' \ +"${destination}"/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml + +# install dedicated startup icons +mkdir -p "${destination}"/usr/share/pixmaps/orangepi "${destination}"/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ +cp "${EXTER}/packages/blobs/desktop/icons/${DISTRIBUTION,,}.png" "${destination}"/usr/share/pixmaps/orangepi +sed 's/xenial.png/'"${DISTRIBUTION,,}"'.png/' -i "${destination}"/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml + +# install logo for login screen +cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi + +# install wallpapers +mkdir -p "${destination}"/usr/share/backgrounds/orangepi/ +cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/orangepi/ diff --git a/external/config/desktop/sid/environments/xfce/support b/external/config/desktop/sid/environments/xfce/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/desktop/sid/environments/xfce/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/README.md b/external/config/distributions/README.md new file mode 100644 index 0000000..e7b279b --- /dev/null +++ b/external/config/distributions/README.md @@ -0,0 +1,9 @@ +## Upstream distributions status + +Supported Debian and Ubuntu upstream distributions / packages base. Here we define their status: + +|support|description| +|:--|:--| +|supported|current package base| +|csc |unstable, work in progress, old-stable| +|eos |former stable, end of life| diff --git a/external/config/distributions/bionic/name b/external/config/distributions/bionic/name new file mode 100644 index 0000000..6e4b589 --- /dev/null +++ b/external/config/distributions/bionic/name @@ -0,0 +1 @@ +Ubuntu Bionic 18.04 LTS diff --git a/external/config/distributions/bionic/support b/external/config/distributions/bionic/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/distributions/bionic/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/bookworm/name b/external/config/distributions/bookworm/name new file mode 100644 index 0000000..15078e2 --- /dev/null +++ b/external/config/distributions/bookworm/name @@ -0,0 +1 @@ +Debian 12 Bookworm diff --git a/external/config/distributions/bookworm/support b/external/config/distributions/bookworm/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/distributions/bookworm/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/bullseye/name b/external/config/distributions/bullseye/name new file mode 100644 index 0000000..81a0632 --- /dev/null +++ b/external/config/distributions/bullseye/name @@ -0,0 +1 @@ +Debian 11 Bullseye diff --git a/external/config/distributions/bullseye/support b/external/config/distributions/bullseye/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/distributions/bullseye/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/buster/name b/external/config/distributions/buster/name new file mode 100644 index 0000000..fd7da05 --- /dev/null +++ b/external/config/distributions/buster/name @@ -0,0 +1 @@ +Debian 10 Buster diff --git a/external/config/distributions/buster/support b/external/config/distributions/buster/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/distributions/buster/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/focal/name b/external/config/distributions/focal/name new file mode 100644 index 0000000..65d22ab --- /dev/null +++ b/external/config/distributions/focal/name @@ -0,0 +1 @@ +Ubuntu Focal 20.04 LTS diff --git a/external/config/distributions/focal/support b/external/config/distributions/focal/support new file mode 100644 index 0000000..a23e5fb --- /dev/null +++ b/external/config/distributions/focal/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/jammy/name b/external/config/distributions/jammy/name new file mode 100755 index 0000000..47875c1 --- /dev/null +++ b/external/config/distributions/jammy/name @@ -0,0 +1 @@ +Ubuntu jammy 22.04 LTS diff --git a/external/config/distributions/jammy/support b/external/config/distributions/jammy/support new file mode 100755 index 0000000..a23e5fb --- /dev/null +++ b/external/config/distributions/jammy/support @@ -0,0 +1 @@ +supported diff --git a/external/config/distributions/sid/name b/external/config/distributions/sid/name new file mode 100644 index 0000000..faba746 --- /dev/null +++ b/external/config/distributions/sid/name @@ -0,0 +1 @@ +Debian 12 Sid diff --git a/external/config/distributions/sid/support b/external/config/distributions/sid/support new file mode 100644 index 0000000..03cd470 --- /dev/null +++ b/external/config/distributions/sid/support @@ -0,0 +1 @@ +csc diff --git a/external/config/distributions/stretch/name b/external/config/distributions/stretch/name new file mode 100644 index 0000000..b095b99 --- /dev/null +++ b/external/config/distributions/stretch/name @@ -0,0 +1 @@ +Debian 9 Stretch diff --git a/external/config/distributions/stretch/support b/external/config/distributions/stretch/support new file mode 100644 index 0000000..bc2264c --- /dev/null +++ b/external/config/distributions/stretch/support @@ -0,0 +1 @@ +eos diff --git a/external/config/distributions/xenial/name b/external/config/distributions/xenial/name new file mode 100644 index 0000000..5775788 --- /dev/null +++ b/external/config/distributions/xenial/name @@ -0,0 +1 @@ +Ubuntu Xenial 16.04 LTS diff --git a/external/config/distributions/xenial/support b/external/config/distributions/xenial/support new file mode 100644 index 0000000..bc2264c --- /dev/null +++ b/external/config/distributions/xenial/support @@ -0,0 +1 @@ +eos diff --git a/external/config/kernel/linux-5.10-rk3399.config b/external/config/kernel/linux-5.10-rk3399.config new file mode 100755 index 0000000..0b1a705 --- /dev/null +++ b/external/config/kernel/linux-5.10-rk3399.config @@ -0,0 +1,7274 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 5.10.43 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90201 +CONFIG_LD_VERSION=233010000 +CONFIG_CLANG_VERSION=0 +CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO=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="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="localhost" +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_GENERIC_IRQ_CHIP=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_IRQ_MSI_IOMMU=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_ARCH_WANTS_IRQ_RAW=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=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_SCHED_AVG_IRQ=y +CONFIG_SCHED_THERMAL_PRESSURE=y +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=y +CONFIG_PSI_DEFAULT_DISABLED=y +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# CONFIG_UCLAMP_TASK is not set +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_CC_HAS_INT128=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +# 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=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_BPF_SYSCALL=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y +# CONFIG_BPF_PRELOAD is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# 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=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=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=y +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 + +# +# 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 is not set +# 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_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set +CONFIG_ARCH_ROCKCHIP=y +# 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 + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +# CONFIG_ARM64_ERRATUM_826319 is not set +# CONFIG_ARM64_ERRATUM_827319 is not set +# CONFIG_ARM64_ERRATUM_824069 is not set +# CONFIG_ARM64_ERRATUM_819472 is not set +# CONFIG_ARM64_ERRATUM_832075 is not set +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +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_23154 is not set +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_TX2_ERRATUM_219=y +CONFIG_FUJITSU_ERRATUM_010001=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +# 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=y +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=8 +CONFIG_HOTPLUG_CPU=y +# CONFIG_NUMA is not set +CONFIG_HOLES_IN_ZONE=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +CONFIG_HZ_300=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=300 +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_ARCH_FLATMEM_ENABLE=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_ENABLE_SPLIT_PMD_PTLOCK=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_COMPAT=y +CONFIG_KUSER_HELPERS=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_ARM64_VHE=y +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +CONFIG_ARM64_UAO=y +# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_CNP=y +# 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 +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +CONFIG_ARM64_AMU_EXTN=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +CONFIG_AS_HAS_ARMV8_5=y +CONFIG_ARM64_BTI=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARM64_AS_HAS_MTE=y +# CONFIG_ARM64_MTE is not set +# end of ARMv8.5 architectural features + +CONFIG_ARM64_SVE=y +CONFIG_ARM64_MODULE_PLTS=y +# CONFIG_ARM64_PSEUDO_NMI is not set +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# end of Kernel Features + +# +# Boot options +# +CONFIG_CMDLINE="" +# CONFIG_EFI is not set +# end of Boot options + +CONFIG_SYSVIPC_COMPAT=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=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +# CONFIG_DPM_WATCHDOG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +CONFIG_ENERGY_MODEL=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_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y +# end of ARM CPU Idle Drivers +# end of CPU Idle + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_TIMES=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y +# CONFIG_CPUFREQ_DUMMY is not set +CONFIG_ARM_ROCKCHIP_CPUFREQ=y +# CONFIG_ARM_SCMI_CPUFREQ is not set +# end of CPU Frequency scaling +# end of CPU Power Management + +# +# Firmware Drivers +# +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_DOMAIN=y +# CONFIG_ARM_SCPI_PROTOCOL is not set +# CONFIG_ARM_SDE_INTERFACE is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_QCOM_SCM is not set +CONFIG_ROCKCHIP_SIP=y +# CONFIG_GOOGLE_FIRMWARE is not set +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=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_VIRTUALIZATION is not set +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA256_ARM64=y +# CONFIG_CRYPTO_SHA512_ARM64 is not set +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +# CONFIG_CRYPTO_SHA512_ARM64_CE is not set +# CONFIG_CRYPTO_SHA3_ARM64 is not set +# CONFIG_CRYPTO_SM3_ARM64_CE is not set +# CONFIG_CRYPTO_SM4_ARM64_CE is not set +CONFIG_CRYPTO_GHASH_ARM64_CE=y +# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set +# CONFIG_CRYPTO_AES_ARM64 is not set +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set +# CONFIG_CRYPTO_CHACHA20_NEON is not set +# CONFIG_CRYPTO_POLY1305_NEON is not set +# CONFIG_CRYPTO_NHPOLY1305_NEON is not set +# CONFIG_CRYPTO_AES_ARM64_BS is not set + +# +# General architecture-dependent options +# +CONFIG_SET_FS=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=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_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=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_MOD_ARCH_SPECIFIC=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_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_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_RELR=y +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 +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# 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_CGROUP_RWSTAT=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW 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_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_DEADLINE_CGROUP=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_ASN1=y +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_UNINLINE_SPIN_UNLOCK=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_COMPAT_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_FLATMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set +CONFIG_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_BOUNCE=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CMA_AREAS=7 +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +CONFIG_ZSMALLOC=y +# 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_FRAME_VECTOR=y +# CONFIG_PERCPU_STATS is not set +CONFIG_ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT=y +CONFIG_SPECULATIVE_PAGE_FAULT=y +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# 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=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_UNIX_DIAG=m +CONFIG_TLS=m +CONFIG_TLS_DEVICE=y +# CONFIG_TLS_TOE is not set +CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +CONFIG_XFRM_INTERFACE=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +# CONFIG_XDP_SOCKETS is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m +# CONFIG_INET_ESPINTCP is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +# CONFIG_DEFAULT_CUBIC is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +# CONFIG_INET6_ESPINTCP is not set +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SEG6_HMAC=y +CONFIG_IPV6_SEG6_BPF=y +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_NETLABEL is not set +# CONFIG_MPTCP is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_COMMON=m +CONFIG_NF_LOG_NETDEV=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NETFILTER_XTABLES=m + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +# CONFIG_NETFILTER_XT_MATCH_QUOTA2 is not set +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TABLES_IPV4=y +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_FLOW_TABLE_IPV4=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +# CONFIG_IP_NF_SECURITY is not set +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NF_TABLES_IPV6=y +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_FLOW_TABLE_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +# CONFIG_IP6_NF_SECURITY is not set +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +# CONFIG_NF_TABLES_BRIDGE is not set +CONFIG_NF_CONNTRACK_BRIDGE=m +# CONFIG_BRIDGE_NF_EBTABLES 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 is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +CONFIG_STP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_BRIDGE_MRP is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_DECNET 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=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_SKBPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_CAKE is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_ETS is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +CONFIG_NET_CLS_CGROUP=m +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# 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=y +# 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=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_JIT is not set +# CONFIG_BPF_STREAM_PARSER 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 is not set +CONFIG_BT=y +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=y +# CONFIG_BT_RFCOMM_TTY is not set +# CONFIG_BT_BNEP is not set +CONFIG_BT_HIDP=y +# CONFIG_BT_HS is not set +CONFIG_BT_LE=y +# CONFIG_BT_LEDS is not set +# CONFIG_BT_MSFTEXT is not set +CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_BCM=y +# CONFIG_BT_HCIBTUSB_MTK is not set +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +# CONFIG_BT_HCIUART_INTEL is not set +# CONFIG_BT_HCIUART_AG6XX is not set +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_MTKSDIO=m +# end of Bluetooth device drivers + +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_STREAM_PARSER=y +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=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 is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +# CONFIG_CFG80211_WEXT is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +# CONFIG_MAC80211_LEDS is not set +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=y +# CONFIG_NET_9P 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=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_SOCK_VALIDATE_XMIT=y +CONFIG_NET_SOCK_MSG=y +CONFIG_PAGE_POOL=y +# CONFIG_FAILOVER is not set +CONFIG_ETHTOOL_NETLINK=y +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_PCIEAER 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_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_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# 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 is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# 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 +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_HOST=y +# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set + +# +# DesignWare PCI Core Support +# +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_HOST=y +# CONFIG_PCIE_DW_PLAT_HOST is not set +CONFIG_PCIE_DW_ROCKCHIP=y +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN 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 is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# 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=y +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# 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_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +# CONFIG_MALI_BASE_MODULES is not set +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_BRCMSTB_GISB_ARB is not set +# CONFIG_MOXTET 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=y +CONFIG_PROC_EVENTS=y +# CONFIG_GNSS is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_OF_PARTS=y +# 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=y +CONFIG_MTD_BLOCK=y +# 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 is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# 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 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 is not set +# 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=y +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set +CONFIG_MTD_SPI_NAND=y + +# +# ECC engine support +# +CONFIG_MTD_NAND_BBT_USING_FLASH=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=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# 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_DTC_SYMBOLS is not set +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_OVERLAY=y +# CONFIG_PARPORT is not set +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=y +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING 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_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +# CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_HWMON is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# CONFIG_NVME_TARGET 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=y +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_UID_SYS_STATS 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_SPI is not set +# 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 +# CONFIG_UACCE is not set + +# +# UNISOC WCN Device Drivers(for new chip...) +# +# CONFIG_SC23XX is not set +CONFIG_WCN_BSP_DRIVER_BUILDIN=y +# CONFIG_RK_WIFI_DEVICE_UWE5621 is not set +CONFIG_RK_WIFI_DEVICE_UWE5622=y +# CONFIG_AW_WIFI_DEVICE_UWE5622 is not set +# end of UNISOC WCN Device Drivers(for new chip...) + +CONFIG_TTY_OVERY_SDIO=m +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +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 is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# 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 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 is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI 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_DH is not set +# end of SCSI device support + +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +# 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 is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +# CONFIG_MD_LINEAR is not set +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# 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_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_WRITECACHE=m +CONFIG_DM_EBS=m +CONFIG_DM_ERA=m +CONFIG_DM_CLONE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_MULTIPATH_HST=m +CONFIG_DM_DELAY=m +CONFIG_DM_DUST=m +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_VERITY_FEC=y +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_INTEGRITY=m +CONFIG_DM_BOW=m +CONFIG_DM_USER=m +# 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=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +CONFIG_DUMMY=m +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +CONFIG_MACVLAN=m +# CONFIG_MACVTAP is not set +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=m +# CONFIG_IPVTAP is not set +CONFIG_VXLAN=m +# 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 is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +# CONFIG_NLMON is not set +# CONFIG_NET_VRF 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_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +# CONFIG_NET_VENDOR_AMD is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +CONFIG_NET_VENDOR_AURORA=y +# CONFIG_AURORA_NB8800 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=y +# CONFIG_GEMINI_ETHERNET 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=y +# CONFIG_GVE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +# CONFIG_NET_VENDOR_INTEL 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=y +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET 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=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC 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=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +CONFIG_R8169=m +# 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=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON 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=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=y +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=y +CONFIG_DWMAC_ROCKCHIP=y +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_STMMAC_PCI 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=y +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PHYLINK=y +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_SFP is not set + +# +# 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=m +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +CONFIG_MOTORCOMM_PHY=m +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_REALTEK_PHY=m +# CONFIG_RENESAS_PHY is not set +CONFIG_ROCKCHIP_PHY=y +CONFIG_SMSC_PHY=m +# 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=y +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +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=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +CONFIG_WLAN=y +# CONFIG_WIRELESS_WDS is not set +CONFIG_WLAN_VENDOR_ADMTEK=y +# CONFIG_ADM8211 is not set +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH5K_PCI is not set +# CONFIG_ATH9K is not set +# CONFIG_ATH9K_HTC is not set +# CONFIG_CARL9170 is not set +# CONFIG_ATH6KL is not set +# CONFIG_AR5523 is not set +# CONFIG_WIL6210 is not set +# CONFIG_ATH10K is not set +# CONFIG_WCN36XX is not set +CONFIG_WLAN_VENDOR_ATMEL=y +# CONFIG_ATMEL is not set +# CONFIG_AT76C50X_USB is not set +CONFIG_WLAN_VENDOR_BROADCOM=y +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_BRCMSMAC is not set +# CONFIG_BRCMFMAC is not set +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLWIFI is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_HERMES is not set +# CONFIG_P54_COMMON is not set +# CONFIG_PRISM54 is not set +CONFIG_WLAN_VENDOR_MARVELL=y +# CONFIG_LIBERTAS is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_MWIFIEX is not set +# CONFIG_MWL8K is not set +CONFIG_WLAN_VENDOR_MEDIATEK=y +# CONFIG_MT7601U is not set +# CONFIG_MT76x0U is not set +# CONFIG_MT76x0E is not set +# CONFIG_MT76x2E is not set +# CONFIG_MT76x2U is not set +# CONFIG_MT7603E is not set +# CONFIG_MT7615E is not set +# CONFIG_MT7663U is not set +# CONFIG_MT7663S is not set +# CONFIG_MT7915E is not set +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_RALINK=y +# CONFIG_RT2X00 is not set +CONFIG_WLAN_VENDOR_REALTEK=y +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +CONFIG_RTL_CARDS=m +# CONFIG_RTL8192CE is not set +# CONFIG_RTL8192SE is not set +# CONFIG_RTL8192DE is not set +# CONFIG_RTL8723AE is not set +# CONFIG_RTL8723BE is not set +# CONFIG_RTL8188EE is not set +# CONFIG_RTL8192EE is not set +# CONFIG_RTL8821AE is not set +# CONFIG_RTL8192CU is not set +# CONFIG_RTL8XXXU is not set +# CONFIG_RTW88 is not set +CONFIG_WLAN_VENDOR_RSI=y +# CONFIG_RSI_91X is not set +CONFIG_WLAN_VENDOR_ST=y +# CONFIG_CW1200 is not set +CONFIG_WLAN_VENDOR_TI=y +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLCORE is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_ZD1211RW is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PCIE is not set +CONFIG_WL_ROCKCHIP=m +CONFIG_WIFI_BUILD_MODULE=y +CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y +CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR=y +# CONFIG_BCMDHD is not set +# CONFIG_RTL_WIRELESS_SOLUTION is not set +# CONFIG_MVL88W8977 is not set +# CONFIG_CYW_BCMDHD is not set +CONFIG_WLAN_UWE5622=m +CONFIG_SPRDWL_NG=m +CONFIG_UNISOC_WIFI_PS=y +# CONFIG_MAC80211_HWSIM 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_NETDEVSIM is not set +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +# 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=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADC=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# 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=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 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_TM2_TOUCHKEY 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 is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +CONFIG_MOUSE_CYAPA=y +CONFIG_MOUSE_ELAN_I2C=y +CONFIG_MOUSE_ELAN_I2C_I2C=y +# CONFIG_MOUSE_ELAN_I2C_SMBUS 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=y +CONFIG_TOUCHSCREEN_PROPERTIES=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ADC is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set +# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GSL3673=y +# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set +CONFIG_TOUCHSCREEN_GT1X=y +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +CONFIG_TOUCHSCREEN_ELAN=y +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set +# CONFIG_TOUCHSCREEN_SX8654 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set +CONFIG_ROCKCHIP_REMOTECTL=y +CONFIG_ROCKCHIP_REMOTECTL_PWM=y + +# +# handle all sensors +# +# CONFIG_SENSOR_DEVICE is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ATMEL_CAPTOUCH=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_DECODER=m +CONFIG_INPUT_GPIO_VIBRA=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PWM_BEEPER=y +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_IMS_PCU=y +CONFIG_INPUT_IQS269A=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m +CONFIG_INPUT_DRV2667_HAPTICS=m +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO 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=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=10 +CONFIG_SERIAL_8250_RUNTIME_UARTS=10 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_ASPEED_VUART 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 is not set +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_SAMSUNG 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_MSM_GENI_EARLY_CONSOLE 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_DCC is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +CONFIG_HW_RANDOM_CAVIUM=y +CONFIG_HW_RANDOM_OPTEE=y +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_HW_RANDOM_ROCKCHIP=y +# CONFIG_APPLICOM is not set +CONFIG_DEVMEM=y +# CONFIG_RAW_DRIVER is not set +CONFIG_DEVPORT=y +CONFIG_TCG_TPM=y +CONFIG_HW_RANDOM_TPM=y +# CONFIG_TCG_TIS is not set +# CONFIG_TCG_TIS_SPI is not set +# CONFIG_TCG_TIS_I2C_ATMEL is not set +CONFIG_TCG_TIS_I2C_INFINEON=y +# CONFIG_TCG_TIS_I2C_NUVOTON is not set +# CONFIG_TCG_ATMEL is not set +# CONFIG_TCG_VTPM_PROXY is not set +# CONFIG_TCG_FTPM_TEE is not set +# CONFIG_TCG_TIS_ST33ZP24_I2C is not set +# CONFIG_TCG_TIS_ST33ZP24_SPI is not set +# CONFIG_XILLYBUS is not set +# end of Character devices + +# CONFIG_RANDOM_TRUST_CPU is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_DEMUX_PINCTRL is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +# end of Multiplexer I2C Chip support + +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_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 + +# +# 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_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +CONFIG_I2C_RK3X=y +# 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=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=y +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_SPI_DESIGNWARE 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=y +CONFIG_SPI_ROCKCHIP_SFC=y +# 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=y +# 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=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_DP83640_PHY=m +# CONFIG_PTP_1588_CLOCK_INES is not set +# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set +# CONFIG_PTP_1588_CLOCK_IDTCM is not set +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_MCP23S08 is not set +CONFIG_PINCTRL_ROCKCHIP=y +# CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_SX150X is not set +# CONFIG_PINCTRL_STMFX is not set +CONFIG_PINCTRL_RK805=y +# 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_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_CADENCE is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_PL061 is not set +CONFIG_GPIO_ROCKCHIP=y +# CONFIG_GPIO_SAMA5D2_PIOBU is not set +# CONFIG_GPIO_SIFIVE is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# 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 +# +# CONFIG_GPIO_TPS6586X is not set +# 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=y +CONFIG_POWER_RESET_GPIO_RESTART=y +# 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_REBOOT_MODE=y +CONFIG_SYSCON_REBOOT_MODE=y +# CONFIG_NVMEM_REBOOT_MODE is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_PDA_POWER is not set +# CONFIG_GENERIC_ADC_BATTERY 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=y +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +CONFIG_CHARGER_GPIO=y +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +CONFIG_CHARGER_BQ24735=y +# CONFIG_CHARGER_BQ2515X is not set +# CONFIG_CHARGER_BQ25700 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_CHARGER_RT9455 is not set +# CONFIG_CHARGER_UCS1002 is not set +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_BATTERY_RK816 is not set +CONFIG_BATTERY_RK817=y +CONFIG_CHARGER_RK817=y +# CONFIG_BATTERY_RK818 is not set +# CONFIG_CHARGER_RK818 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM1177 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AS370 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set +# CONFIG_SENSORS_ARM_SCMI is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_DRIVETEMP is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2947_SPI is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_MR75203 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP513 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF 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_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +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=y +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +CONFIG_CPU_THERMAL=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +CONFIG_ROCKCHIP_THERMAL=y +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +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_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=y +# 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_CORE=y +# 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_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_RK628 is not set +# CONFIG_MFD_RK630 is not set +# CONFIG_MFD_RK630_I2C is not set +# CONFIG_MFD_RK630_SPI is not set +# CONFIG_MFD_RK806 is not set +# CONFIG_MFD_RK806_SPI is not set +CONFIG_MFD_RK808=y +# CONFIG_MFD_RK1000 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=y +# 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_KHADAS_MCU is not set +# CONFIG_MFD_INTEL_M10_BMC is not set +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_ACT8865=y +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ARM_SCMI is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +CONFIG_REGULATOR_FAN53555=y +# CONFIG_REGULATOR_FAN53880 is not set +CONFIG_REGULATOR_GPIO=y +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +CONFIG_REGULATOR_LP8752=y +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MAX77826 is not set +# CONFIG_REGULATOR_MCP16502 is not set +# CONFIG_REGULATOR_MP5416 is not set +# CONFIG_REGULATOR_MP8859 is not set +CONFIG_REGULATOR_MP8865=y +# CONFIG_REGULATOR_MP886X is not set +# CONFIG_REGULATOR_MPQ7920 is not set +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +CONFIG_REGULATOR_PWM=y +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RK808=y +# CONFIG_REGULATOR_RK860X is not set +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_SLG51000 is not set +# CONFIG_REGULATOR_SY8106A is not set +# CONFIG_REGULATOR_SY8824X is not set +# CONFIG_REGULATOR_SY8827N is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +CONFIG_REGULATOR_TPS65132=y +# CONFIG_REGULATOR_TPS6524X is not set +CONFIG_REGULATOR_TPS6586X=y +# CONFIG_REGULATOR_VCTRL is not set +CONFIG_REGULATOR_XZ3216=y +# CONFIG_RC_CORE is not set +CONFIG_CEC_CORE=y +CONFIG_CEC_NOTIFIER=y +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=y +# CONFIG_MEDIA_SUPPORT_FILTER is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# +CONFIG_VIDEO_DEV=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=y +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_V4L2_MEM2MEM_DEV=y +CONFIG_V4L2_FWNODE=y +# end of Video4Linux options + +# +# Media controller options +# +# CONFIG_MEDIA_CONTROLLER_DVB is not set +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=16 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_PWC is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_S2255 is not set +# CONFIG_VIDEO_USBTV is not set + +# +# Analog TV USB devices +# +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_STK1160_COMMON is not set +# CONFIG_VIDEO_GO7007 is not set + +# +# Analog/digital TV USB devices +# +# CONFIG_VIDEO_AU0828 is not set +# CONFIG_VIDEO_CX231XX is not set + +# +# Digital TV USB devices +# +# CONFIG_DVB_USB_V2 is not set +# CONFIG_DVB_TTUSB_BUDGET is not set +# CONFIG_DVB_TTUSB_DEC is not set +# CONFIG_SMS_USB_DRV is not set +# CONFIG_DVB_B2C2_FLEXCOP_USB is not set +# CONFIG_DVB_AS102 is not set + +# +# Webcam, TV (analog/digital) USB devices +# +# CONFIG_VIDEO_EM28XX is not set + +# +# Software defined radio USB devices +# +# CONFIG_USB_AIRSPY is not set +# CONFIG_USB_HACKRF is not set +# CONFIG_USB_MSI2500 is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_RADIO_ADAPTERS=y +# CONFIG_RADIO_SI470X is not set +# CONFIG_RADIO_SI4713 is not set +# CONFIG_USB_MR800 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_SHARK is not set +# CONFIG_RADIO_SHARK2 is not set +# CONFIG_USB_KEENE is not set +# CONFIG_USB_RAREMONO is not set +# CONFIG_USB_MA901 is not set +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +CONFIG_VIDEOBUF2_VMALLOC=y +CONFIG_VIDEOBUF2_DMA_SG=y +CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_VIDEO_CAFE_CCIC is not set +# CONFIG_VIDEO_CADENCE is not set +# CONFIG_VIDEO_ASPEED is not set +# CONFIG_VIDEO_MUX is not set +# CONFIG_VIDEO_XILINX is not set +CONFIG_VIDEO_ROCKCHIP_CIF=y +CONFIG_ROCKCHIP_CIF_WORKMODE_PINGPONG=y +# CONFIG_ROCKCHIP_CIF_WORKMODE_ONEFRAME is not set +CONFIG_ROCKCHIP_CIF_USE_DUMMY_BUF=y +# CONFIG_ROCKCHIP_CIF_USE_NONE_DUMMY_BUF is not set +CONFIG_VIDEO_ROCKCHIP_ISP=y +CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V1X=y +# CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V20 is not set +CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V21=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +CONFIG_VIDEO_ROCKCHIP_RGA=y +# CONFIG_DVB_PLATFORM_DRIVERS is not set +# CONFIG_SDR_PLATFORM_DRIVERS is not set + +# +# MMC/SDIO DVB adapters +# +# CONFIG_SMS_SDIO_DRV is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_DVB_TEST_DRIVERS is not set +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# Audio decoders, processors and mixers +# +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set +# end of RDS decoders + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_LT6911UXC is not set +# CONFIG_VIDEO_LT8619C is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_NVP6158 is not set +# CONFIG_VIDEO_NVP6324 is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +# CONFIG_VIDEO_VPX3220 is not set +# CONFIG_VIDEO_MAX9286 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_CX25840 is not set +# end of Video decoders + +# +# Video encoders +# +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AD9389B is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_THS8200 is not set +# end of Video encoders + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# end of Video improvement chips + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +# CONFIG_SDR_MAX2175 is not set +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_I2C is not set +# CONFIG_VIDEO_ST_MIPID02 is not set +# end of Miscellaneous helper chips + +# +# Camera sensor devices +# +# CONFIG_VIDEO_AR0230 is not set +# CONFIG_VIDEO_GC02M2 is not set +# CONFIG_VIDEO_GC2053 is not set +# CONFIG_VIDEO_GC2093 is not set +# CONFIG_VIDEO_GC2145 is not set +# CONFIG_VIDEO_GC2385 is not set +# CONFIG_VIDEO_GC4663 is not set +# CONFIG_VIDEO_GC4C33 is not set +# CONFIG_VIDEO_GC5025 is not set +CONFIG_VIDEO_GC8034=y +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX307 is not set +# CONFIG_VIDEO_IMX317 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX323 is not set +# CONFIG_VIDEO_IMX327 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX347 is not set +# CONFIG_VIDEO_IMX378 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_OS02G10 is not set +CONFIG_VIDEO_OS04A10=y +# CONFIG_VIDEO_OS05A20 is not set +# CONFIG_VIDEO_OV02B10 is not set +# CONFIG_VIDEO_OV02K10 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV2718 is not set +# CONFIG_VIDEO_OV4686 is not set +# CONFIG_VIDEO_OV4688 is not set +CONFIG_VIDEO_OV4689=y +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +CONFIG_VIDEO_OV5695=y +CONFIG_VIDEO_OV7251=y +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV9281 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV12D2Q is not set +CONFIG_VIDEO_OV13850=y +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M032 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_M5MOLS is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5K6AA is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# end of Camera sensor devices + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + +# +# SPI helper chips +# +# CONFIG_VIDEO_GS1662 is not set +# end of SPI helper chips + +# +# Media SPI Adapters +# +CONFIG_CXD2880_SPI_DRV=m +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=y + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_M88DS3103=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_TDA10071=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_EC100=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_S921=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_TC90522=m +CONFIG_DVB_MN88443X=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_A8293=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +# end of Media ancillary drivers + +# +# Graphics support +# +# CONFIG_VGA_ARB is not set +CONFIG_DRM=y +CONFIG_DRM_MIPI_DBI=m +CONFIG_DRM_MIPI_DSI=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=y +# CONFIG_DRM_DP_CEC is not set +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_KMS_CMA_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_ROCKCHIP=y +# CONFIG_ROCKCHIP_DRM_DEBUG is not set +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_RGB=y +# CONFIG_ROCKCHIP_RK3066_HDMI is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST 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_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set +# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set +# CONFIG_DRM_PANEL_LVDS is not set +CONFIG_DRM_PANEL_SIMPLE=y +# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set +# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set +# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set +# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set +CONFIG_DRM_PANEL_INNOLUX_SL101_PN27D1665=m +# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 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_NOVATEK_NT35510 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set +# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set +# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set +# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set +# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set +# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +# CONFIG_DRM_PANEL_SONY_ACX424AKP is not set +# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set +# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set +# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set +# CONFIG_DRM_PANEL_TPO_TPG110 is not set +# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set +# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set +# CONFIG_DRM_PANEL_XINPENG_XPP055C272 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_RK1000_TVE is not set +# CONFIG_DRM_SIL_SII8620 is not set +CONFIG_DRM_SII902X=y +# 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_ANALOGIX_DP=y +# CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set +CONFIG_DRM_DW_HDMI=y +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +CONFIG_DRM_DW_HDMI_CEC=y +CONFIG_DRM_DW_MIPI_DSI=y +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_HISI_KIRIN is not set +# CONFIG_DRM_MXSFB is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_GM12U320 is not set +CONFIG_TINYDRM_HX8357D=m +CONFIG_TINYDRM_ILI9225=m +CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m +CONFIG_TINYDRM_MI0283QT=m +CONFIG_TINYDRM_REPAPER=m +CONFIG_TINYDRM_ST7586=m +CONFIG_TINYDRM_ST7735R=m +CONFIG_DRM_PL111=m +# 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 +CONFIG_MALI400=y +CONFIG_MALI450=y +# CONFIG_MALI470 is not set +# CONFIG_MALI400_DEBUG is not set +# CONFIG_MALI400_PROFILING is not set +# CONFIG_MALI400_UMP is not set +CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y +CONFIG_MALI_SHARED_INTERRUPTS=y +# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set +CONFIG_MALI_DT=y +CONFIG_MALI_DEVFREQ=y +# CONFIG_MALI_QUIET is not set +CONFIG_MALI_MIDGARD=y +# CONFIG_MALI_GATOR_SUPPORT is not set +# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set +# CONFIG_MALI_DMA_FENCE is not set +CONFIG_MALI_EXPERT=y +# CONFIG_MALI_CORESTACK is not set +# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set +# CONFIG_MALI_PLATFORM_FAKE is not set +# CONFIG_MALI_PLATFORM_DEVICETREE is not set +CONFIG_MALI_PLATFORM_THIRDPARTY=y +CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" +CONFIG_MALI_DEBUG=y +CONFIG_MALI_FENCE_DEBUG=y +# CONFIG_MALI_NO_MALI is not set +# CONFIG_MALI_TRACE_TIMELINE is not set +# CONFIG_MALI_SYSTEM_TRACE is not set +# CONFIG_MALI_GPU_MMU_AARCH64 is not set +CONFIG_MALI_PWRSOFT_765=y +# CONFIG_MALI_KUTF is not set +CONFIG_MALI_BIFROST=y +CONFIG_MALI_PLATFORM_NAME="rk" +CONFIG_MALI_REAL_HW=y + +# +# Platform specific options +# +CONFIG_MALI_BIFROST_DEVFREQ=y +CONFIG_MALI_BIFROST_GATOR_SUPPORT=y +CONFIG_MALI_BIFROST_ENABLE_TRACE=y +# CONFIG_MALI_BIFROST_DMA_FENCE is not set +# CONFIG_MALI_ARBITER_SUPPORT is not set +# CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND is not set +# CONFIG_MALI_DMA_BUF_LEGACY_COMPAT is not set +CONFIG_MALI_BIFROST_EXPERT=y +# CONFIG_MALI_2MB_ALLOC is not set +# CONFIG_MALI_MEMORY_FULLY_BACKED is not set + +# +# Platform options +# +# CONFIG_MALI_BIFROST_NO_MALI is not set +# CONFIG_MALI_GEM5_BUILD is not set + +# +# Debug options +# +CONFIG_MALI_BIFROST_DEBUG=y +CONFIG_MALI_BIFROST_FENCE_DEBUG=y +CONFIG_MALI_BIFROST_SYSTEM_TRACE=y + +# +# Instrumentation options +# +CONFIG_MALI_PRFCNT_SET_PRIMARY=y +# CONFIG_MALI_BIFROST_PRFCNT_SET_SECONDARY is not set +# CONFIG_MALI_PRFCNT_SET_TERTIARY is not set +# CONFIG_MALI_PRFCNT_SET_SELECT_VIA_DEBUG_FS is not set +# CONFIG_MALI_JOB_DUMP is not set + +# +# Workarounds +# +# CONFIG_MALI_HW_ERRATA_1485982_NOT_AFFECTED is not set +# CONFIG_MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE is not set +# CONFIG_MALI_ARBITRATION is not set + +# +# 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 is not set + +# +# 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_UVESA is not set +# 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 +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_KTD253=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_QCOM_WLED=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_ARCXCNN=m +CONFIG_BACKLIGHT_LED=m +# end of Backlight & LCD device support + +# +# Rockchip Misc Video driver +# + +# +# RGA +# +# CONFIG_ROCKCHIP_RGA is not set +# end of RGA + +CONFIG_ROCKCHIP_RGA2=y +# CONFIG_ROCKCHIP_RGA2_PROC_FS is not set +CONFIG_ROCKCHIP_RGA2_DEBUG_FS=y +CONFIG_ROCKCHIP_RGA2_DEBUGGER=y + +# +# IEP +# +# CONFIG_IEP is not set +# end of IEP + +CONFIG_ROCKCHIP_MPP_SERVICE=y +CONFIG_ROCKCHIP_MPP_PROC_FS=y +CONFIG_ROCKCHIP_MPP_RKVDEC=y +CONFIG_ROCKCHIP_MPP_RKVDEC2=y +CONFIG_ROCKCHIP_MPP_RKVENC=y +CONFIG_ROCKCHIP_MPP_VDPU1=y +CONFIG_ROCKCHIP_MPP_VEPU1=y +CONFIG_ROCKCHIP_MPP_VDPU2=y +CONFIG_ROCKCHIP_MPP_VEPU2=y +CONFIG_ROCKCHIP_MPP_IEP2=y +CONFIG_ROCKCHIP_MPP_JPGDEC=y +# end of Rockchip Misc Video driver + +CONFIG_VIDEOMODE_HELPERS=y +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_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y +CONFIG_BOOTSPLASH=y +# end of Console display driver support + +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y +# end of Graphics support + +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_SEQ_DEVICE=y +CONFIG_SND_RAWMIDI=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=y +CONFIG_SND_SEQ_MIDI=y +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +# CONFIG_SND_PCI is not set + +# +# HD-Audio +# +# end of HD-Audio + +CONFIG_SND_HDA_PREALLOC_SIZE=64 +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set +# CONFIG_SND_DESIGNWARE_I2S is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_I2S_HI3660_I2S is not set +# CONFIG_SND_SOC_IMG is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_I2S=y +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y +CONFIG_SND_SOC_ROCKCHIP_PDM=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +CONFIG_SND_SOC_ROCKCHIP_MAX98090=y +CONFIG_SND_SOC_ROCKCHIP_RT5645=y +# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set +# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set +# CONFIG_SND_SOC_SOF_TOPLEVEL is not set + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +# CONFIG_ZX_TDM is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +# CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_ADAU7118_HW is not set +# CONFIG_SND_SOC_ADAU7118_I2C is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set +# CONFIG_SND_SOC_CS42L42 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4234 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CX2072X is not set +# CONFIG_SND_SOC_DA7213 is not set +# CONFIG_SND_SOC_DMIC is not set +CONFIG_SND_SOC_DUMMY_CODEC=y +CONFIG_SND_SOC_HDMI_CODEC=y +# CONFIG_SND_SOC_ES7134 is not set +CONFIG_SND_SOC_ES7202=y +# CONFIG_SND_SOC_ES7210 is not set +# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_ES7243E=y +CONFIG_SND_SOC_ES8311=y +CONFIG_SND_SOC_ES8316=y +# CONFIG_SND_SOC_ES8323 is not set +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_ES8396 is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98088 is not set +CONFIG_SND_SOC_MAX98090=y +# CONFIG_SND_SOC_MAX98357A is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +# CONFIG_SND_SOC_MAX98927 is not set +# CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98390 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RK312X is not set +# CONFIG_SND_SOC_RK3228 is not set +CONFIG_SND_SOC_RK3308=y +CONFIG_SND_SOC_RK3328=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_RK_CODEC_DIGITAL=y +CONFIG_SND_SOC_RL6231=y +CONFIG_SND_SOC_RT5616=y +# CONFIG_SND_SOC_RT5631 is not set +CONFIG_SND_SOC_RT5640=y +CONFIG_SND_SOC_RT5645=y +CONFIG_SND_SOC_RT5651=y +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +CONFIG_SND_SOC_SPDIF=y +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set +CONFIG_SND_SOC_TS3A227E=y +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8524 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8782 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_ZL38060 is not set +# CONFIG_SND_SOC_ZX_AUD96P22 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8822 is not set +# CONFIG_SND_SOC_NAU8824 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# end of CODEC drivers + +CONFIG_SND_SIMPLE_CARD_UTILS=y +CONFIG_SND_SIMPLE_CARD=y +# CONFIG_SND_AUDIO_GRAPH_CARD is not set + +# +# HID support +# +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +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_ASUS is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_BIGBEN_FF is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CP2112 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_ELAN 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_GT683R 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=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LOGITECH 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=y +# CONFIG_HID_NINTENDO 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_PLAYSTATION 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_SONY 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_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE 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=y +# 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_LED_TRIG is not set +# 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 is not set +# CONFIG_USB_FEW_INIT_RETRIES is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +# CONFIG_USB_OTG_FSM is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT 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=m +CONFIG_USB_XHCI_PCI_RENESAS=m +CONFIG_USB_XHCI_PLATFORM=y +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 is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_UHCI_HCD is not set +# 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=y +# CONFIG_USB_PRINTER is not set +CONFIG_USB_WDM=m +# 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=y + +# +# 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=y +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_HAPS=y +CONFIG_USB_DWC3_OF_SIMPLE=y +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_HOST is not set + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +# CONFIG_USB_DWC2_PERIPHERAL is not set +CONFIG_USB_DWC2_DUAL_ROLE=y +# CONFIG_USB_DWC2_PCI is not set +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS 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=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# 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=y +# 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_USB_PHY=y +# 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=y +# CONFIG_USB_GADGET_DEBUG is not set +CONFIG_USB_GADGET_DEBUG_FILES=y +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +# CONFIG_U_SERIAL_CONSOLE is not set + +# +# USB Peripheral Controller +# +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_MAX3420_UDC is not set +# CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=y +CONFIG_USB_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_F_MASS_STORAGE=y +CONFIG_USB_F_FS=y +CONFIG_USB_F_UVC=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_UEVENT=y +# CONFIG_USB_CONFIGFS_SERIAL is not set +CONFIG_USB_CONFIGFS_ACM=y +# CONFIG_USB_CONFIGFS_OBEX is not set +# CONFIG_USB_CONFIGFS_NCM is not set +# CONFIG_USB_CONFIGFS_ECM is not set +# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set +# CONFIG_USB_CONFIGFS_RNDIS is not set +# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +# CONFIG_USB_CONFIGFS_F_LB_SS is not set +CONFIG_USB_CONFIGFS_F_FS=y +# CONFIG_USB_CONFIGFS_F_ACC is not set +# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set +# CONFIG_USB_CONFIGFS_F_UAC1 is not set +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +# CONFIG_USB_CONFIGFS_F_UAC2 is not set +# CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_HID is not set +CONFIG_USB_CONFIGFS_F_UVC=y +# CONFIG_USB_CONFIGFS_F_PRINTER is not set + +# +# USB Gadget precomposed configurations +# +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_ETH is not set +# CONFIG_USB_G_NCM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_MASS_STORAGE is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_RAW_GADGET is not set +# end of USB Gadget precomposed configurations + +# CONFIG_TYPEC is not set +CONFIG_USB_ROLE_SWITCH=y +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +# CONFIG_SDIO_UART is not set +CONFIG_MMC_TEST=y + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +CONFIG_MMC_SDHCI=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +# CONFIG_MMC_SDHCI_OF_ASPEED is not set +# CONFIG_MMC_SDHCI_OF_AT91 is not set +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_SDHCI_MILBEAUT 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=y +CONFIG_MMC_DW_PLTFM=y +# CONFIG_MMC_DW_BLUEFIELD is not set +# CONFIG_MMC_DW_EXYNOS is not set +# CONFIG_MMC_DW_HI3798CV200 is not set +# CONFIG_MMC_DW_K3 is not set +# CONFIG_MMC_DW_PCI is not set +CONFIG_MMC_DW_ROCKCHIP=y +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_CQHCI=y +# CONFIG_MMC_HSQ is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MMC_SDHCI_OMAP is not set +# CONFIG_MMC_SDHCI_AM654 is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_CLASS_MULTICOLOR is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_AW2013 is not set +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_CR0014114 is not set +# CONFIG_LEDS_EL15203000 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP50XX is not set +# CONFIG_LEDS_LP55XX_COMMON is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_PWM is not set +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +CONFIG_LEDS_IS31FL32XX=y + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_SYSCON is not set +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +# CONFIG_LEDS_SPI_BYTE is not set +# CONFIG_LEDS_TI_LMU_COMMON is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_TIMER is not set +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_MTD is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +# CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc1" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc1" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# 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=m +CONFIG_RTC_DRV_DS1307_CENTURY=y +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1672=m +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +CONFIG_RTC_DRV_RK808=y +CONFIG_RTC_DRV_RS5C372=m +# 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_TPS6586X 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_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=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_BCM_SBA_RAID is not set +# CONFIG_DW_AXI_DMAC is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_FSL_QDMA is not set +# CONFIG_HISI_DMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_MV_XOR_V2 is not set +CONFIG_PL330_DMA=y +# CONFIG_PLX_DMA is not set +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_XILINX_ZYNQMP_DPDMA is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +# CONFIG_DW_EDMA is not set +# CONFIG_DW_EDMA_PCIE is not set +# CONFIG_SF_PDMA is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +CONFIG_SW_SYNC=y +# CONFIG_UDMABUF is not set +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_SELFTESTS is not set +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_SYSFS_STATS=y +CONFIG_DMABUF_HEAPS_DEFERRED_FREE=y +CONFIG_DMABUF_HEAPS_PAGE_POOL=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO_MENU=y +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VIRTIO_DMA_SHARED_BUFFER is not set +# CONFIG_VDPA is not set +CONFIG_VHOST_MENU=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_COMEDI is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTLLIB is not set +# CONFIG_RTL8723BS is not set +# CONFIG_R8712U is not set +# CONFIG_R8188EU is not set +# CONFIG_RTS5208 is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7816 is not set +# CONFIG_AD7280 is not set +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set +# end of Analog digital bi-direction converters + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set +# end of Network Analyzer, Impedance Converters + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set +# end of Active energy metering IC + +# +# Resolver to digital converters +# +# CONFIG_AD2S1210 is not set +# end of Resolver to digital converters +# end of IIO staging drivers + +# CONFIG_FB_SM750 is not set +# CONFIG_STAGING_MEDIA is not set + +# +# Android +# +# end of Android + +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_UNISYSSPAR is not set +# CONFIG_FB_TFT is not set +CONFIG_FUSB_30X=m +# CONFIG_KS7010 is not set +# CONFIG_PI433 is not set + +# +# Gasket devices +# +# CONFIG_STAGING_GASKET_FRAMEWORK is not set +# end of Gasket devices + +# CONFIG_XIL_AXIS_FIFO is not set +# CONFIG_FIELDBUS_DEV is not set +# CONFIG_QLGE is not set +# CONFIG_WFX is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_HAVE_CLK=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_PROCFS is not set + +# +# Clock driver for ARM Reference designs +# +# CONFIG_ICST is not set +# CONFIG_CLK_SP810 is not set +# end of Clock driver for ARM Reference designs + +# CONFIG_COMMON_CLK_MAX9485 is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCMI=y +# 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_PWM=y +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set +CONFIG_COMMON_CLK_ROCKCHIP=y +CONFIG_CLK_PX30=y +CONFIG_CLK_RK1808=y +CONFIG_CLK_RK3308=y +CONFIG_CLK_RK3328=y +CONFIG_CLK_RK3368=y +CONFIG_CLK_RK3399=y +CONFIG_CLK_RK3568=y +CONFIG_CLK_RK3588=y +# CONFIG_ROCKCHIP_CLK_COMPENSATION is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ROCKCHIP_TIMER=y +# CONFIG_SUN4I_TIMER is not set +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_MTK_TIMER is not set +# CONFIG_MICROCHIP_PIT64B is not set +# end of Clock Source drivers + +CONFIG_MAILBOX=y +# CONFIG_ARM_MHU is not set +# CONFIG_PLATFORM_MHU is not set +# CONFIG_PL320_MBOX is not set +# CONFIG_ROCKCHIP_MBOX is not set +# CONFIG_ALTERA_MBOX is not set +# CONFIG_MAILBOX_TEST is not set +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_LIMIT_IOVA_ALIGNMENT is not set +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +CONFIG_IOMMU_DMA=y +CONFIG_ROCKCHIP_IOMMU=y +# CONFIG_ARM_SMMU is not set +# CONFIG_ARM_SMMU_V3 is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# 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 + +# +# Rockchip CPU selection +# +CONFIG_CPU_PX30=y +CONFIG_CPU_RK1808=y +# CONFIG_CPU_RK3308 is not set +CONFIG_CPU_RK3328=y +# CONFIG_CPU_RK3368 is not set +CONFIG_CPU_RK3399=y +CONFIG_CPU_RK3568=y +# CONFIG_CPU_RK3588 is not set +# end of Rockchip CPU selection + +# CONFIG_NO_GKI is not set +CONFIG_ROCKCHIP_CPUINFO=y +CONFIG_ROCKCHIP_GRF=y +# CONFIG_ROCKCHIP_HW_DECOMPRESS is not set +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_IPA=y +CONFIG_ROCKCHIP_OPP=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_PVTM=y +CONFIG_ROCKCHIP_SUSPEND_MODE=y +CONFIG_ROCKCHIP_SYSTEM_MONITOR=y +CONFIG_ROCKCHIP_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_MMC_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_ROCKCHIP_DEBUG=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y +# CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ is not set +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_FSA9480 is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_MEMORY is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGERED_BUFFER=y +# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set +# CONFIG_IIO_TRIGGERED_EVENT is not set + +# +# Accelerometers +# +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set +# CONFIG_BMA220 is not set +# CONFIG_BMA400 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD06 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7091R5 is not set +# CONFIG_AD7124 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7292 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD7949 is not set +# CONFIG_AD799X is not set +# CONFIG_ADI_AXI_ADC is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2496 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX1241 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP3911 is not set +# CONFIG_NAU7802 is not set +CONFIG_ROCKCHIP_SARADC=y +# CONFIG_ROCKCHIP_SARADC_TEST_CHN is not set +# CONFIG_SD_ADC_MODULATOR is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC084S021 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC108S102 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8344 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_VF610_ADC is not set +# CONFIG_XILINX_XADC is not set +# end of Analog to digital converters + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_SCD30_CORE is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SPS30 is not set +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +# +# Hid Sensor IIO Common +# +# end of Hid Sensor IIO Common + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_AD5686_SPI is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5758 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5770R is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_DS4424 is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# CONFIG_VF610_DAC is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# end of IIO dummy driver + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +# CONFIG_ADF4371 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS290 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16460 is not set +# CONFIG_ADIS16475 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_FXOS8700_I2C is not set +# CONFIG_FXOS8700_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_ICM42600_I2C is not set +# CONFIG_INV_ICM42600_SPI is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set +# end of Inertial measurement units + +# +# Light sensors +# +# CONFIG_ADJD_S311 is not set +# CONFIG_ADUX1020 is not set +# CONFIG_AL3010 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_AS73211 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM3605 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP002 is not set +# CONFIG_GP2AP020A00F is not set +CONFIG_SENSORS_ISL29018=y +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set +# CONFIG_NOA1305 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VCNL4035 is not set +# CONFIG_VEML6030 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set +# end of Light sensors + +# +# Magnetometer sensors +# +# CONFIG_AK8974 is not set +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set +# end of Multiplexers + +# +# Inclinometer sensors +# +# end of Inclinometer sensors + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=y +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5432 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set +# CONFIG_TPL0102 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_DLHL60D is not set +# CONFIG_DPS310 is not set +# CONFIG_HP03 is not set +# CONFIG_ICP10100 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set +# CONFIG_PING is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +# CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +# CONFIG_LTC2983 is not set +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_MAX31856 is not set +# end of Temperature sensors + +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +CONFIG_PWM=y +CONFIG_PWM_SYSFS=y +# CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_FSL_FTM is not set +# CONFIG_PWM_PCA9685 is not set +CONFIG_PWM_ROCKCHIP=y + +# +# 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_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_BRCMSTB_RESCAL is not set +# CONFIG_RESET_INTEL_GW is not set +CONFIG_RESET_SCMI=y +# CONFIG_RESET_TI_SYSCON is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=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_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_OCELOT_SERDES is not set +CONFIG_PHY_ROCKCHIP_CSI2_DPHY=y +CONFIG_PHY_ROCKCHIP_DP=y +# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set +CONFIG_PHY_ROCKCHIP_EMMC=y +# CONFIG_PHY_ROCKCHIP_INNO_COMBPHY is not set +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_USB3=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +CONFIG_PHY_ROCKCHIP_MIPI_RX=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_NANENG_EDP=y +# CONFIG_PHY_ROCKCHIP_NANENG_USB2 is not set +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +# CONFIG_PHY_SAMSUNG_USB2 is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_ARM_CCI_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# end of Performance monitor support + +# CONFIG_RAS is not set +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +CONFIG_ROCKCHIP_EFUSE=y +CONFIG_ROCKCHIP_OTP=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +CONFIG_TEE=y + +# +# TEE drivers +# +CONFIG_OPTEE=y +CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1 +# end of TEE drivers + +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_RK_FLASH is not set +# CONFIG_RK_NAND is not set + +# +# Headset device support +# +CONFIG_RK_HEADSET=y +# end of Headset device support + +# +# RKNPU +# +CONFIG_ROCKCHIP_RKNPU=y +# end of RKNPU +# 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 is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG 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=y +CONFIG_XFS_SUPPORT_V4=y +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_BTRFS_FS=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +# CONFIG_DNOTIFY is not set +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +# CONFIG_VIRTIO_FS is not set +CONFIG_OVERLAY_FS=y +# 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 +# CONFIG_INCREMENTAL_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=936 +CONFIG_FAT_DEFAULT_IOCHARSET="utf8" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +CONFIG_NTFS_FS=y +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE 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_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_TMPFS_INODE64 is not set +# CONFIG_HUGETLBFS is not set +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +# 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=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y +# 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 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 is not set +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XZ is not set +# 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=y +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +CONFIG_PSTORE_CONSOLE=y +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=y +# CONFIG_PSTORE_BLK 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=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +# CONFIG_ROOT_NFS 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 is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_SUNRPC_SWAP=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +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=y +# 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=y +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=y +# CONFIG_DLM is not set +CONFIG_UNICODE=y +# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_TRUSTED_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_PATH=y +CONFIG_LSM_MMAP_MIN_ADDR=32768 +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0 +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_EVM is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_APPARMOR is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +# 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 +# end of Security options + +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS140=y +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=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=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=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=m +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +# 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=m +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=m + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# 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=y +CONFIG_CRYPTO_BLAKE2B=y +# CONFIG_CRYPTO_BLAKE2S is not set +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_GHASH=m +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# 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=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3 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=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# 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 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +CONFIG_CRYPTO_ZSTD=y + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_USER_API=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +CONFIG_CRYPTO_HASH_INFO=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +# CONFIG_CRYPTO_LIB_BLAKE2S is not set +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +CONFIG_CRYPTO_DEV_ROCKCHIP=y +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_HISI_SEC is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING 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_LINEAR_RANGES=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 +CONFIG_CRC_CCITT=y +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=y +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=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +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_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=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_TEARDOWN_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_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_REMAP=y +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DMA_CMA=y +# CONFIG_DMA_PERNUMA_CMA is not set + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=16 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +# CONFIG_DMA_API_DEBUG is not set +CONFIG_SGL_ALLOC=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +# CONFIG_IRQ_POLL is not set +CONFIG_MPILIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=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=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO 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_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 +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +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 +# end of Generic Kernel Debugging Instruments + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_PINNER 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 is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +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_CC_HAS_KASAN_GENERIC=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 is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# 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=y +# 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=y +# 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 is not set +# 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 is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +CONFIG_DEBUG_CREDENTIALS=y + +# +# 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=60 +CONFIG_RCU_TRACE=y +# CONFIG_RCU_EQS_DEBUG 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_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +# CONFIG_TRACE_MMIO_ACCESS is not set +# CONFIG_TRACEFS_DISABLE_AUTOMOUNT is not set +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +# CONFIG_FUNCTION_PROFILER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT 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=y +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +CONFIG_FTRACE_MCOUNT_RECORD=y +CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=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_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR 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_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=y +CONFIG_LKDTM=y +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_REED_SOLOMON_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_STRSCPY is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_BLACKHOLE_DEV is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_STACKINIT is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_FREE_PAGES is not set +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/external/config/kernel/linux-5.10-sunxi64-current.config b/external/config/kernel/linux-5.10-sunxi64-current.config old mode 100644 new mode 100755 index 3f602ac..7bd6d4d --- a/external/config/kernel/linux-5.10-sunxi64-current.config +++ b/external/config/kernel/linux-5.10-sunxi64-current.config @@ -2398,7 +2398,7 @@ CONFIG_MICREL_PHY=m CONFIG_MICROCHIP_PHY=m CONFIG_MICROCHIP_T1_PHY=m # CONFIG_MICROSEMI_PHY is not set -CONFIG_MOTORCOMM_PHY=y +CONFIG_MOTORCOMM_PHY=m CONFIG_NATIONAL_PHY=m # CONFIG_NXP_TJA11XX_PHY is not set CONFIG_AT803X_PHY=m diff --git a/external/config/kernel/linux-5.10.66-rk3399.config b/external/config/kernel/linux-5.10.66-rk3399.config new file mode 100755 index 0000000..941e33a --- /dev/null +++ b/external/config/kernel/linux-5.10.66-rk3399.config @@ -0,0 +1,7309 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 5.10.66 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90201 +CONFIG_LD_VERSION=233010000 +CONFIG_CLANG_VERSION=0 +CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO=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="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="localhost" +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_GENERIC_IRQ_CHIP=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_IRQ_MSI_IOMMU=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_ARCH_WANTS_IRQ_RAW=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=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_SCHED_AVG_IRQ=y +CONFIG_SCHED_THERMAL_PRESSURE=y +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=y +CONFIG_PSI_DEFAULT_DISABLED=y +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# CONFIG_UCLAMP_TASK is not set +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_CC_HAS_INT128=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_RT_SOFTINT_OPTIMIZATION is not set +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +# 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=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_BPF_SYSCALL=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y +# CONFIG_BPF_PRELOAD is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# 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=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=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=y +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 + +# +# 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 is not set +# 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_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set +CONFIG_ARCH_ROCKCHIP=y +# 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 + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +# CONFIG_ARM64_ERRATUM_826319 is not set +# CONFIG_ARM64_ERRATUM_827319 is not set +# CONFIG_ARM64_ERRATUM_824069 is not set +# CONFIG_ARM64_ERRATUM_819472 is not set +# CONFIG_ARM64_ERRATUM_832075 is not set +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +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_23154 is not set +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_TX2_ERRATUM_219=y +CONFIG_FUJITSU_ERRATUM_010001=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +# 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=y +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=8 +CONFIG_HOTPLUG_CPU=y +# CONFIG_NUMA is not set +CONFIG_HOLES_IN_ZONE=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +CONFIG_HZ_300=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=300 +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_ARCH_FLATMEM_ENABLE=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_ENABLE_SPLIT_PMD_PTLOCK=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_COMPAT=y +CONFIG_KUSER_HELPERS=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_ARM64_VHE=y +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +CONFIG_ARM64_UAO=y +# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_CNP=y +# 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 +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +CONFIG_ARM64_AMU_EXTN=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +CONFIG_AS_HAS_ARMV8_5=y +CONFIG_ARM64_BTI=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARM64_AS_HAS_MTE=y +# CONFIG_ARM64_MTE is not set +# end of ARMv8.5 architectural features + +CONFIG_ARM64_SVE=y +CONFIG_ARM64_MODULE_PLTS=y +# CONFIG_ARM64_PSEUDO_NMI is not set +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# end of Kernel Features + +# +# Boot options +# +CONFIG_CMDLINE="" +# CONFIG_EFI is not set +# end of Boot options + +CONFIG_SYSVIPC_COMPAT=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=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +# CONFIG_DPM_WATCHDOG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +CONFIG_ENERGY_MODEL=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_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y +# end of ARM CPU Idle Drivers +# end of CPU Idle + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_TIMES=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y +# CONFIG_CPUFREQ_DUMMY is not set +CONFIG_ARM_ROCKCHIP_CPUFREQ=y +# CONFIG_ARM_SCMI_CPUFREQ is not set +# end of CPU Frequency scaling +# end of CPU Power Management + +# +# Firmware Drivers +# +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_DOMAIN=y +# CONFIG_ARM_SCPI_PROTOCOL is not set +# CONFIG_ARM_SDE_INTERFACE is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_QCOM_SCM is not set +CONFIG_ROCKCHIP_SIP=y +# CONFIG_GOOGLE_FIRMWARE is not set +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=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_VIRTUALIZATION is not set +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA256_ARM64=y +# CONFIG_CRYPTO_SHA512_ARM64 is not set +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +# CONFIG_CRYPTO_SHA512_ARM64_CE is not set +# CONFIG_CRYPTO_SHA3_ARM64 is not set +# CONFIG_CRYPTO_SM3_ARM64_CE is not set +# CONFIG_CRYPTO_SM4_ARM64_CE is not set +CONFIG_CRYPTO_GHASH_ARM64_CE=y +# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set +# CONFIG_CRYPTO_AES_ARM64 is not set +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set +# CONFIG_CRYPTO_CHACHA20_NEON is not set +# CONFIG_CRYPTO_POLY1305_NEON is not set +# CONFIG_CRYPTO_NHPOLY1305_NEON is not set +# CONFIG_CRYPTO_AES_ARM64_BS is not set + +# +# General architecture-dependent options +# +CONFIG_SET_FS=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=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_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=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_MOD_ARCH_SPECIFIC=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_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_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_RELR=y +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 +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SCMVERSION 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_CGROUP_RWSTAT=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW 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_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_DEADLINE_CGROUP=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_ASN1=y +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_UNINLINE_SPIN_UNLOCK=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_GKI_HIDDEN_DRM_CONFIGS is not set +# CONFIG_GKI_HIDDEN_REGMAP_CONFIGS is not set +# CONFIG_GKI_HIDDEN_CRYPTO_CONFIGS is not set +# CONFIG_GKI_HIDDEN_SND_CONFIGS is not set +# CONFIG_GKI_HIDDEN_SND_SOC_CONFIGS is not set +# CONFIG_GKI_HIDDEN_MMC_CONFIGS is not set +# CONFIG_GKI_HIDDEN_GPIO_CONFIGS is not set +# CONFIG_GKI_HIDDEN_QCOM_CONFIGS is not set +# CONFIG_GKI_HIDDEN_MEDIA_CONFIGS is not set +# CONFIG_GKI_HIDDEN_VIRTUAL_CONFIGS is not set +# CONFIG_GKI_LEGACY_WEXT_ALLCONFIG is not set +# CONFIG_GKI_HIDDEN_USB_CONFIGS is not set +# CONFIG_GKI_HIDDEN_SOC_BUS_CONFIGS is not set +# CONFIG_GKI_HIDDEN_RPMSG_CONFIGS is not set +# CONFIG_GKI_HIDDEN_GPU_CONFIGS is not set +# CONFIG_GKI_HIDDEN_IRQ_CONFIGS is not set +# CONFIG_GKI_HIDDEN_HYPERVISOR_CONFIGS is not set +# CONFIG_GKI_HIDDEN_NET_CONFIGS is not set +# CONFIG_GKI_HIDDEN_PHY_CONFIGS is not set +# CONFIG_GKI_HIDDEN_MM_CONFIGS is not set +# CONFIG_GKI_HIDDEN_DMA_CONFIGS is not set +# CONFIG_GKI_HIDDEN_ETHERNET_CONFIGS is not set +# CONFIG_GKI_HACKS_TO_FIX is not set +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_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_FLATMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set +CONFIG_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_BOUNCE=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CMA_AREAS=7 +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +CONFIG_ZSMALLOC=y +# 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_FRAME_VECTOR=y +# CONFIG_PERCPU_STATS is not set +CONFIG_ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT=y +CONFIG_SPECULATIVE_PAGE_FAULT=y +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# 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=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_UNIX_DIAG=m +CONFIG_TLS=m +CONFIG_TLS_DEVICE=y +# CONFIG_TLS_TOE is not set +CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +CONFIG_XFRM_INTERFACE=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +# CONFIG_XDP_SOCKETS is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m +# CONFIG_INET_ESPINTCP is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +# CONFIG_DEFAULT_CUBIC is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +# CONFIG_INET6_ESPINTCP is not set +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SEG6_HMAC=y +CONFIG_IPV6_SEG6_BPF=y +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_NETLABEL is not set +# CONFIG_MPTCP is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_COMMON=m +CONFIG_NF_LOG_NETDEV=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NETFILTER_XTABLES=m + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +# CONFIG_NETFILTER_XT_MATCH_QUOTA2 is not set +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TABLES_IPV4=y +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_FLOW_TABLE_IPV4=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +# CONFIG_IP_NF_SECURITY is not set +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NF_TABLES_IPV6=y +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_FLOW_TABLE_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +# CONFIG_IP6_NF_SECURITY is not set +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +# CONFIG_NF_TABLES_BRIDGE is not set +CONFIG_NF_CONNTRACK_BRIDGE=m +# CONFIG_BRIDGE_NF_EBTABLES 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 is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +CONFIG_STP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_BRIDGE_MRP is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_DECNET 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=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_SKBPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_CAKE is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_ETS is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +CONFIG_NET_CLS_CGROUP=m +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# 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=y +# 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=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_JIT is not set +# CONFIG_BPF_STREAM_PARSER 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 is not set +CONFIG_BT=y +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=y +# CONFIG_BT_RFCOMM_TTY is not set +# CONFIG_BT_BNEP is not set +CONFIG_BT_HIDP=y +# CONFIG_BT_HS is not set +CONFIG_BT_LE=y +# CONFIG_BT_LEDS is not set +# CONFIG_BT_MSFTEXT is not set +CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_BCM=y +# CONFIG_BT_HCIBTUSB_MTK is not set +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +# CONFIG_BT_HCIUART_INTEL is not set +# CONFIG_BT_HCIUART_AG6XX is not set +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_MTKSDIO=m +# end of Bluetooth device drivers + +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_STREAM_PARSER=y +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=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 is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +# CONFIG_CFG80211_WEXT is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +# CONFIG_MAC80211_LEDS is not set +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=y +# CONFIG_RFKILL_RK is not set +# CONFIG_NET_9P 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=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_SOCK_VALIDATE_XMIT=y +CONFIG_NET_SOCK_MSG=y +CONFIG_PAGE_POOL=y +# CONFIG_FAILOVER is not set +CONFIG_ETHTOOL_NETLINK=y +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_PCIEAER 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_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_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# 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 is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# 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 +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_HOST=y +# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCIE_DW_ROCKCHIP is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN 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 is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# 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=y +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# 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_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +# CONFIG_MALI_BASE_MODULES is not set +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_BRCMSTB_GISB_ARB is not set +# CONFIG_MOXTET 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=y +CONFIG_PROC_EVENTS=y +# CONFIG_GNSS is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_OF_PARTS=y +# 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=y +CONFIG_MTD_BLOCK=y +# 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 is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# 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 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 is not set +# 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=y +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set +CONFIG_MTD_SPI_NAND=y + +# +# ECC engine support +# +CONFIG_MTD_NAND_BBT_USING_FLASH=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=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# 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_DTC_SYMBOLS is not set +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_OVERLAY=y +# CONFIG_PARPORT is not set +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=y +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING 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_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +# CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_HWMON is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# CONFIG_NVME_TARGET 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=y +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_UID_SYS_STATS is not set +# CONFIG_PVPANIC is not set +# CONFIG_HISI_HIKEY_USB is not set +# CONFIG_RK803 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_SPI is not set +# 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 +# CONFIG_UACCE is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +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 is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# 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 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 is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI 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_DH is not set +# end of SCSI device support + +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +# 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 is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +# CONFIG_MD_LINEAR is not set +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +# 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_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_WRITECACHE=m +CONFIG_DM_EBS=m +CONFIG_DM_ERA=m +CONFIG_DM_CLONE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_MULTIPATH_HST=m +CONFIG_DM_DELAY=m +CONFIG_DM_DUST=m +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_VERITY_FEC=y +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_INTEGRITY=m +CONFIG_DM_BOW=m +CONFIG_DM_USER=m +# 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=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +CONFIG_DUMMY=m +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +CONFIG_MACVLAN=m +# CONFIG_MACVTAP is not set +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=m +# CONFIG_IPVTAP is not set +CONFIG_VXLAN=m +# 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 is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +# CONFIG_NLMON is not set +# CONFIG_NET_VRF 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_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +# CONFIG_NET_VENDOR_AMD is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +CONFIG_NET_VENDOR_AURORA=y +# CONFIG_AURORA_NB8800 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=y +# CONFIG_GEMINI_ETHERNET 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=y +# CONFIG_GVE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +# CONFIG_NET_VENDOR_INTEL 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=y +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET 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=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC 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=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON 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=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=y +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=y +CONFIG_DWMAC_ROCKCHIP=y +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_STMMAC_PCI 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=y +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PHYLINK=y +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_SFP is not set + +# +# 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=m +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_RENESAS_PHY is not set +CONFIG_ROCKCHIP_PHY=y +CONFIG_SMSC_PHY=m +# 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=y +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +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=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +CONFIG_WLAN=y +# CONFIG_WIRELESS_WDS is not set +CONFIG_WLAN_VENDOR_ADMTEK=y +# CONFIG_ADM8211 is not set +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH5K_PCI is not set +# CONFIG_ATH9K is not set +# CONFIG_ATH9K_HTC is not set +# CONFIG_CARL9170 is not set +# CONFIG_ATH6KL is not set +# CONFIG_AR5523 is not set +# CONFIG_WIL6210 is not set +# CONFIG_ATH10K is not set +# CONFIG_WCN36XX is not set +CONFIG_WLAN_VENDOR_ATMEL=y +# CONFIG_ATMEL is not set +# CONFIG_AT76C50X_USB is not set +CONFIG_WLAN_VENDOR_BROADCOM=y +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_BRCMSMAC is not set +# CONFIG_BRCMFMAC is not set +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLWIFI is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_HERMES is not set +# CONFIG_P54_COMMON is not set +# CONFIG_PRISM54 is not set +CONFIG_WLAN_VENDOR_MARVELL=y +# CONFIG_LIBERTAS is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_MWIFIEX is not set +# CONFIG_MWL8K is not set +CONFIG_WLAN_VENDOR_MEDIATEK=y +# CONFIG_MT7601U is not set +# CONFIG_MT76x0U is not set +# CONFIG_MT76x0E is not set +# CONFIG_MT76x2E is not set +# CONFIG_MT76x2U is not set +# CONFIG_MT7603E is not set +# CONFIG_MT7615E is not set +# CONFIG_MT7663U is not set +# CONFIG_MT7663S is not set +# CONFIG_MT7915E is not set +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_RALINK=y +# CONFIG_RT2X00 is not set +CONFIG_WLAN_VENDOR_REALTEK=y +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +CONFIG_RTL_CARDS=m +# CONFIG_RTL8192CE is not set +# CONFIG_RTL8192SE is not set +# CONFIG_RTL8192DE is not set +# CONFIG_RTL8723AE is not set +# CONFIG_RTL8723BE is not set +# CONFIG_RTL8188EE is not set +# CONFIG_RTL8192EE is not set +# CONFIG_RTL8821AE is not set +# CONFIG_RTL8192CU is not set +# CONFIG_RTL8XXXU is not set +# CONFIG_RTW88 is not set +CONFIG_WLAN_VENDOR_RSI=y +# CONFIG_RSI_91X is not set +CONFIG_WLAN_VENDOR_ST=y +# CONFIG_CW1200 is not set +CONFIG_WLAN_VENDOR_TI=y +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLCORE is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_ZD1211RW is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PCIE is not set +CONFIG_WL_ROCKCHIP=m +CONFIG_WIFI_BUILD_MODULE=y +CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y +CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR=y +# CONFIG_BCMDHD is not set +# CONFIG_CYW_BCMDHD is not set +# CONFIG_MAC80211_HWSIM 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_NETDEVSIM is not set +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +# 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=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADC=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# 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=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 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_TM2_TOUCHKEY 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 is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +CONFIG_MOUSE_CYAPA=y +CONFIG_MOUSE_ELAN_I2C=y +CONFIG_MOUSE_ELAN_I2C_I2C=y +# CONFIG_MOUSE_ELAN_I2C_SMBUS 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=y +CONFIG_TOUCHSCREEN_PROPERTIES=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ADC is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set +# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +# CONFIG_TOUCHSCREEN_FTS is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GSL3673=y +# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set +CONFIG_TOUCHSCREEN_GT1X=y +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +CONFIG_TOUCHSCREEN_ELAN=y +# CONFIG_TOUCHSCREEN_ELAN5515 is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set +# CONFIG_TOUCHSCREEN_SX8654 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set +CONFIG_ROCKCHIP_REMOTECTL=y +CONFIG_ROCKCHIP_REMOTECTL_PWM=y + +# +# handle all sensors +# +# CONFIG_SENSOR_DEVICE is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ATMEL_CAPTOUCH=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_DECODER=m +CONFIG_INPUT_GPIO_VIBRA=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PWM_BEEPER=y +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_IMS_PCU=y +CONFIG_INPUT_IQS269A=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m +CONFIG_INPUT_DRV2667_HAPTICS=m +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO 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=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=10 +CONFIG_SERIAL_8250_RUNTIME_UARTS=10 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_ASPEED_VUART 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 is not set +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_SAMSUNG 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_MSM_GENI_EARLY_CONSOLE 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_DCC is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +CONFIG_HW_RANDOM_CAVIUM=y +CONFIG_HW_RANDOM_OPTEE=y +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_HW_RANDOM_ROCKCHIP=y +# CONFIG_APPLICOM is not set +CONFIG_DEVMEM=y +# CONFIG_RAW_DRIVER is not set +CONFIG_DEVPORT=y +CONFIG_TCG_TPM=y +CONFIG_HW_RANDOM_TPM=y +# CONFIG_TCG_TIS is not set +# CONFIG_TCG_TIS_SPI is not set +# CONFIG_TCG_TIS_I2C_ATMEL is not set +CONFIG_TCG_TIS_I2C_INFINEON=y +# CONFIG_TCG_TIS_I2C_NUVOTON is not set +# CONFIG_TCG_ATMEL is not set +# CONFIG_TCG_VTPM_PROXY is not set +# CONFIG_TCG_FTPM_TEE is not set +# CONFIG_TCG_TIS_ST33ZP24_I2C is not set +# CONFIG_TCG_TIS_ST33ZP24_SPI is not set +# CONFIG_XILLYBUS is not set +# end of Character devices + +# CONFIG_RANDOM_TRUST_CPU is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_DEMUX_PINCTRL is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +# end of Multiplexer I2C Chip support + +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_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 + +# +# 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_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +CONFIG_I2C_RK3X=y +# 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=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=y +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_SPI_DESIGNWARE 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=y +CONFIG_SPI_ROCKCHIP_SFC=y +# 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=y +# 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=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_DP83640_PHY=m +# CONFIG_PTP_1588_CLOCK_INES is not set +# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set +# CONFIG_PTP_1588_CLOCK_IDTCM is not set +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_MCP23S08 is not set +CONFIG_PINCTRL_ROCKCHIP=y +# CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_SX150X is not set +# CONFIG_PINCTRL_STMFX is not set +CONFIG_PINCTRL_RK805=y +# 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_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_CADENCE is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_PL061 is not set +CONFIG_GPIO_ROCKCHIP=y +# CONFIG_GPIO_SAMA5D2_PIOBU is not set +# CONFIG_GPIO_SIFIVE is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# 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 +# +# CONFIG_GPIO_TPS6586X is not set +# 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=y +CONFIG_POWER_RESET_GPIO_RESTART=y +# 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_REBOOT_MODE=y +CONFIG_SYSCON_REBOOT_MODE=y +# CONFIG_NVMEM_REBOOT_MODE is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_PDA_POWER is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_CW2015 is not set +# CONFIG_BATTERY_CW2017 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +CONFIG_BATTERY_SBS=y +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +CONFIG_CHARGER_GPIO=y +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +CONFIG_CHARGER_BQ24735=y +# CONFIG_CHARGER_BQ2515X is not set +# CONFIG_CHARGER_BQ25700 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_UCS1002 is not set +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_BATTERY_RK816 is not set +CONFIG_BATTERY_RK817=y +CONFIG_CHARGER_RK817=y +# CONFIG_BATTERY_RK818 is not set +# CONFIG_CHARGER_RK818 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM1177 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AS370 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set +# CONFIG_SENSORS_ARM_SCMI is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_DRIVETEMP is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2947_SPI is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_MR75203 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP513 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF 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_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +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=y +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +CONFIG_CPU_THERMAL=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +CONFIG_ROCKCHIP_THERMAL=y +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +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_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=y +# 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_CORE=y +# 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_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_RK628 is not set +# CONFIG_MFD_RK630 is not set +# CONFIG_MFD_RK630_I2C is not set +# CONFIG_MFD_RK630_SPI is not set +# CONFIG_MFD_RK806 is not set +# CONFIG_MFD_RK806_SPI is not set +CONFIG_MFD_RK808=y +# CONFIG_MFD_RK1000 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=y +# 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_KHADAS_MCU is not set +# CONFIG_MFD_INTEL_M10_BMC is not set +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_ACT8865=y +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ARM_SCMI is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +CONFIG_REGULATOR_FAN53555=y +# CONFIG_REGULATOR_FAN53880 is not set +CONFIG_REGULATOR_GPIO=y +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +CONFIG_REGULATOR_LP8752=y +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MAX77826 is not set +# CONFIG_REGULATOR_MCP16502 is not set +# CONFIG_REGULATOR_MP5416 is not set +# CONFIG_REGULATOR_MP8859 is not set +CONFIG_REGULATOR_MP8865=y +# CONFIG_REGULATOR_MP886X is not set +# CONFIG_REGULATOR_MPQ7920 is not set +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +CONFIG_REGULATOR_PWM=y +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RK808=y +# CONFIG_REGULATOR_RK860X is not set +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_SLG51000 is not set +# CONFIG_REGULATOR_SY8106A is not set +# CONFIG_REGULATOR_SY8824X is not set +# CONFIG_REGULATOR_SY8827N is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +CONFIG_REGULATOR_TPS65132=y +# CONFIG_REGULATOR_TPS6524X is not set +CONFIG_REGULATOR_TPS6586X=y +# CONFIG_REGULATOR_VCTRL is not set +CONFIG_REGULATOR_XZ3216=y +# CONFIG_RC_CORE is not set +CONFIG_CEC_CORE=y +CONFIG_CEC_NOTIFIER=y +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=y +# CONFIG_MEDIA_SUPPORT_FILTER is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# +CONFIG_VIDEO_DEV=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=y +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_V4L2_MEM2MEM_DEV=y +CONFIG_V4L2_FWNODE=y +# end of Video4Linux options + +# +# Media controller options +# +# CONFIG_MEDIA_CONTROLLER_DVB is not set +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=16 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_PWC is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_S2255 is not set +# CONFIG_VIDEO_USBTV is not set + +# +# Analog TV USB devices +# +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_STK1160_COMMON is not set +# CONFIG_VIDEO_GO7007 is not set + +# +# Analog/digital TV USB devices +# +# CONFIG_VIDEO_AU0828 is not set +# CONFIG_VIDEO_CX231XX is not set + +# +# Digital TV USB devices +# +# CONFIG_DVB_USB_V2 is not set +# CONFIG_DVB_TTUSB_BUDGET is not set +# CONFIG_DVB_TTUSB_DEC is not set +# CONFIG_SMS_USB_DRV is not set +# CONFIG_DVB_B2C2_FLEXCOP_USB is not set +# CONFIG_DVB_AS102 is not set + +# +# Webcam, TV (analog/digital) USB devices +# +# CONFIG_VIDEO_EM28XX is not set + +# +# Software defined radio USB devices +# +# CONFIG_USB_AIRSPY is not set +# CONFIG_USB_HACKRF is not set +# CONFIG_USB_MSI2500 is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_RADIO_ADAPTERS=y +# CONFIG_RADIO_SI470X is not set +# CONFIG_RADIO_SI4713 is not set +# CONFIG_USB_MR800 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_SHARK is not set +# CONFIG_RADIO_SHARK2 is not set +# CONFIG_USB_KEENE is not set +# CONFIG_USB_RAREMONO is not set +# CONFIG_USB_MA901 is not set +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +CONFIG_VIDEOBUF2_VMALLOC=y +CONFIG_VIDEOBUF2_DMA_SG=y +CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_VIDEO_CAFE_CCIC is not set +# CONFIG_VIDEO_CADENCE is not set +# CONFIG_VIDEO_ASPEED is not set +# CONFIG_VIDEO_MUX is not set +# CONFIG_VIDEO_XILINX is not set +CONFIG_VIDEO_ROCKCHIP_CIF=y +CONFIG_ROCKCHIP_CIF_WORKMODE_PINGPONG=y +# CONFIG_ROCKCHIP_CIF_WORKMODE_ONEFRAME is not set +CONFIG_ROCKCHIP_CIF_USE_DUMMY_BUF=y +# CONFIG_ROCKCHIP_CIF_USE_NONE_DUMMY_BUF is not set +CONFIG_VIDEO_ROCKCHIP_ISP=y +CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V1X=y +# CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V20 is not set +CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V21=y +# CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V30 is not set +# CONFIG_VIDEO_ROCKCHIP_ISPP is not set +# CONFIG_VIDEO_ROCKCHIP_HDMIRX is not set +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +CONFIG_VIDEO_ROCKCHIP_RGA=y +# CONFIG_DVB_PLATFORM_DRIVERS is not set +# CONFIG_SDR_PLATFORM_DRIVERS is not set + +# +# MMC/SDIO DVB adapters +# +# CONFIG_SMS_SDIO_DRV is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_DVB_TEST_DRIVERS is not set +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# Audio decoders, processors and mixers +# +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set +# end of RDS decoders + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_LT6911UXC is not set +# CONFIG_VIDEO_LT7911D is not set +# CONFIG_VIDEO_LT8619C is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_NVP6158 is not set +# CONFIG_VIDEO_NVP6324 is not set +# CONFIG_VIDEO_OTP_EEPROM is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TC35874X is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +# CONFIG_VIDEO_VPX3220 is not set +# CONFIG_VIDEO_MAX9286 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_CX25840 is not set +# end of Video decoders + +# +# Video encoders +# +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AD9389B is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_THS8200 is not set +# end of Video encoders + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# end of Video improvement chips + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +# CONFIG_SDR_MAX2175 is not set +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_I2C is not set +# CONFIG_VIDEO_ST_MIPID02 is not set +# CONFIG_VIDEO_RK_IRCUT is not set +# end of Miscellaneous helper chips + +# +# Camera sensor devices +# +# CONFIG_VIDEO_AR0230 is not set +# CONFIG_VIDEO_GC02M2 is not set +# CONFIG_VIDEO_GC08A3 is not set +# CONFIG_VIDEO_GC2053 is not set +# CONFIG_VIDEO_GC2093 is not set +# CONFIG_VIDEO_GC2145 is not set +# CONFIG_VIDEO_GC2385 is not set +# CONFIG_VIDEO_GC4663 is not set +# CONFIG_VIDEO_GC4C33 is not set +# CONFIG_VIDEO_GC5025 is not set +CONFIG_VIDEO_GC8034=y +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX307 is not set +# CONFIG_VIDEO_IMX317 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX323 is not set +# CONFIG_VIDEO_IMX327 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX347 is not set +# CONFIG_VIDEO_IMX378 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_IMX464 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_OS02G10 is not set +CONFIG_VIDEO_OS04A10=y +# CONFIG_VIDEO_OS05A20 is not set +# CONFIG_VIDEO_OV02B10 is not set +# CONFIG_VIDEO_OV02K10 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV2718 is not set +# CONFIG_VIDEO_OV4686 is not set +# CONFIG_VIDEO_OV4688 is not set +CONFIG_VIDEO_OV4689=y +# CONFIG_VIDEO_OV50C40 is not set +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +CONFIG_VIDEO_OV5695=y +CONFIG_VIDEO_OV7251=y +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV9281 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV12D2Q is not set +CONFIG_VIDEO_OV13850=y +# CONFIG_VIDEO_OV13855 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M032 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_M5MOLS is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5K6AA is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# end of Camera sensor devices + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_AW8601 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + +# +# SPI helper chips +# +# CONFIG_VIDEO_GS1662 is not set +# end of SPI helper chips + +# +# Media SPI Adapters +# +CONFIG_CXD2880_SPI_DRV=m +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=y + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_M88DS3103=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_TDA10071=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_EC100=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_S921=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_TC90522=m +CONFIG_DVB_MN88443X=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_A8293=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +# end of Media ancillary drivers + +# +# Graphics support +# +# CONFIG_VGA_ARB is not set +CONFIG_DRM=y +CONFIG_DRM_MIPI_DBI=m +CONFIG_DRM_MIPI_DSI=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=y +# CONFIG_DRM_DP_CEC is not set +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_KMS_CMA_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_ROCKCHIP=y +# CONFIG_ROCKCHIP_DRM_DEBUG is not set +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +# CONFIG_ROCKCHIP_DW_DP is not set +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_RGB=y +# CONFIG_ROCKCHIP_RK3066_HDMI is not set +# CONFIG_ROCKCHIP_VCONN is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST 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_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set +# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set +# CONFIG_DRM_PANEL_LVDS is not set +CONFIG_DRM_PANEL_SIMPLE=y +# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set +# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set +# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set +# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set +# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 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_NOVATEK_NT35510 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set +# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set +# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set +# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set +# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set +# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +# CONFIG_DRM_PANEL_SONY_ACX424AKP is not set +# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set +# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set +# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set +# CONFIG_DRM_PANEL_TPO_TPG110 is not set +# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set +# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set +# CONFIG_DRM_PANEL_XINPENG_XPP055C272 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_RK1000_TVE is not set +# CONFIG_DRM_SIL_SII8620 is not set +CONFIG_DRM_SII902X=y +# 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_ANALOGIX_DP=y +# CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set +CONFIG_DRM_DW_HDMI=y +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +CONFIG_DRM_DW_HDMI_CEC=y +CONFIG_DRM_DW_MIPI_DSI=y +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_HISI_KIRIN is not set +# CONFIG_DRM_MXSFB is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_GM12U320 is not set +CONFIG_TINYDRM_HX8357D=m +CONFIG_TINYDRM_ILI9225=m +CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m +CONFIG_TINYDRM_MI0283QT=m +CONFIG_TINYDRM_REPAPER=m +CONFIG_TINYDRM_ST7586=m +CONFIG_TINYDRM_ST7735R=m +CONFIG_DRM_PL111=m +# 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 +CONFIG_MALI400=y +CONFIG_MALI450=y +# CONFIG_MALI470 is not set +# CONFIG_MALI400_DEBUG is not set +# CONFIG_MALI400_PROFILING is not set +# CONFIG_MALI400_UMP is not set +CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y +CONFIG_MALI_SHARED_INTERRUPTS=y +# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set +CONFIG_MALI_DT=y +CONFIG_MALI_DEVFREQ=y +# CONFIG_MALI_QUIET is not set +CONFIG_MALI_MIDGARD=y +# CONFIG_MALI_GATOR_SUPPORT is not set +# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set +# CONFIG_MALI_DMA_FENCE is not set +CONFIG_MALI_EXPERT=y +# CONFIG_MALI_CORESTACK is not set +# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set +# CONFIG_MALI_PLATFORM_FAKE is not set +# CONFIG_MALI_PLATFORM_DEVICETREE is not set +CONFIG_MALI_PLATFORM_THIRDPARTY=y +CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" +CONFIG_MALI_DEBUG=y +CONFIG_MALI_FENCE_DEBUG=y +# CONFIG_MALI_NO_MALI is not set +# CONFIG_MALI_TRACE_TIMELINE is not set +# CONFIG_MALI_SYSTEM_TRACE is not set +# CONFIG_MALI_GPU_MMU_AARCH64 is not set +CONFIG_MALI_PWRSOFT_765=y +# CONFIG_MALI_KUTF is not set +CONFIG_MALI_BIFROST=y +CONFIG_MALI_PLATFORM_NAME="rk" +CONFIG_MALI_REAL_HW=y + +# +# Platform specific options +# +# CONFIG_MALI_CSF_SUPPORT is not set +CONFIG_MALI_BIFROST_DEVFREQ=y +CONFIG_MALI_BIFROST_GATOR_SUPPORT=y +CONFIG_MALI_BIFROST_ENABLE_TRACE=y +# CONFIG_MALI_BIFROST_DMA_FENCE is not set +# CONFIG_MALI_ARBITER_SUPPORT is not set +# CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND is not set +# CONFIG_MALI_DMA_BUF_LEGACY_COMPAT is not set +CONFIG_MALI_BIFROST_EXPERT=y +# CONFIG_MALI_2MB_ALLOC is not set +# CONFIG_MALI_MEMORY_FULLY_BACKED is not set + +# +# Platform options +# +# CONFIG_MALI_BIFROST_NO_MALI is not set +# CONFIG_MALI_GEM5_BUILD is not set + +# +# Debug options +# +CONFIG_MALI_BIFROST_DEBUG=y +CONFIG_MALI_BIFROST_FENCE_DEBUG=y +CONFIG_MALI_BIFROST_SYSTEM_TRACE=y + +# +# Instrumentation options +# +CONFIG_MALI_PRFCNT_SET_PRIMARY=y +# CONFIG_MALI_BIFROST_PRFCNT_SET_SECONDARY is not set +# CONFIG_MALI_PRFCNT_SET_TERTIARY is not set +# CONFIG_MALI_PRFCNT_SET_SELECT_VIA_DEBUG_FS is not set +# CONFIG_MALI_JOB_DUMP is not set + +# +# Workarounds +# +# CONFIG_MALI_HW_ERRATA_1485982_NOT_AFFECTED is not set +# CONFIG_MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE is not set +# CONFIG_MALI_ARBITRATION is not set + +# +# 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 is not set + +# +# 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_UVESA is not set +# 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 +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_KTD253=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_QCOM_WLED=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_ARCXCNN=m +CONFIG_BACKLIGHT_LED=m +# end of Backlight & LCD device support + +# +# Rockchip Misc Video driver +# + +# +# RGA +# +# CONFIG_ROCKCHIP_RGA is not set +# end of RGA + +CONFIG_ROCKCHIP_RGA2=y +# CONFIG_ROCKCHIP_RGA2_PROC_FS is not set +CONFIG_ROCKCHIP_RGA2_DEBUG_FS=y +CONFIG_ROCKCHIP_RGA2_DEBUGGER=y +# CONFIG_ROCKCHIP_MULTI_RGA is not set + +# +# IEP +# +# CONFIG_IEP is not set +# end of IEP + +CONFIG_ROCKCHIP_MPP_SERVICE=y +CONFIG_ROCKCHIP_MPP_PROC_FS=y +CONFIG_ROCKCHIP_MPP_RKVDEC=y +CONFIG_ROCKCHIP_MPP_RKVDEC2=y +CONFIG_ROCKCHIP_MPP_RKVENC=y +# CONFIG_ROCKCHIP_MPP_RKVENC2 is not set +CONFIG_ROCKCHIP_MPP_VDPU1=y +CONFIG_ROCKCHIP_MPP_VEPU1=y +CONFIG_ROCKCHIP_MPP_VDPU2=y +CONFIG_ROCKCHIP_MPP_VEPU2=y +CONFIG_ROCKCHIP_MPP_IEP2=y +CONFIG_ROCKCHIP_MPP_JPGDEC=y +# end of Rockchip Misc Video driver + +CONFIG_VIDEOMODE_HELPERS=y +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_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y +# end of Console display driver support + +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y +# end of Graphics support + +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_SEQ_DEVICE=y +CONFIG_SND_RAWMIDI=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=y +CONFIG_SND_SEQ_MIDI=y +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +# CONFIG_SND_PCI is not set + +# +# HD-Audio +# +# end of HD-Audio + +CONFIG_SND_HDA_PREALLOC_SIZE=64 +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set +# CONFIG_SND_DESIGNWARE_I2S is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_I2S_HI3660_I2S is not set +# CONFIG_SND_SOC_IMG is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_I2S=y +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y +CONFIG_SND_SOC_ROCKCHIP_PDM=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +# CONFIG_SND_SOC_ROCKCHIP_SPDIFRX is not set +# CONFIG_SND_SOC_ROCKCHIP_VAD is not set +CONFIG_SND_SOC_ROCKCHIP_MAX98090=y +# CONFIG_SND_SOC_ROCKCHIP_MULTICODECS is not set +CONFIG_SND_SOC_ROCKCHIP_RT5645=y +# CONFIG_SND_SOC_ROCKCHIP_HDMI is not set +# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set +# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set +# CONFIG_SND_SOC_SOF_TOPLEVEL is not set + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +# CONFIG_ZX_TDM is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +# CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_ADAU7118_HW is not set +# CONFIG_SND_SOC_ADAU7118_I2C is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set +# CONFIG_SND_SOC_CS42L42 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4234 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CX2072X is not set +# CONFIG_SND_SOC_DA7213 is not set +# CONFIG_SND_SOC_DMIC is not set +CONFIG_SND_SOC_DUMMY_CODEC=y +CONFIG_SND_SOC_HDMI_CODEC=y +# CONFIG_SND_SOC_ES7134 is not set +CONFIG_SND_SOC_ES7202=y +CONFIG_SND_SOC_ES7202_MIC_MAX_CHANNELS=2 +CONFIG_SND_SOC_ES7202_I2C_BUS=1 +# CONFIG_SND_SOC_ES7210 is not set +# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_ES7243E=y +CONFIG_SND_SOC_ES8311=y +CONFIG_SND_SOC_ES8316=y +# CONFIG_SND_SOC_ES8323 is not set +# CONFIG_SND_SOC_ES8326 is not set +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_ES8396 is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98088 is not set +CONFIG_SND_SOC_MAX98090=y +# CONFIG_SND_SOC_MAX98357A is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +# CONFIG_SND_SOC_MAX98927 is not set +# CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98390 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RK312X is not set +# CONFIG_SND_SOC_RK3228 is not set +CONFIG_SND_SOC_RK3308=y +CONFIG_SND_SOC_RK3328=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_RK_CODEC_DIGITAL=y +CONFIG_SND_SOC_RL6231=y +CONFIG_SND_SOC_RT5616=y +# CONFIG_SND_SOC_RT5631 is not set +CONFIG_SND_SOC_RT5640=y +CONFIG_SND_SOC_RT5645=y +CONFIG_SND_SOC_RT5651=y +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +CONFIG_SND_SOC_SPDIF=y +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set +CONFIG_SND_SOC_TS3A227E=y +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8524 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8782 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_ZL38060 is not set +# CONFIG_SND_SOC_ZX_AUD96P22 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8822 is not set +# CONFIG_SND_SOC_NAU8824 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_AW87XXX is not set +# end of CODEC drivers + +CONFIG_SND_SIMPLE_CARD_UTILS=y +CONFIG_SND_SIMPLE_CARD=y +# CONFIG_SND_AUDIO_GRAPH_CARD is not set + +# +# HID support +# +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +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_ASUS is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_BIGBEN_FF is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CP2112 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_ELAN 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_GT683R 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=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LOGITECH 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=y +# CONFIG_HID_NINTENDO 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_PLAYSTATION 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_SONY 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_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE 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=y +# 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_LED_TRIG is not set +# 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 is not set +# CONFIG_USB_FEW_INIT_RETRIES is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +# CONFIG_USB_OTG_FSM is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT 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=m +CONFIG_USB_XHCI_PCI_RENESAS=m +CONFIG_USB_XHCI_PLATFORM=y +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 is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_UHCI_HCD is not set +# 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=y +# CONFIG_USB_PRINTER is not set +CONFIG_USB_WDM=m +# 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=y + +# +# 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=y +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_HAPS=y +CONFIG_USB_DWC3_OF_SIMPLE=y +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_HOST is not set + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +# CONFIG_USB_DWC2_PERIPHERAL is not set +CONFIG_USB_DWC2_DUAL_ROLE=y +# CONFIG_USB_DWC2_PCI is not set +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS 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=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# 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=y +# 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_USB_PHY=y +# 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=y +# CONFIG_USB_GADGET_DEBUG is not set +CONFIG_USB_GADGET_DEBUG_FILES=y +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +# CONFIG_U_SERIAL_CONSOLE is not set + +# +# USB Peripheral Controller +# +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_MAX3420_UDC is not set +# CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=y +CONFIG_USB_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_F_MASS_STORAGE=y +CONFIG_USB_F_FS=y +CONFIG_USB_F_UVC=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_UEVENT=y +# CONFIG_USB_CONFIGFS_SERIAL is not set +CONFIG_USB_CONFIGFS_ACM=y +# CONFIG_USB_CONFIGFS_OBEX is not set +# CONFIG_USB_CONFIGFS_NCM is not set +# CONFIG_USB_CONFIGFS_ECM is not set +# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set +# CONFIG_USB_CONFIGFS_RNDIS is not set +# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +# CONFIG_USB_CONFIGFS_F_LB_SS is not set +CONFIG_USB_CONFIGFS_F_FS=y +# CONFIG_USB_CONFIGFS_F_ACC is not set +# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set +# CONFIG_USB_CONFIGFS_F_UAC1 is not set +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +# CONFIG_USB_CONFIGFS_F_UAC2 is not set +# CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_HID is not set +CONFIG_USB_CONFIGFS_F_UVC=y +# CONFIG_USB_CONFIGFS_F_PRINTER is not set + +# +# USB Gadget precomposed configurations +# +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_ETH is not set +# CONFIG_USB_G_NCM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_MASS_STORAGE is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_RAW_GADGET is not set +# end of USB Gadget precomposed configurations + +# CONFIG_TYPEC is not set +CONFIG_USB_ROLE_SWITCH=y +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +# CONFIG_SDIO_UART is not set +CONFIG_MMC_TEST=y + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +CONFIG_MMC_SDHCI=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +# CONFIG_MMC_SDHCI_OF_ASPEED is not set +# CONFIG_MMC_SDHCI_OF_AT91 is not set +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_SDHCI_MILBEAUT 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=y +CONFIG_MMC_DW_PLTFM=y +# CONFIG_MMC_DW_BLUEFIELD is not set +# CONFIG_MMC_DW_EXYNOS is not set +# CONFIG_MMC_DW_HI3798CV200 is not set +# CONFIG_MMC_DW_K3 is not set +# CONFIG_MMC_DW_PCI is not set +CONFIG_MMC_DW_ROCKCHIP=y +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_CQHCI=y +# CONFIG_MMC_HSQ is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MMC_SDHCI_OMAP is not set +# CONFIG_MMC_SDHCI_AM654 is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_CLASS_MULTICOLOR is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_AW2013 is not set +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_CR0014114 is not set +# CONFIG_LEDS_EL15203000 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP50XX is not set +# CONFIG_LEDS_LP55XX_COMMON is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_PWM is not set +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +CONFIG_LEDS_IS31FL32XX=y + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_SYSCON is not set +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +# CONFIG_LEDS_SPI_BYTE is not set +# CONFIG_LEDS_TI_LMU_COMMON is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_TIMER is not set +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_MTD is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +# CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc1" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc1" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# 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=m +CONFIG_RTC_DRV_DS1307_CENTURY=y +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1672=m +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +CONFIG_RTC_DRV_RK808=y +CONFIG_RTC_DRV_RS5C372=m +# 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_TPS6586X 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_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=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_BCM_SBA_RAID is not set +# CONFIG_DW_AXI_DMAC is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_FSL_QDMA is not set +# CONFIG_HISI_DMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_MV_XOR_V2 is not set +CONFIG_PL330_DMA=y +# CONFIG_PLX_DMA is not set +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_XILINX_ZYNQMP_DPDMA is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +# CONFIG_DW_EDMA is not set +# CONFIG_DW_EDMA_PCIE is not set +# CONFIG_SF_PDMA is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +CONFIG_SW_SYNC=y +# CONFIG_UDMABUF is not set +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_SELFTESTS is not set +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_SYSFS_STATS=y +CONFIG_DMABUF_HEAPS_DEFERRED_FREE=y +CONFIG_DMABUF_HEAPS_PAGE_POOL=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO_MENU=y +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VIRTIO_DMA_SHARED_BUFFER is not set +# CONFIG_VDPA is not set +CONFIG_VHOST_MENU=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_COMEDI is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTLLIB is not set +# CONFIG_RTL8723BS is not set +# CONFIG_R8712U is not set +# CONFIG_R8188EU is not set +# CONFIG_RTS5208 is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7816 is not set +# CONFIG_AD7280 is not set +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set +# end of Analog digital bi-direction converters + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set +# end of Network Analyzer, Impedance Converters + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set +# end of Active energy metering IC + +# +# Resolver to digital converters +# +# CONFIG_AD2S1210 is not set +# end of Resolver to digital converters +# end of IIO staging drivers + +# CONFIG_FB_SM750 is not set +# CONFIG_STAGING_MEDIA is not set + +# +# Android +# +# end of Android + +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_UNISYSSPAR is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_FB_TFT is not set +# CONFIG_KS7010 is not set +# CONFIG_PI433 is not set + +# +# Gasket devices +# +# CONFIG_STAGING_GASKET_FRAMEWORK is not set +# end of Gasket devices + +# CONFIG_XIL_AXIS_FIFO is not set +# CONFIG_FIELDBUS_DEV is not set +# CONFIG_QLGE is not set +# CONFIG_WFX is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_HAVE_CLK=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_PROCFS is not set + +# +# Clock driver for ARM Reference designs +# +# CONFIG_ICST is not set +# CONFIG_CLK_SP810 is not set +# end of Clock driver for ARM Reference designs + +# CONFIG_COMMON_CLK_MAX9485 is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCMI=y +# 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_PWM=y +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set +CONFIG_COMMON_CLK_ROCKCHIP=y +CONFIG_CLK_PX30=y +CONFIG_CLK_RK1808=y +CONFIG_CLK_RK3308=y +CONFIG_CLK_RK3328=y +CONFIG_CLK_RK3368=y +CONFIG_CLK_RK3399=y +CONFIG_CLK_RK3568=y +CONFIG_CLK_RK3588=y +# CONFIG_ROCKCHIP_CLK_COMPENSATION is not set +CONFIG_ROCKCHIP_CLK_LINK=y +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ROCKCHIP_TIMER=y +# CONFIG_SUN4I_TIMER is not set +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_MTK_TIMER is not set +# CONFIG_MICROCHIP_PIT64B is not set +# end of Clock Source drivers + +CONFIG_MAILBOX=y +# CONFIG_ARM_MHU is not set +# CONFIG_PLATFORM_MHU is not set +# CONFIG_PL320_MBOX is not set +# CONFIG_ROCKCHIP_MBOX is not set +# CONFIG_ALTERA_MBOX is not set +# CONFIG_MAILBOX_TEST is not set +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_LIMIT_IOVA_ALIGNMENT is not set +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +CONFIG_IOMMU_DMA=y +CONFIG_ROCKCHIP_IOMMU=y +# CONFIG_ARM_SMMU is not set +# CONFIG_ARM_SMMU_V3 is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# 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 + +# +# Rockchip CPU selection +# +CONFIG_CPU_PX30=y +CONFIG_CPU_RK1808=y +# CONFIG_CPU_RK3308 is not set +CONFIG_CPU_RK3328=y +# CONFIG_CPU_RK3368 is not set +CONFIG_CPU_RK3399=y +CONFIG_CPU_RK3568=y +# CONFIG_CPU_RK3588 is not set +# end of Rockchip CPU selection + +# CONFIG_NO_GKI is not set +CONFIG_ROCKCHIP_CPUINFO=y +CONFIG_ROCKCHIP_GRF=y +# CONFIG_ROCKCHIP_HW_DECOMPRESS is not set +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_IPA=y +CONFIG_ROCKCHIP_OPP=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_PVTM=y +CONFIG_ROCKCHIP_SUSPEND_MODE=y +CONFIG_ROCKCHIP_SYSTEM_MONITOR=y +CONFIG_ROCKCHIP_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_MMC_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_ROCKCHIP_DEBUG=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y +# CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ is not set +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_FSA9480 is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_MEMORY is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGERED_BUFFER=y +# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set +# CONFIG_IIO_TRIGGERED_EVENT is not set + +# +# Accelerometers +# +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set +# CONFIG_BMA220 is not set +# CONFIG_BMA400 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD06 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7091R5 is not set +# CONFIG_AD7124 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7292 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD7949 is not set +# CONFIG_AD799X is not set +# CONFIG_ADI_AXI_ADC is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2496 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX1241 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP3911 is not set +# CONFIG_NAU7802 is not set +CONFIG_ROCKCHIP_SARADC=y +# CONFIG_ROCKCHIP_SARADC_TEST_CHN is not set +# CONFIG_SD_ADC_MODULATOR is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC084S021 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC108S102 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8344 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_VF610_ADC is not set +# CONFIG_XILINX_XADC is not set +# end of Analog to digital converters + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_SCD30_CORE is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SPS30 is not set +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +# +# Hid Sensor IIO Common +# +# end of Hid Sensor IIO Common + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_AD5686_SPI is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5758 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5770R is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_DS4424 is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# CONFIG_VF610_DAC is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# end of IIO dummy driver + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +# CONFIG_ADF4371 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS290 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16460 is not set +# CONFIG_ADIS16475 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_FXOS8700_I2C is not set +# CONFIG_FXOS8700_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_ICM42600_I2C is not set +# CONFIG_INV_ICM42600_SPI is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set +# end of Inertial measurement units + +# +# Light sensors +# +# CONFIG_ADJD_S311 is not set +# CONFIG_ADUX1020 is not set +# CONFIG_AL3010 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_AS73211 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM3605 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP002 is not set +# CONFIG_GP2AP020A00F is not set +CONFIG_SENSORS_ISL29018=y +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set +# CONFIG_NOA1305 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VCNL4035 is not set +# CONFIG_VEML6030 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set +# end of Light sensors + +# +# Magnetometer sensors +# +# CONFIG_AK8974 is not set +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set +# end of Multiplexers + +# +# Inclinometer sensors +# +# end of Inclinometer sensors + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=y +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5432 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set +# CONFIG_TPL0102 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_DLHL60D is not set +# CONFIG_DPS310 is not set +# CONFIG_HP03 is not set +# CONFIG_ICP10100 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set +# CONFIG_PING is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +# CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +# CONFIG_LTC2983 is not set +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_MAX31856 is not set +# end of Temperature sensors + +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +CONFIG_PWM=y +CONFIG_PWM_SYSFS=y +# CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_FSL_FTM is not set +# CONFIG_PWM_PCA9685 is not set +CONFIG_PWM_ROCKCHIP=y + +# +# 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_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_SCMI=y +# CONFIG_RESET_TI_SYSCON is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=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_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_OCELOT_SERDES is not set +CONFIG_PHY_ROCKCHIP_CSI2_DPHY=y +CONFIG_PHY_ROCKCHIP_DP=y +# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set +CONFIG_PHY_ROCKCHIP_EMMC=y +# CONFIG_PHY_ROCKCHIP_INNO_COMBPHY is not set +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_USB3=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +CONFIG_PHY_ROCKCHIP_MIPI_RX=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_NANENG_EDP=y +# CONFIG_PHY_ROCKCHIP_NANENG_USB2 is not set +CONFIG_PHY_ROCKCHIP_PCIE=y +# CONFIG_PHY_ROCKCHIP_SAMSUNG_DCPHY is not set +# CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX is not set +# CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX_HDMI is not set +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +# CONFIG_PHY_ROCKCHIP_USBDP is not set +# CONFIG_PHY_SAMSUNG_USB2 is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_ARM_CCI_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# end of Performance monitor support + +# CONFIG_RAS is not set +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +CONFIG_ROCKCHIP_EFUSE=y +CONFIG_ROCKCHIP_OTP=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +CONFIG_TEE=y + +# +# TEE drivers +# +CONFIG_OPTEE=y +CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1 +# end of TEE drivers + +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_RK_FLASH is not set +# CONFIG_RK_NAND is not set + +# +# Headset device support +# +CONFIG_RK_HEADSET=y +# end of Headset device support + +# +# RKNPU +# +CONFIG_ROCKCHIP_RKNPU=y +# end of RKNPU +# 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 is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG 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=y +CONFIG_XFS_SUPPORT_V4=y +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_BTRFS_FS=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +# CONFIG_DNOTIFY is not set +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +# CONFIG_VIRTIO_FS is not set +CONFIG_OVERLAY_FS=y +# 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 +# CONFIG_INCREMENTAL_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=936 +CONFIG_FAT_DEFAULT_IOCHARSET="utf8" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +CONFIG_NTFS_FS=y +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE 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_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_TMPFS_INODE64 is not set +# CONFIG_HUGETLBFS is not set +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +# 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=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y +# 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 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 is not set +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XZ is not set +# 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=y +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +CONFIG_PSTORE_CONSOLE=y +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=y +# 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=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +# CONFIG_ROOT_NFS 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 is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_SUNRPC_SWAP=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +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=y +# 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=y +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=y +# CONFIG_DLM is not set +CONFIG_UNICODE=y +# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_TRUSTED_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_PATH=y +CONFIG_LSM_MMAP_MIN_ADDR=32768 +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0 +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_EVM is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_APPARMOR is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +# 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 +# end of Security options + +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS140=y +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=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=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=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=m +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +# 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=m +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CFB=y +CONFIG_CRYPTO_CTR=y +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_OFB=y +# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_XTS=y +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_ADIANTUM is not set +CONFIG_CRYPTO_ESSIV=m + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# 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=y +CONFIG_CRYPTO_BLAKE2B=y +# CONFIG_CRYPTO_BLAKE2S is not set +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_GHASH=m +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# 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=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +# CONFIG_CRYPTO_SHA3 is not set +CONFIG_CRYPTO_SM3=y +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# 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=y +# 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=y +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +CONFIG_CRYPTO_ZSTD=y + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_USER_API=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +CONFIG_CRYPTO_HASH_INFO=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +# CONFIG_CRYPTO_LIB_BLAKE2S is not set +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +CONFIG_CRYPTO_DEV_ROCKCHIP=y +# CONFIG_CRYPTO_DEV_ROCKCHIP_DEV is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_HISI_SEC is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING 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_LINEAR_RANGES=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 +CONFIG_CRC_CCITT=y +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=y +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=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +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_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=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_TEARDOWN_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_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_REMAP=y +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DMA_CMA=y +# CONFIG_DMA_PERNUMA_CMA is not set + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=16 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +# CONFIG_DMA_API_DEBUG is not set +CONFIG_SGL_ALLOC=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +# CONFIG_IRQ_POLL is not set +CONFIG_MPILIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=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=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO 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_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 +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +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 +# end of Generic Kernel Debugging Instruments + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_PINNER 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 is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +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_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 is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# 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=y +# 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=y +# 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 is not set +# 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 is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +CONFIG_DEBUG_CREDENTIALS=y + +# +# 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=60 +CONFIG_RCU_TRACE=y +# CONFIG_RCU_EQS_DEBUG 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_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +# CONFIG_TRACE_MMIO_ACCESS is not set +# CONFIG_TRACEFS_DISABLE_AUTOMOUNT is not set +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +# CONFIG_FUNCTION_PROFILER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT 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=y +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +CONFIG_FTRACE_MCOUNT_RECORD=y +CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=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_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR 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_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=y +CONFIG_LKDTM=y +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_REED_SOLOMON_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_STRSCPY is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_BLACKHOLE_DEV is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_STACKINIT is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_FREE_PAGES is not set +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/external/config/kernel/linux-5.13-rockchip64.config b/external/config/kernel/linux-5.13-rockchip64.config new file mode 100644 index 0000000..e164fcd --- /dev/null +++ b/external/config/kernel/linux-5.13-rockchip64.config @@ -0,0 +1,9398 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 5.13.13 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90201 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=23301 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=23301 +CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO=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="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +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=y +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_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_SIM=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y +CONFIG_GENERIC_IRQ_IPI=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_IRQ_MSI_IOMMU=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_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=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +# CONFIG_BPF_JIT_ALWAYS_ON is not set +CONFIG_BPF_JIT_DEFAULT_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_USERMODE_DRIVER=y +# CONFIG_BPF_PRELOAD is not set +CONFIG_BPF_LSM=y +# end of BPF subsystem + +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_SCHED_THERMAL_PRESSURE=y +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 is not set + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RCU=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_IKHEADERS=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# CONFIG_UCLAMP_TASK is not set +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_CC_HAS_INT128=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +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_BPF=y +# CONFIG_CGROUP_MISC is not set +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +CONFIG_BOOT_CONFIG=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=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=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=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=33 +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=y +CONFIG_ZONE_DMA32=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SMP=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_PROC_KCORE_TEXT=y + +# +# Platform selection +# +# CONFIG_ARCH_ACTIONS is not set +CONFIG_ARCH_SUNXI=y +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_APPLE is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM4908 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 is not set +# CONFIG_ARCH_KEEMBAY is not set +# CONFIG_ARCH_MEDIATEK is not set +CONFIG_ARCH_MESON=y +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARCH_S32=y +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_INTEL_SOCFPGA 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_ZYNQMP is not set +# end of Platform selection + +# +# 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_834220=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y +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=y +CONFIG_CAVIUM_ERRATUM_23144=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_TX2_ERRATUM_219=y +CONFIG_FUJITSU_ERRATUM_010001=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +# 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 is not set +CONFIG_ARM64_VA_BITS_48=y +CONFIG_ARM64_VA_BITS=48 +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=y +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=256 +CONFIG_HOTPLUG_CPU=y +CONFIG_NUMA=y +CONFIG_NODES_SHIFT=2 +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_HOLES_IN_ZONE=y +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_KEXEC=y +# CONFIG_KEXEC_FILE is not set +CONFIG_CRASH_DUMP=y +CONFIG_TRANS_TABLE=y +CONFIG_XEN_DOM0=y +CONFIG_XEN=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_COMPAT=y +CONFIG_KUSER_HELPERS=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_ARM64_LSE_ATOMICS=y +CONFIG_ARM64_USE_LSE_ATOMICS=y +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_CNP=y +# 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 +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +CONFIG_ARM64_AMU_EXTN=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +CONFIG_AS_HAS_ARMV8_5=y +CONFIG_ARM64_BTI=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARM64_AS_HAS_MTE=y +CONFIG_ARM64_MTE=y +# end of ARMv8.5 architectural features + +# +# ARMv8.7 architectural features +# +CONFIG_ARM64_EPAN=y +# end of ARMv8.7 architectural features + +CONFIG_ARM64_SVE=y +CONFIG_ARM64_MODULE_PLTS=y +# CONFIG_ARM64_PSEUDO_NMI is not set +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# end of Kernel Features + +# +# Boot options +# +CONFIG_CMDLINE="" +CONFIG_EFI_STUB=y +CONFIG_EFI=y +CONFIG_DMI=y +# end of Boot options + +CONFIG_SYSVIPC_COMPAT=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HIBERNATION_SNAPSHOT_DEV=y +CONFIG_PM_STD_PARTITION="" +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_PM_GENERIC_DOMAINS=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +# CONFIG_ENERGY_MODEL is not set +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# end of Power management options + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y +# CONFIG_ARM_PSCI_CPUIDLE is not set +# end of ARM CPU Idle Drivers +# end of CPU Idle + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_CPUFREQ_DT=m +CONFIG_CPUFREQ_DT_PLATDEV=y +CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM=m +CONFIG_ARM_SCPI_CPUFREQ=y +# end of CPU Frequency scaling +# end of CPU Power Management + +# +# Firmware Drivers +# +# CONFIG_ARM_SCMI_PROTOCOL is not set +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_SCPI_POWER_DOMAIN=y +# CONFIG_ARM_SDE_INTERFACE is not set +# CONFIG_FIRMWARE_MEMMAP is not set +CONFIG_DMIID=y +# CONFIG_DMI_SYSFS is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_ROCKCHIP_SIP=y +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_ESRT=y +CONFIG_EFI_VARS_PSTORE=y +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_GENERIC_STUB=y +CONFIG_EFI_ARMSTUB_DTB_LOADER=y +CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +CONFIG_EFI_CAPSULE_LOADER=y +# 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_MESON_SM=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=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +CONFIG_ARCH_SUPPORTS_ACPI=y +# CONFIG_ACPI is not set +CONFIG_IRQ_BYPASS_MANAGER=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_MMIO=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_KVM_VFIO=y +CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_HAVE_KVM_IRQ_BYPASS=y +CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA256_ARM64=y +CONFIG_CRYPTO_SHA512_ARM64=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +# CONFIG_CRYPTO_SHA512_ARM64_CE is not set +CONFIG_CRYPTO_SHA3_ARM64=m +CONFIG_CRYPTO_SM3_ARM64_CE=m +CONFIG_CRYPTO_SM4_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM64_CE=y +# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y +CONFIG_CRYPTO_CHACHA20_NEON=y +CONFIG_CRYPTO_POLY1305_NEON=m +CONFIG_CRYPTO_NHPOLY1305_NEON=m +CONFIG_CRYPTO_AES_ARM64_BS=y + +# +# General architecture-dependent options +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +# CONFIG_KPROBES is not set +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=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_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=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_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=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_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_HAS_RELR=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=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_MODULE_SIG_FORMAT=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_MODULE_SIG=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_ALL=y +CONFIG_MODULE_SIG_SHA1=y +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +# CONFIG_MODULE_SIG_SHA512 is not set +CONFIG_MODULE_SIG_HASH="sha1" +# CONFIG_MODULE_COMPRESS_NONE is not set +# CONFIG_MODULE_COMPRESS_GZIP is not set +CONFIG_MODULE_COMPRESS_XZ=y +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_CGROUP_RWSTAT=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=y +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +CONFIG_BLK_WBT=y +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +CONFIG_BLK_WBT_MQ=y +CONFIG_BLK_DEBUG_FS=y +CONFIG_BLK_DEBUG_FS_ZONED=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION 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=y +CONFIG_MQ_IOSCHED_KYBER=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_BFQ_CGROUP_DEBUG is not set +# end of IO Schedulers + +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_UNINLINE_SPIN_UNLOCK=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_COMPAT_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 is not set +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=m +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_PAGE_REPORTING=y +CONFIG_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CMA_AREAS=7 +CONFIG_ZSWAP=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y +CONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd" +# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD is not set +CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD=y +# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set +CONFIG_ZSWAP_ZPOOL_DEFAULT="z3fold" +CONFIG_ZSWAP_DEFAULT_ON=y +CONFIG_ZPOOL=y +CONFIG_ZBUD=y +CONFIG_Z3FOLD=y +CONFIG_ZSMALLOC=y +# 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_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +# CONFIG_READ_ONLY_THP_FOR_FS is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# end of Memory Management options + +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_REDIRECT=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_UNIX_DIAG=m +CONFIG_TLS=m +CONFIG_TLS_DEVICE=y +# CONFIG_TLS_TOE is not set +CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +CONFIG_XFRM_INTERFACE=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_XDP_SOCKETS=y +# CONFIG_XDP_SOCKETS_DIAG is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m +# CONFIG_INET_ESPINTCP is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +# CONFIG_DEFAULT_CUBIC is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +# CONFIG_INET6_ESPINTCP is not set +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SEG6_HMAC=y +CONFIG_IPV6_SEG6_BPF=y +# CONFIG_IPV6_RPL_LWTUNNEL is not set +CONFIG_NETLABEL=y +# CONFIG_MPTCP is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NFT_REJECT_NETDEV=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XTABLES_COMPAT=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_TWOS=m + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TABLES_IPV4=y +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_FLOW_TABLE_IPV4=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NF_TABLES_IPV6=y +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_FLOW_TABLE_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m + +# +# DECnet: Netfilter Configuration +# +CONFIG_DECNET_NF_GRABULATOR=m +# end of DECnet: Netfilter Configuration + +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NF_CONNTRACK_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BPFILTER=y +CONFIG_BPFILTER_UMH=m +# CONFIG_IP_DCCP is not set +CONFIG_IP_SCTP=m +CONFIG_SCTP_DBG_OBJCNT=y +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_INET_SCTP_DIAG=m +CONFIG_RDS=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TIPC_CRYPTO=y +CONFIG_TIPC_DIAG=m +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_STP=y +CONFIG_GARP=y +CONFIG_MRP=y +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set +CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_8021Q=m +CONFIG_NET_DSA_TAG_AR9331=m +CONFIG_NET_DSA_TAG_BRCM_COMMON=m +CONFIG_NET_DSA_TAG_BRCM=m +CONFIG_NET_DSA_TAG_BRCM_LEGACY=m +CONFIG_NET_DSA_TAG_BRCM_PREPEND=m +CONFIG_NET_DSA_TAG_HELLCREEK=m +CONFIG_NET_DSA_TAG_GSWIP=m +CONFIG_NET_DSA_TAG_DSA_COMMON=m +CONFIG_NET_DSA_TAG_DSA=m +CONFIG_NET_DSA_TAG_EDSA=m +CONFIG_NET_DSA_TAG_MTK=m +CONFIG_NET_DSA_TAG_KSZ=m +CONFIG_NET_DSA_TAG_RTL4_A=m +CONFIG_NET_DSA_TAG_OCELOT=m +CONFIG_NET_DSA_TAG_OCELOT_8021Q=m +CONFIG_NET_DSA_TAG_QCA=m +CONFIG_NET_DSA_TAG_LAN9303=m +CONFIG_NET_DSA_TAG_SJA1105=m +CONFIG_NET_DSA_TAG_TRAILER=m +CONFIG_NET_DSA_TAG_XRS700X=m +CONFIG_VLAN_8021Q=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_DECNET=m +CONFIG_DECNET_ROUTER=y +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_X25=m +CONFIG_LAPB=m +CONFIG_PHONET=m +CONFIG_6LOWPAN=m +# CONFIG_6LOWPAN_DEBUGFS is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +# CONFIG_6LOWPAN_GHC_EXT_HDR_HOP is not set +# CONFIG_6LOWPAN_GHC_UDP is not set +# CONFIG_6LOWPAN_GHC_ICMPV6 is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_DEST is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE is not set +CONFIG_IEEE802154=m +CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y +CONFIG_IEEE802154_SOCKET=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_TAPRIO=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_SKBPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_CAKE=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_FQ_PIE=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_ETS=m +CONFIG_NET_SCH_DEFAULT=y +# CONFIG_DEFAULT_FQ is not set +# CONFIG_DEFAULT_CODEL is not set +# CONFIG_DEFAULT_FQ_CODEL is not set +# CONFIG_DEFAULT_FQ_PIE is not set +# CONFIG_DEFAULT_SFQ is not set +CONFIG_DEFAULT_PFIFO_FAST=y +CONFIG_DEFAULT_NET_SCH="pfifo_fast" + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_MATCHALL=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_IPT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_MPLS=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CTINFO=m +CONFIG_NET_ACT_SKBMOD=m +CONFIG_NET_ACT_IFE=m +CONFIG_NET_ACT_TUNNEL_KEY=m +CONFIG_NET_ACT_CT=m +# CONFIG_NET_ACT_GATE is not set +CONFIG_NET_IFE_SKBMARK=m +CONFIG_NET_IFE_SKBPRIO=m +CONFIG_NET_IFE_SKBTCINDEX=m +# CONFIG_NET_TC_SKB_EXT is not set +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=y +CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BATMAN_V=y +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATMAN_ADV_MCAST=y +CONFIG_BATMAN_ADV_DEBUG=y +# CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_VSOCKETS=m +CONFIG_VSOCKETS_DIAG=m +CONFIG_VSOCKETS_LOOPBACK=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS_COMMON=m +CONFIG_NETLINK_DIAG=m +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=m +CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m +CONFIG_NET_NSH=m +CONFIG_HSR=m +CONFIG_NET_SWITCHDEV=y +CONFIG_NET_L3_MASTER_DEV=y +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_STREAM_PARSER is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_DROP_MONITOR=y +# end of Network testing +# end of Networking options + +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_YAM=m +# end of AX.25 network device drivers + +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m +CONFIG_CAN_J1939=m +# CONFIG_CAN_ISOTP is not set + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=m +CONFIG_CAN_VXCAN=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_DEV=m +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_FLEXCAN is not set +CONFIG_CAN_GRCAN=m +CONFIG_CAN_KVASER_PCIEFD=m +CONFIG_CAN_XILINXCAN=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m +CONFIG_CAN_C_CAN_PCI=m +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +# CONFIG_CAN_IFI_CANFD is not set +CONFIG_CAN_M_CAN=m +CONFIG_CAN_M_CAN_PCI=m +CONFIG_CAN_M_CAN_PLATFORM=m +CONFIG_CAN_M_CAN_TCAN4X5X=m +CONFIG_CAN_PEAK_PCIEFD=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_F81601=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_SOFTING=m + +# +# CAN SPI interfaces +# +CONFIG_CAN_HI311X=m +CONFIG_CAN_MCP251X=m +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_ETAS_ES58X=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_MCBA_USB=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_UCAN=m +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +# end of CAN Device Drivers + +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_HS=y +CONFIG_BT_LE=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_LEDS=y +# CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set +# CONFIG_BT_DEBUGFS is not set +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_QCA=m +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_NOKIA=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_MTKSDIO=m +CONFIG_BT_MTKUART=m +CONFIG_BT_HCIRSI=m +CONFIG_BT_VIRTIO=m +# end of Bluetooth device drivers + +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_IPV6 is not set +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_DEBUG is not set +# CONFIG_RXKAD is not set +# CONFIG_AF_KCM is not set +CONFIG_STREAM_PARSER=y +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 is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +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=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=y +CONFIG_RFKILL_RK=y +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_XEN=m +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=m +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_HCI=m +CONFIG_NFC_SHDLC=y + +# +# Near Field Communication (NFC) devices +# +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_SIM=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_VIRTUAL_NCI=m +CONFIG_NFC_FDP=m +CONFIG_NFC_FDP_I2C=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN533_USB=m +CONFIG_NFC_PN533_I2C=m +CONFIG_NFC_PN532_UART=m +CONFIG_NFC_MICROREAD=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MRVL=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_I2C=m +CONFIG_NFC_MRVL_SPI=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_NFC_S3FWRN82_UART=m +CONFIG_NFC_ST95HF=m +# end of Near Field Communication (NFC) devices + +CONFIG_PSAMPLE=m +CONFIG_NET_IFE=m +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_SOCK_VALIDATE_XMIT=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y +CONFIG_NET_DEVLINK=y +CONFIG_PAGE_POOL=y +CONFIG_FAILOVER=m +CONFIG_ETHTOOL_NETLINK=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 is not set +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEFAULT is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +CONFIG_PCIEASPM_PERFORMANCE=y +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_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_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# 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 +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_HOST=y +CONFIG_PCIE_ROCKCHIP_EP=y +# CONFIG_PCIE_MICROCHIP_HOST is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCIE_DW_PLAT_EP is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN 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 +# +# end of Mobiveil PCIe Core Support + +# +# Cadence PCIe controllers support +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# CONFIG_PCIE_CADENCE_PLAT_EP is not set +# CONFIG_PCI_J721E_HOST is not set +# CONFIG_PCI_J721E_EP is not set +# end of Cadence PCIe controllers support +# end of PCI controller drivers + +# +# PCI Endpoint +# +CONFIG_PCI_ENDPOINT=y +CONFIG_PCI_ENDPOINT_CONFIGFS=y +# CONFIG_PCI_EPF_TEST is not set +CONFIG_PCI_EPF_NTB=m +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +CONFIG_CXL_BUS=m +CONFIG_CXL_MEM=m +# CONFIG_CXL_MEM_RAW_COMMANDS is not set +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# 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=y +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_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_SYS_HYPERVISOR=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=m +CONFIG_REGMAP_SPMI=m +CONFIG_REGMAP_W1=m +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_SCCB=m +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_GENERIC_ARCH_TOPOLOGY=y +CONFIG_GENERIC_ARCH_NUMA=y +# end of Generic Driver Options + +# +# Bus devices +# +CONFIG_ARM_CCI=y +CONFIG_BRCMSTB_GISB_ARB=y +# CONFIG_MOXTET is not set +# CONFIG_SIMPLE_PM_BUS is not set +CONFIG_SUN50I_DE2_BUS=y +CONFIG_SUNXI_RSB=m +CONFIG_VEXPRESS_CONFIG=y +CONFIG_MHI_BUS=m +# CONFIG_MHI_BUS_DEBUG is not set +CONFIG_MHI_BUS_PCI_GENERIC=m +# end of Bus devices + +CONFIG_CONNECTOR=m +CONFIG_GNSS=m +CONFIG_GNSS_SERIAL=m +CONFIG_GNSS_MTK_SERIAL=m +CONFIG_GNSS_SIRF_SERIAL=m +CONFIG_GNSS_UBX_SERIAL=m +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# 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=y +CONFIG_MTD_BLOCK=y +# 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 is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_INTELEXT is not set +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 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 is not set +# 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_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# ECC engine support +# +# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set +# 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=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +# CONFIG_MTD_UBI is not set +CONFIG_MTD_HYPERBUS=m +CONFIG_HBMC_AM654=m +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_DYNAMIC=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_OVERLAY=y +CONFIG_OF_NUMA=y +CONFIG_OF_CONFIGFS=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_CDROM=m +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_842 is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=8 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_CDROM_PKTCDVD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_RSXX=m + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +CONFIG_NVME_MULTIPATH=y +# CONFIG_NVME_HWMON is not set +CONFIG_NVME_FABRICS=m +CONFIG_NVME_FC=m +# CONFIG_NVME_TCP is not set +CONFIG_NVME_TARGET=m +# CONFIG_NVME_TARGET_PASSTHRU is not set +CONFIG_NVME_TARGET_LOOP=m +CONFIG_NVME_TARGET_FC=m +# CONFIG_NVME_TARGET_FCLOOP is not set +# CONFIG_NVME_TARGET_TCP is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +CONFIG_PHANTOM=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +# 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=y +CONFIG_DW_XDATA_PCIE=m +# CONFIG_PCI_ENDPOINT_TEST is not set +CONFIG_XILINX_SDFEC=m +CONFIG_MISC_RTSX=m +# CONFIG_HISI_HIKEY_USB is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +# CONFIG_EEPROM_MAX6875 is not set +CONFIG_EEPROM_93CX6=m +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +CONFIG_EEPROM_EE1004=m +# end of EEPROM support + +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set +CONFIG_GENWQE=m +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 +# CONFIG_ECHO is not set +CONFIG_BCM_VK=m +# CONFIG_BCM_VK_TTY is not set +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MISC_RTSX_USB=m +CONFIG_HABANA_AI=m +# CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set + +# +# UNISOC WCN Device Drivers(for new chip...) +# +# CONFIG_SC23XX is not set +CONFIG_WCN_BSP_DRIVER_BUILDIN=y +CONFIG_RK_WIFI_DEVICE_UWE5621=y +# CONFIG_RK_WIFI_DEVICE_UWE5622 is not set +# CONFIG_AW_WIFI_DEVICE_UWE5622 is not set +# end of UNISOC WCN Device Drivers(for new chip...) + +CONFIG_TTY_OVERY_SDIO=m +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=m +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=m +# 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_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 is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI 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_XEN_SCSI_FRONTEND is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +CONFIG_SCSI_FDOMAIN=m +CONFIG_SCSI_FDOMAIN_PCI=m +# 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 is not set +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_AHCI_CEVA=y +CONFIG_AHCI_SUNXI=m +CONFIG_AHCI_XGENE=y +CONFIG_AHCI_QORIQ=y +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +CONFIG_SATA_SIL24=y +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_DWC 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 + +# +# 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=y +CONFIG_PATA_OF_PLATFORM=y +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_MD_CLUSTER=m +CONFIG_BCACHE=y +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_ASYNC_REGISTRATION is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_UNSTRIPED=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_WRITECACHE=m +# CONFIG_DM_EBS is not set +CONFIG_DM_ERA=m +CONFIG_DM_CLONE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +# CONFIG_DM_MULTIPATH_HST is not set +CONFIG_DM_MULTIPATH_IOA=m +CONFIG_DM_DELAY=m +CONFIG_DM_DUST=m +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +# CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG is not set +CONFIG_DM_VERITY_FEC=y +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_INTEGRITY=m +CONFIG_DM_ZONED=m +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_USER2=m +CONFIG_LOOPBACK_TARGET=m +CONFIG_ISCSI_TARGET=m +# 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=y +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_WIREGUARD=m +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_EQUALIZER=m +# CONFIG_NET_FC is not set +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=m +CONFIG_IPVTAP=m +CONFIG_VXLAN=m +CONFIG_GENEVE=m +# CONFIG_BAREUDP is not set +CONFIG_GTP=m +CONFIG_MACSEC=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_TUN=y +CONFIG_TAP=m +CONFIG_TUN_VNET_CROSS_LE=y +CONFIG_VETH=m +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_NET_VRF=m +CONFIG_MHI_NET=m +# CONFIG_ARCNET is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +# CONFIG_ATM_HE_USE_SUNI is not set +CONFIG_ATM_SOLOS=m + +# +# Distributed Switch Architecture drivers +# +CONFIG_B53=m +CONFIG_B53_SPI_DRIVER=m +CONFIG_B53_MDIO_DRIVER=m +CONFIG_B53_MMAP_DRIVER=m +CONFIG_B53_SRAB_DRIVER=m +CONFIG_B53_SERDES=m +CONFIG_NET_DSA_BCM_SF2=m +CONFIG_NET_DSA_LOOP=m +CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK=m +CONFIG_NET_DSA_LANTIQ_GSWIP=m +CONFIG_NET_DSA_MT7530=m +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI=m +CONFIG_NET_DSA_MICROCHIP_KSZ8795=m +CONFIG_NET_DSA_MICROCHIP_KSZ8795_SPI=m +CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=m +CONFIG_NET_DSA_MV88E6XXX=m +# CONFIG_NET_DSA_MV88E6XXX_PTP is not set +# CONFIG_NET_DSA_MSCC_SEVILLE is not set +CONFIG_NET_DSA_AR9331=m +CONFIG_NET_DSA_SJA1105=m +# CONFIG_NET_DSA_SJA1105_PTP is not set +CONFIG_NET_DSA_XRS700X=m +CONFIG_NET_DSA_XRS700X_I2C=m +CONFIG_NET_DSA_XRS700X_MDIO=m +CONFIG_NET_DSA_QCA8K=m +CONFIG_NET_DSA_REALTEK_SMI=m +CONFIG_NET_DSA_SMSC_LAN9303=m +CONFIG_NET_DSA_SMSC_LAN9303_I2C=m +CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m +CONFIG_NET_DSA_VITESSE_VSC73XX=m +CONFIG_NET_DSA_VITESSE_VSC73XX_SPI=m +CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM=m +# end of Distributed Switch Architecture drivers + +CONFIG_ETHERNET=y +CONFIG_MDIO=m +CONFIG_NET_VENDOR_3COM=y +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALLWINNER=y +CONFIG_SUN4I_EMAC=m +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +CONFIG_AMD_XGBE=y +# CONFIG_AMD_XGBE_DCB is not set +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_AQTION=m +CONFIG_NET_VENDOR_ARC=y +# CONFIG_EMAC_ROCKCHIP is not set +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_BCMGENET=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_TIGON3=m +CONFIG_TIGON3_HWMON=y +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +CONFIG_SYSTEMPORT=m +CONFIG_BNXT=m +CONFIG_BNXT_SRIOV=y +CONFIG_BNXT_FLOWER_OFFLOAD=y +# CONFIG_BNXT_DCB is not set +CONFIG_BNXT_HWMON=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_BNA=m +CONFIG_NET_VENDOR_CADENCE=y +CONFIG_MACB=y +CONFIG_MACB_USE_HWSTAMP=y +# CONFIG_MACB_PCI is not set +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_THUNDER_NIC_PF=y +# CONFIG_THUNDER_NIC_VF is not set +CONFIG_THUNDER_NIC_BGX=y +CONFIG_THUNDER_NIC_RGX=y +CONFIG_CAVIUM_PTP=y +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_DLINK=y +CONFIG_DL2K=m +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_GOOGLE=y +# CONFIG_GVE is not set +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_HIX5HD2_GMAC=y +# 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 is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IGB_HWMON=y +CONFIG_IGBVF=y +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_ICE is not set +# CONFIG_FM10K is not set +# CONFIG_IGC is not set +CONFIG_NET_VENDOR_MICROSOFT=y +# CONFIG_JME is not set +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_MVMDIO=y +# CONFIG_SKGE is not set +CONFIG_SKY2=y +# CONFIG_SKY2_DEBUG is not set +CONFIG_OCTEONTX2_MBOX=m +# CONFIG_OCTEONTX2_AF is not set +CONFIG_OCTEONTX2_PF=m +CONFIG_OCTEONTX2_VF=m +# CONFIG_PRESTERA is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_ENC28J60=m +CONFIG_ENC28J60_WRITEVERIFY=y +# CONFIG_ENCX24J600 is not set +# CONFIG_LAN743X is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_MSCC_OCELOT_SWITCH_LIB=m +CONFIG_MSCC_OCELOT_SWITCH=m +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_8390=y +# CONFIG_NE2K_PCI is not set +CONFIG_NET_VENDOR_NVIDIA=y +# CONFIG_FORCEDETH is not set +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_IONIC=m +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_QCA7000=m +# CONFIG_QCA7000_SPI is not set +CONFIG_QCA7000_UART=m +CONFIG_QCOM_EMAC=m +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +CONFIG_R8169=m +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_ROCKER=m +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=y +# CONFIG_EPIC100 is not set +CONFIG_SMSC911X=y +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=m +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_MESON=m +CONFIG_DWMAC_ROCKCHIP=m +CONFIG_DWMAC_SUNXI=m +CONFIG_DWMAC_SUN8I=m +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_STMMAC_PCI is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XILINX=y +CONFIG_XILINX_EMACLITE=m +CONFIG_XILINX_AXI_EMAC=m +CONFIG_XILINX_LL_TEMAC=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PHYLINK=y +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +CONFIG_LED_TRIGGER_PHY=y +CONFIG_FIXED_PHY=y +CONFIG_SFP=m + +# +# MII PHY device drivers +# +CONFIG_AMD_PHY=m +CONFIG_MESON_GXL_PHY=m +CONFIG_ADIN_PHY=m +CONFIG_AQUANTIA_PHY=m +CONFIG_AX88796B_PHY=m +CONFIG_BROADCOM_PHY=m +# CONFIG_BCM54140_PHY is not set +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM84881_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_BCM_NET_PHYLIB=m +CONFIG_CICADA_PHY=m +# CONFIG_CORTINA_PHY is not set +CONFIG_DAVICOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_LXT_PHY=m +# CONFIG_INTEL_XWAY_PHY is not set +CONFIG_LSI_ET1011C_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +CONFIG_MARVELL_88X2222_PHY=m +CONFIG_MICREL_PHY=y +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROCHIP_T1_PHY=m +# CONFIG_MICROSEMI_PHY is not set +CONFIG_NATIONAL_PHY=m +CONFIG_NXP_C45_TJA11XX_PHY=m +# CONFIG_NXP_TJA11XX_PHY is not set +CONFIG_AT803X_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_REALTEK_PHY=m +# CONFIG_RENESAS_PHY is not set +CONFIG_ROCKCHIP_PHY=y +CONFIG_SMSC_PHY=m +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +CONFIG_DP83TC811_PHY=m +CONFIG_DP83848_PHY=m +# CONFIG_DP83867_PHY is not set +CONFIG_DP83869_PHY=m +CONFIG_VITESSE_PHY=m +# 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_SUN4I=m +CONFIG_MDIO_BITBANG=y +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_CAVIUM=y +# CONFIG_MDIO_GPIO is not set +# CONFIG_MDIO_HISI_FEMAC is not set +CONFIG_MDIO_I2C=m +CONFIG_MDIO_MVUSB=m +CONFIG_MDIO_MSCC_MIIM=m +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_IPQ4019 is not set +CONFIG_MDIO_IPQ8064=m +CONFIG_MDIO_THUNDER=y + +# +# MDIO Multiplexers +# +CONFIG_MDIO_BUS_MUX=y +CONFIG_MDIO_BUS_MUX_MESON_G12A=m +# CONFIG_MDIO_BUS_MUX_GPIO is not set +CONFIG_MDIO_BUS_MUX_MULTIPLEXER=m +CONFIG_MDIO_BUS_MUX_MMIOREG=y + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=m +# end of PCS device drivers + +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPTP=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLHC=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_USB_NET_DRIVERS=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +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=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +# CONFIG_USB_RTL8153_ECM is not set +CONFIG_WLAN=y +# CONFIG_WLAN_VENDOR_ADMTEK is not set +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH5K_PCI is not set +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_AHB=y +# CONFIG_ATH9K_DEBUGFS is not set +CONFIG_ATH9K_DYNACK=y +CONFIG_ATH9K_WOW=y +CONFIG_ATH9K_RFKILL=y +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_PCI_NO_EEPROM=m +CONFIG_ATH9K_HTC=m +# CONFIG_ATH9K_HTC_DEBUGFS is not set +# CONFIG_ATH9K_HWRNG is not set +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +# CONFIG_CARL9170_HWRNG is not set +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +# CONFIG_ATH6KL_TRACING is not set +CONFIG_AR5523=m +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +# CONFIG_WIL6210_TRACING is not set +CONFIG_WIL6210_DEBUGFS=y +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_AHB=y +CONFIG_ATH10K_SDIO=m +CONFIG_ATH10K_USB=m +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +# CONFIG_ATH10K_TRACING is not set +# CONFIG_WCN36XX is not set +# CONFIG_ATH11K is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_DEBUG=y +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_BRCMUTIL=m +CONFIG_BRCMSMAC=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_BRCM_TRACING=y +CONFIG_BRCMDBG=y +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_IPW2100=m +# CONFIG_IPW2100_MONITOR is not set +# CONFIG_IPW2100_DEBUG is not set +# CONFIG_IPW2200 is not set +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLWIFI is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_HERMES is not set +# CONFIG_P54_COMMON is not set +# CONFIG_PRISM54 is not set +CONFIG_WLAN_VENDOR_MARVELL=y +# CONFIG_LIBERTAS is not set +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +# CONFIG_MWIFIEX is not set +CONFIG_MWL8K=m +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_MT76_CORE=m +CONFIG_MT76_LEDS=y +CONFIG_MT76_USB=m +CONFIG_MT76x02_LIB=m +CONFIG_MT76x02_USB=m +CONFIG_MT76_CONNAC_LIB=m +CONFIG_MT76x0_COMMON=m +CONFIG_MT76x0U=m +CONFIG_MT76x0E=m +CONFIG_MT76x2_COMMON=m +CONFIG_MT76x2E=m +CONFIG_MT76x2U=m +CONFIG_MT7603E=m +CONFIG_MT7615_COMMON=m +CONFIG_MT7615E=m +# CONFIG_MT7663U is not set +# CONFIG_MT7663S is not set +# CONFIG_MT7915E is not set +CONFIG_MT7921E=m +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m +# CONFIG_RTL8XXXU_UNTESTED is not set +CONFIG_RTW88=m +# CONFIG_RTW88_8822BE is not set +# CONFIG_RTW88_8822CE is not set +# CONFIG_RTW88_8723DE is not set +# CONFIG_RTW88_8821CE is not set +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_RSI_91X=m +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RSI_COEX=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLCORE=m +CONFIG_WLCORE_SPI=m +CONFIG_WLCORE_SDIO=m +CONFIG_WILINK_PLATFORM_DATA=y +# CONFIG_RTL8822BS is not set +CONFIG_RTL8723DU=m +# CONFIG_RTL8723DS is not set +# CONFIG_RTL8822CS is not set +CONFIG_RTL8822BU=m +CONFIG_RTL8188EU=m +CONFIG_RTL8821CU=m +CONFIG_88XXAU=m +# CONFIG_RTL8192EU is not set +CONFIG_RTL8189FS=m +CONFIG_RTL8189ES=m +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_USB_ZD1201=m +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +CONFIG_QTNFMAC=m +CONFIG_QTNFMAC_PCIE=m +CONFIG_WLAN_UWE5621=m +# CONFIG_WLAN_UWE5622 is not set +CONFIG_SPRDWL_NG=m +CONFIG_MAC80211_HWSIM=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_VIRT_WIFI=m +# CONFIG_WAN is not set +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_AT86RF230=m +# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_ADF7242=m +CONFIG_IEEE802154_CA8210=m +# CONFIG_IEEE802154_CA8210_DEBUGFS is not set +CONFIG_IEEE802154_MCR20A=m +CONFIG_IEEE802154_HWSIM=m + +# +# Wireless WAN +# +CONFIG_WWAN=m +CONFIG_MHI_WWAN_CTRL=m +# end of Wireless WAN + +CONFIG_XEN_NETDEV_FRONTEND=m +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_VMXNET3=m +CONFIG_NETDEVSIM=m +CONFIG_NET_FAILOVER=m +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=m +# CONFIG_INPUT_SPARSEKMAP is not set +CONFIG_INPUT_MATRIXKMAP=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADC=m +CONFIG_KEYBOARD_ADP5520=m +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_QT1050=m +# 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=y +# 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_LM8323 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_SUN4I_LRADC=m +CONFIG_KEYBOARD_IQS62X=m +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_KEYBOARD_CROS_EC=y +# 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=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADC is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=m +# CONFIG_JOYSTICK_IFORCE_232 is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +# CONFIG_JOYSTICK_AS5011 is not set +# CONFIG_JOYSTICK_JOYDUMP is not set +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +# CONFIG_JOYSTICK_PSXPAD_SPI is not set +# CONFIG_JOYSTICK_PXRC is not set +# CONFIG_JOYSTICK_FSIA6B is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADC=m +CONFIG_TOUCHSCREEN_AR1021_I2C=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ATMEL_MXT_T37=y +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_BU21029=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=m +# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set +CONFIG_TOUCHSCREEN_CY8CTMG110=m +CONFIG_TOUCHSCREEN_CYTTSP_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP_SPI=m +CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP4_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP4_SPI=m +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_EGALAX_SERIAL=m +CONFIG_TOUCHSCREEN_EXC3000=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_HIDEEP=m +CONFIG_TOUCHSCREEN_HYCON_HY46XX=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_ILITEK=m +CONFIG_TOUCHSCREEN_S6SY761=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_EKTF2127=m +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MMS114=m +CONFIG_TOUCHSCREEN_MELFAS_MIP4=m +CONFIG_TOUCHSCREEN_MSG2638=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_IMX6UL_TSC=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_TSC200X_CORE=m +CONFIG_TOUCHSCREEN_TSC2004=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC2007_IIO=y +CONFIG_TOUCHSCREEN_RM_TS=m +CONFIG_TOUCHSCREEN_SILEAD=m +CONFIG_TOUCHSCREEN_SIS_I2C=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMFTS=m +CONFIG_TOUCHSCREEN_SUN4I=m +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SURFACE3_SPI=m +CONFIG_TOUCHSCREEN_SX8654=m +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_ZET6223=m +CONFIG_TOUCHSCREEN_ZFORCE=m +CONFIG_TOUCHSCREEN_ROHM_BU21023=m +CONFIG_TOUCHSCREEN_IQS5XX=m +# CONFIG_TOUCHSCREEN_ZINITIX is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +CONFIG_INPUT_ATC260X_ONKEY=m +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +CONFIG_INPUT_MAX77650_ONKEY=m +# CONFIG_INPUT_MMA8450 is not set +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_DECODER=m +CONFIG_INPUT_GPIO_VIBRA=m +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_REGULATOR_HAPTIC is not set +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_INPUT_UINPUT=m +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_PWM_BEEPER is not set +# CONFIG_INPUT_PWM_VIBRA is not set +CONFIG_INPUT_RK805_PWRKEY=y +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +CONFIG_INPUT_DA7280_HAPTICS=m +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_IQS269A is not set +CONFIG_INPUT_IQS626A=m +# CONFIG_INPUT_CMA3000 is not set +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +CONFIG_INPUT_RAVE_SP_PWRBUTTON=m +CONFIG_RMI4_CORE=m +CONFIG_RMI4_I2C=m +CONFIG_RMI4_SPI=m +CONFIG_RMI4_SMB=m +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +# CONFIG_RMI4_F34 is not set +# CONFIG_RMI4_F3A is not set +# CONFIG_RMI4_F54 is not set +# CONFIG_RMI4_F55 is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_AMBAKMI=y +# 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_SUN4I_PS2=m +# 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=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_16550A_VARIANTS=y +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_8250_EXAR=m +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_ASPEED_VUART 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=y +CONFIG_SERIAL_AMBA_PL010_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y +CONFIG_SERIAL_MESON=y +CONFIG_SERIAL_MESON_CONSOLE=y +# 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=m +CONFIG_SERIAL_SIFIVE=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SC16IS7XX_CORE=m +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_SERIAL_BCM63XX=m +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +CONFIG_SERIAL_XILINX_PS_UART=y +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_RP2_NR_UARTS=32 +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_FSL_LINFLEXUART=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_SERIAL_SPRD=m +CONFIG_SERIAL_LITEUART=m +CONFIG_SERIAL_LITEUART_MAX_PORTS=1 +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +CONFIG_N_GSM=m +CONFIG_NOZOMI=m +CONFIG_NULL_TTY=m +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +# CONFIG_HVC_DCC is not set +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +CONFIG_TTY_PRINTK=m +CONFIG_TTY_PRINTK_LEVEL=6 +CONFIG_VIRTIO_CONSOLE=y +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMB_DEVICE_INTERFACE 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_MESON=m +CONFIG_HW_RANDOM_CAVIUM=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 +# end of Character devices + +# CONFIG_RANDOM_TRUST_CPU is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=m + +# +# Multiplexer I2C Chip support +# +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_GPMUX=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_DEMUX_PINCTRL=m +CONFIG_I2C_MUX_MLXCPLD=m +# end of Multiplexer I2C Chip support + +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=m +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_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 + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_CADENCE=m +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_DESIGNWARE_CORE=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_MESON=m +CONFIG_I2C_MV64XXX=m +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +CONFIG_I2C_RK3X=y +# 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=m +CONFIG_I2C_CP2615=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_CROS_EC_TUNNEL=y +# end of I2C Hardware Bus support + +CONFIG_I2C_STUB=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_SLAVE_EEPROM=m +# CONFIG_I2C_SLAVE_TESTUNIT 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=m +CONFIG_CDNS_I3C_MASTER=m +CONFIG_DW_I3C_MASTER=m +CONFIG_SVC_I3C_MASTER=m +CONFIG_MIPI_I3C_HCI=m +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_ALTERA=m +CONFIG_SPI_ALTERA_CORE=m +CONFIG_SPI_AXI_SPI_ENGINE=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_CADENCE=m +# CONFIG_SPI_CADENCE_QUADSPI is not set +CONFIG_SPI_DESIGNWARE=m +# CONFIG_SPI_DW_DMA is not set +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_NXP_FLEXSPI=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_FSL_LIB=m +CONFIG_SPI_FSL_SPI=m +CONFIG_SPI_MESON_SPICC=m +CONFIG_SPI_MESON_SPIFC=m +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PL022=y +# CONFIG_SPI_PXA2XX is not set +CONFIG_SPI_ROCKCHIP=y +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SIFIVE is not set +CONFIG_SPI_SUN4I=m +CONFIG_SPI_SUN6I=m +CONFIG_SPI_MXIC=m +# 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=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_LOOPBACK_TEST=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_SLAVE=y +CONFIG_SPI_SLAVE_TIME=m +CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m +CONFIG_SPI_DYNAMIC=y +CONFIG_SPMI=y +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_GPIO=m + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_DP83640_PHY=m +CONFIG_PTP_1588_CLOCK_INES=m +CONFIG_PTP_1588_CLOCK_KVM=m +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PTP_1588_CLOCK_IDTCM=m +CONFIG_PTP_1588_CLOCK_OCP=m +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_GENERIC_PINCTRL_GROUPS=y +CONFIG_PINMUX=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +CONFIG_PINCTRL_AS3722=m +CONFIG_PINCTRL_AXP209=m +# CONFIG_PINCTRL_MCP23S08 is not set +CONFIG_PINCTRL_ROCKCHIP=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_SX150X=y +CONFIG_PINCTRL_STMFX=m +CONFIG_PINCTRL_MAX77620=y +CONFIG_PINCTRL_RK805=y +# CONFIG_PINCTRL_OCELOT is not set +# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_PINCTRL_SUNXI=y +# CONFIG_PINCTRL_SUN4I_A10 is not set +CONFIG_PINCTRL_SUN5I=y +CONFIG_PINCTRL_SUN6I_A31=y +CONFIG_PINCTRL_SUN6I_A31_R=y +CONFIG_PINCTRL_SUN8I_A23=y +CONFIG_PINCTRL_SUN8I_A33=y +CONFIG_PINCTRL_SUN8I_A83T=y +CONFIG_PINCTRL_SUN8I_A83T_R=y +CONFIG_PINCTRL_SUN8I_A23_R=y +CONFIG_PINCTRL_SUN8I_H3=y +CONFIG_PINCTRL_SUN8I_H3_R=y +CONFIG_PINCTRL_SUN8I_V3S=y +CONFIG_PINCTRL_SUN9I_A80=y +CONFIG_PINCTRL_SUN9I_A80_R=y +CONFIG_PINCTRL_SUN50I_A64=y +CONFIG_PINCTRL_SUN50I_A64_R=y +CONFIG_PINCTRL_SUN50I_A100=y +CONFIG_PINCTRL_SUN50I_A100_R=y +CONFIG_PINCTRL_SUN50I_H5=y +CONFIG_PINCTRL_SUN50I_H6=y +CONFIG_PINCTRL_SUN50I_H6_R=y +CONFIG_PINCTRL_SUN50I_H616=y +CONFIG_PINCTRL_SUN50I_H616_R=y +CONFIG_PINCTRL_MESON=y +CONFIG_PINCTRL_MESON_GXBB=y +CONFIG_PINCTRL_MESON_GXL=y +CONFIG_PINCTRL_MESON8_PMX=y +CONFIG_PINCTRL_MESON_AXG=y +CONFIG_PINCTRL_MESON_AXG_PMX=y +CONFIG_PINCTRL_MESON_G12A=y +CONFIG_PINCTRL_MESON_A1=y +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_MAX730X=m + +# +# Memory mapped GPIO drivers +# +CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_CADENCE=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_EXAR=m +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_GRGPIO=m +CONFIG_GPIO_HLWD=m +CONFIG_GPIO_LOGICVC=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_SAMA5D2_PIOBU=m +# CONFIG_GPIO_SIFIVE is not set +CONFIG_GPIO_SYSCON=m +# CONFIG_GPIO_XGENE is not set +CONFIG_GPIO_XILINX=y +CONFIG_GPIO_AMD_FCH=m +# end of Memory mapped GPIO drivers + +# +# I2C GPIO expanders +# +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_GW_PLD=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +# CONFIG_GPIO_PCA9570 is not set +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_TPIC2810=m +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_BD70528=m +CONFIG_GPIO_BD71815=m +CONFIG_GPIO_BD71828=m +CONFIG_GPIO_MAX77620=y +CONFIG_GPIO_MAX77650=m +# CONFIG_GPIO_RC5T583 is not set +CONFIG_GPIO_TQMX86=m +CONFIG_GPIO_UCB1400=m +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +CONFIG_GPIO_BT8XX=m +CONFIG_GPIO_PCI_IDIO_16=m +CONFIG_GPIO_PCIE_IDIO_24=m +CONFIG_GPIO_RDC321X=m +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +CONFIG_GPIO_74X164=m +CONFIG_GPIO_MAX3191X=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_PISOSR=m +CONFIG_GPIO_XRA1403=m +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +# CONFIG_GPIO_AGGREGATOR is not set +CONFIG_GPIO_MOCKUP=m +# end of Virtual GPIO drivers + +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_SGI=m +# end of 1-wire Bus Masters + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2405=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2408_READBACK=y +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2805=m +CONFIG_W1_SLAVE_DS2430=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2438=m +CONFIG_W1_SLAVE_DS250X=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_DS28E17=m +# end of 1-wire Slaves + +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_AS3722 is not set +CONFIG_POWER_RESET_ATC260X=m +CONFIG_POWER_RESET_BRCMSTB=y +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_REGULATOR is not set +# CONFIG_POWER_RESET_RESTART is not set +CONFIG_POWER_RESET_VEXPRESS=y +CONFIG_POWER_RESET_XGENE=y +CONFIG_POWER_RESET_SYSCON=y +# 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_POWER_SUPPLY_HWMON=y +# CONFIG_PDA_POWER is not set +CONFIG_GENERIC_ADC_BATTERY=m +# CONFIG_TEST_POWER is not set +CONFIG_CHARGER_ADP5061=m +CONFIG_BATTERY_CW2015=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_SBS=m +CONFIG_CHARGER_SBS=m +CONFIG_MANAGER_SBS=m +CONFIG_BATTERY_BQ27XXX=m +CONFIG_BATTERY_BQ27XXX_I2C=m +CONFIG_BATTERY_BQ27XXX_HDQ=m +# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set +CONFIG_CHARGER_AXP20X=m +CONFIG_BATTERY_AXP20X=m +CONFIG_AXP20X_POWER=m +CONFIG_AXP288_FUEL_GAUGE=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_MAX1721X=m +CONFIG_CHARGER_ISP1704=m +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +CONFIG_CHARGER_GPIO=m +# CONFIG_CHARGER_MANAGER is not set +CONFIG_CHARGER_LT3651=m +CONFIG_CHARGER_LTC4162L=m +CONFIG_CHARGER_DETECTOR_MAX14656=m +CONFIG_CHARGER_MAX77650=m +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 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_BQ256XX=m +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +CONFIG_BATTERY_GOLDFISH=m +CONFIG_BATTERY_RT5033=m +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_CHARGER_CROS_USBPD is not set +CONFIG_CHARGER_UCS1002=m +CONFIG_CHARGER_BD70528=m +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_RN5T618_POWER is not set +CONFIG_HWMON=y +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1177=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7X10=m +CONFIG_SENSORS_ADT7310=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_AHT10=m +CONFIG_SENSORS_AS370=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_AXI_FAN_CONTROL=m +CONFIG_SENSORS_ARM_SCPI=m +CONFIG_SENSORS_ASPEED=m +CONFIG_SENSORS_ATXP1=m +# CONFIG_SENSORS_CORSAIR_CPRO is not set +CONFIG_SENSORS_CORSAIR_PSU=m +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FTSTEUTATES=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LTC2945=m +CONFIG_SENSORS_LTC2947=m +CONFIG_SENSORS_LTC2947_I2C=m +CONFIG_SENSORS_LTC2947_SPI=m +CONFIG_SENSORS_LTC2990=m +CONFIG_SENSORS_LTC2992=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX127=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX31722=m +CONFIG_SENSORS_MAX31730=m +CONFIG_SENSORS_MAX6621=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_TC654=m +CONFIG_SENSORS_TPS23861=m +# CONFIG_SENSORS_MR75203 is not set +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NPCM7XX=m +CONFIG_SENSORS_NZXT_KRAKEN2=m +CONFIG_SENSORS_OCC_P8_I2C=m +CONFIG_SENSORS_OCC=m +CONFIG_SENSORS_PCF8591=m +CONFIG_PMBUS=m +CONFIG_SENSORS_PMBUS=m +# CONFIG_SENSORS_ADM1266 is not set +CONFIG_SENSORS_ADM1275=m +CONFIG_SENSORS_BEL_PFE=m +CONFIG_SENSORS_BPA_RS600=m +CONFIG_SENSORS_FSP_3Y=m +CONFIG_SENSORS_IBM_CFFPS=m +CONFIG_SENSORS_INSPUR_IPSPS=m +CONFIG_SENSORS_IR35221=m +CONFIG_SENSORS_IR36021=m +CONFIG_SENSORS_IR38064=m +CONFIG_SENSORS_IRPS5401=m +CONFIG_SENSORS_ISL68137=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +CONFIG_SENSORS_LTC3815=m +CONFIG_SENSORS_MAX15301=m +CONFIG_SENSORS_MAX16064=m +# CONFIG_SENSORS_MAX16601 is not set +CONFIG_SENSORS_MAX20730=m +CONFIG_SENSORS_MAX20751=m +CONFIG_SENSORS_MAX31785=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX8688=m +# CONFIG_SENSORS_MP2975 is not set +CONFIG_SENSORS_PM6764TR=m +CONFIG_SENSORS_PXE1610=m +CONFIG_SENSORS_Q54SJ108A2=m +CONFIG_SENSORS_STPDDC60=m +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TPS53679=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_XDPE122=m +CONFIG_SENSORS_ZL6100=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_SBTSI=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_STTS751=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_ADC128D818=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_INA3221=m +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP108=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TMP513=m +CONFIG_SENSORS_VEXPRESS=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83773G=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_THERMAL=y +# CONFIG_THERMAL_NETLINK is not set +CONFIG_THERMAL_STATISTICS=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +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=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_THERMAL_EMULATION=y +CONFIG_THERMAL_MMIO=m +# CONFIG_MAX77620_THERMAL is not set +CONFIG_SUN8I_THERMAL=m +CONFIG_ROCKCHIP_THERMAL=y +CONFIG_AMLOGIC_THERMAL=y +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +CONFIG_WATCHDOG_SYSFS=y + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_BD70528_WATCHDOG=m +CONFIG_BD957XMUF_WATCHDOG=m +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +CONFIG_RAVE_SP_WATCHDOG=m +# CONFIG_ARM_SP805_WATCHDOG is not set +# CONFIG_ARM_SBSA_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +CONFIG_DW_WATCHDOG=y +CONFIG_RN5T618_WATCHDOG=m +CONFIG_SUNXI_WATCHDOG=m +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_MAX77620_WATCHDOG is not set +CONFIG_MESON_GXBB_WATCHDOG=m +CONFIG_MESON_WATCHDOG=m +# 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 +# CONFIG_XEN_WDT is not set + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +# CONFIG_SSB_DRIVER_GPIO is not set +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +# CONFIG_BCMA_HOST_SOC is not set +CONFIG_BCMA_DRIVER_PCI=y +# CONFIG_BCMA_DRIVER_GMAC_CMN is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +# CONFIG_BCMA_DEBUG is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ACT8945A is not set +CONFIG_MFD_SUN4I_GPADC=m +CONFIG_MFD_AS3711=y +CONFIG_MFD_AS3722=m +CONFIG_PMIC_ADP5520=y +CONFIG_MFD_AAT2870_CORE=y +# 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_AC100=m +CONFIG_MFD_AXP20X=m +# CONFIG_MFD_AXP20X_I2C is not set +CONFIG_MFD_AXP20X_RSB=m +CONFIG_MFD_CROS_EC_DEV=y +# 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_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_INTEL_PMT=m +CONFIG_MFD_IQS62X=m +# 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=y +CONFIG_MFD_MAX77650=m +# 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_NTXEC=m +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +CONFIG_UCB1400_CORE=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RK808=y +CONFIG_MFD_RN5T618=m +CONFIG_MFD_SEC_CORE=y +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SUN6I_PRCM=y +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=m +CONFIG_MFD_LM3533=m +# CONFIG_MFD_TC3589X is not set +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +# 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=m +CONFIG_MFD_ROHM_BD71828=m +CONFIG_MFD_ROHM_BD957XMUF=m +# CONFIG_MFD_STPMIC1 is not set +CONFIG_MFD_STMFX=m +CONFIG_MFD_ATC260X=m +CONFIG_MFD_ATC260X_I2C=m +# CONFIG_MFD_KHADAS_MCU is not set +CONFIG_MFD_VEXPRESS_SYSREG=y +CONFIG_RAVE_SP_CORE=m +# CONFIG_MFD_INTEL_M10_BMC is not set +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +CONFIG_REGULATOR_88PG86X=m +# CONFIG_REGULATOR_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AS3722=m +CONFIG_REGULATOR_ATC260X=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BD70528=m +CONFIG_REGULATOR_BD71815=m +CONFIG_REGULATOR_BD71828=m +CONFIG_REGULATOR_BD957XMUF=m +# CONFIG_REGULATOR_CROS_EC is not set +CONFIG_REGULATOR_DA9121=m +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +CONFIG_REGULATOR_FAN53555=y +# CONFIG_REGULATOR_FAN53880 is not set +CONFIG_REGULATOR_GPIO=y +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +CONFIG_REGULATOR_MAX77620=y +CONFIG_REGULATOR_MAX77650=m +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MAX77826 is not set +CONFIG_REGULATOR_MCP16502=m +CONFIG_REGULATOR_MP5416=m +CONFIG_REGULATOR_MP8859=m +CONFIG_REGULATOR_MP886X=m +CONFIG_REGULATOR_MPQ7920=m +# CONFIG_REGULATOR_MT6311 is not set +CONFIG_REGULATOR_MT6315=m +# CONFIG_REGULATOR_PCA9450 is not set +CONFIG_REGULATOR_PF8X00=m +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_QCOM_SPMI=y +# CONFIG_REGULATOR_QCOM_USB_VBUS is not set +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_RK808=y +CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_ROHM=m +# CONFIG_REGULATOR_RT4801 is not set +CONFIG_REGULATOR_RT5033=m +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_S2MPA01 is not set +CONFIG_REGULATOR_S2MPS11=y +# CONFIG_REGULATOR_S5M8767 is not set +CONFIG_REGULATOR_SLG51000=m +# CONFIG_REGULATOR_SY8106A is not set +CONFIG_REGULATOR_SY8824X=m +# CONFIG_REGULATOR_SY8827N is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS65132 is not set +# CONFIG_REGULATOR_TPS6524X is not set +# CONFIG_REGULATOR_VCTRL is not set +# CONFIG_REGULATOR_VEXPRESS is not set +# CONFIG_REGULATOR_QCOM_LABIBB is not set +CONFIG_RC_CORE=m +CONFIG_RC_MAP=m +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_XMP_DECODER=m +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_RCMM_DECODER=m +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_HIX5HD2=m +CONFIG_IR_IMON=m +CONFIG_IR_IMON_RAW=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MESON=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SPI=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_GPIO_TX=m +CONFIG_IR_PWM_TX=m +CONFIG_IR_SUNXI=m +CONFIG_IR_SERIAL=m +CONFIG_IR_SERIAL_TRANSMITTER=y +CONFIG_IR_SIR=m +CONFIG_RC_XBOX_DVD=m +# CONFIG_IR_TOY is not set +CONFIG_CEC_CORE=m +CONFIG_CEC_NOTIFIER=y +CONFIG_CEC_PIN=y +CONFIG_MEDIA_CEC_RC=y +CONFIG_CEC_PIN_ERROR_INJ=y +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_CEC_CROS_EC is not set +# CONFIG_CEC_MESON_AO is not set +# CONFIG_CEC_MESON_G12A_AO is not set +# CONFIG_CEC_GPIO is not set +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +CONFIG_MEDIA_SUPPORT=m +# CONFIG_MEDIA_SUPPORT_FILTER is not set +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# +CONFIG_VIDEO_DEV=m +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=m +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_FIXED_MINOR_RANGES=y +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_H264=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L2_FWNODE=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +# end of Video4Linux options + +# +# Media controller options +# +CONFIG_MEDIA_CONTROLLER_DVB=y +CONFIG_MEDIA_CONTROLLER_REQUEST_API=y + +# +# Please notice that the enabled Media controller Request API is EXPERIMENTAL +# +# end of Media controller options + +# +# Digital TV options +# +CONFIG_DVB_MMAP=y +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# +CONFIG_TTPCI_EEPROM=m +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m + +# +# Analog TV USB devices +# +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_LOADER=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_CXUSB_ANALOG is not set +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_AS102=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_SI470X=m +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_SI4713=m +CONFIG_PLATFORM_SI4713=m +CONFIG_I2C_SI4713=m +CONFIG_USB_MR800=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_MA901=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_MEDIA_COMMON_OPTIONS=y + +# +# common driver options +# +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +# CONFIG_SMS_SIANO_DEBUGFS is not set +# CONFIG_V4L_PLATFORM_DRIVERS is not set +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +CONFIG_VIDEO_MESON_GE2D=m +CONFIG_VIDEO_ROCKCHIP_RGA=m +CONFIG_VIDEO_SUN8I_DEINTERLACE=m +CONFIG_VIDEO_SUN8I_ROTATE=m +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_SDR_PLATFORM_DRIVERS=y + +# +# MMC/SDIO DVB adapters +# +CONFIG_SMS_SDIO_DRV=m +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_DVB_TEST_DRIVERS is not set +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# IR I2C driver auto-selected by 'Autoselect ancillary drivers' +# +CONFIG_VIDEO_IR_I2C=m + +# +# Audio decoders, processors and mixers +# +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TDA1997X=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SONY_BTF_MPX=m +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +CONFIG_VIDEO_SAA6588=m +# end of RDS decoders + +# +# Video decoders +# +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV748X=m +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7604_CEC=y +CONFIG_VIDEO_ADV7842=m +CONFIG_VIDEO_ADV7842_CEC=y +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_ML86V7667=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TC358743=m +CONFIG_VIDEO_TC358743_CEC=y +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_TW9910=m +CONFIG_VIDEO_VPX3220=m +# CONFIG_VIDEO_MAX9286 is not set + +# +# Video and audio decoders +# +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m +# end of Video decoders + +# +# Video encoders +# +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7343=m +CONFIG_VIDEO_ADV7393=m +CONFIG_VIDEO_AD9389B=m +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_THS8200=m +# end of Video encoders + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +# end of Video improvement chips + +# +# Audio/Video compression chips +# +CONFIG_VIDEO_SAA6752HS=m +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +CONFIG_SDR_MAX2175=m +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_I2C=m +CONFIG_VIDEO_ST_MIPID02=m +# end of Miscellaneous helper chips + +# +# Camera sensor devices +# +CONFIG_VIDEO_APTINA_PLL=m +CONFIG_VIDEO_CCS_PLL=m +CONFIG_VIDEO_HI556=m +CONFIG_VIDEO_IMX214=m +CONFIG_VIDEO_IMX219=m +CONFIG_VIDEO_IMX258=m +CONFIG_VIDEO_IMX274=m +CONFIG_VIDEO_IMX290=m +CONFIG_VIDEO_IMX319=m +CONFIG_VIDEO_IMX334=m +CONFIG_VIDEO_IMX355=m +CONFIG_VIDEO_OV02A10=m +CONFIG_VIDEO_OV2640=m +CONFIG_VIDEO_OV2659=m +CONFIG_VIDEO_OV2680=m +CONFIG_VIDEO_OV2685=m +CONFIG_VIDEO_OV5640=m +CONFIG_VIDEO_OV5645=m +CONFIG_VIDEO_OV5647=m +CONFIG_VIDEO_OV5648=m +CONFIG_VIDEO_OV6650=m +CONFIG_VIDEO_OV5670=m +CONFIG_VIDEO_OV5675=m +CONFIG_VIDEO_OV5695=m +CONFIG_VIDEO_OV7251=m +CONFIG_VIDEO_OV772X=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_OV7740=m +CONFIG_VIDEO_OV8856=m +CONFIG_VIDEO_OV8865=m +CONFIG_VIDEO_OV9640=m +CONFIG_VIDEO_OV9650=m +CONFIG_VIDEO_OV13858=m +CONFIG_VIDEO_VS6624=m +CONFIG_VIDEO_MT9M001=m +CONFIG_VIDEO_MT9M032=m +CONFIG_VIDEO_MT9M111=m +CONFIG_VIDEO_MT9P031=m +CONFIG_VIDEO_MT9T001=m +CONFIG_VIDEO_MT9T112=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MT9V032=m +CONFIG_VIDEO_MT9V111=m +CONFIG_VIDEO_SR030PC30=m +CONFIG_VIDEO_NOON010PC30=m +CONFIG_VIDEO_M5MOLS=m +CONFIG_VIDEO_MAX9271_LIB=m +# CONFIG_VIDEO_RDACM20 is not set +CONFIG_VIDEO_RDACM21=m +CONFIG_VIDEO_RJ54N1=m +CONFIG_VIDEO_S5K6AA=m +CONFIG_VIDEO_S5K6A3=m +CONFIG_VIDEO_S5K4ECGX=m +CONFIG_VIDEO_S5K5BAF=m +CONFIG_VIDEO_CCS=m +CONFIG_VIDEO_ET8EK8=m +CONFIG_VIDEO_S5C73M3=m +# end of Camera sensor devices + +# +# Lens drivers +# +CONFIG_VIDEO_AD5820=m +CONFIG_VIDEO_AK7375=m +CONFIG_VIDEO_DW9714=m +# CONFIG_VIDEO_DW9768 is not set +CONFIG_VIDEO_DW9807_VCM=m +# end of Lens drivers + +# +# Flash devices +# +CONFIG_VIDEO_ADP1653=m +CONFIG_VIDEO_LM3560=m +CONFIG_VIDEO_LM3646=m +# end of Flash devices + +# +# SPI helper chips +# +CONFIG_VIDEO_GS1662=m +# end of SPI helper chips + +# +# Media SPI Adapters +# +CONFIG_CXD2880_SPI_DRV=m +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=m + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_M88DS3103=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_TDA10071=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_EC100=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_MXL692=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_S921=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_TC90522=m +CONFIG_DVB_MN88443X=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_A8293=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +CONFIG_DVB_DUMMY_FE=m +# end of Media ancillary drivers + +# +# Graphics support +# +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_DRM=m +CONFIG_DRM_MIPI_DBI=m +CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=m +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=y +CONFIG_DRM_TTM=m +CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_KMS_CMA_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_SCHED=m + +# +# I2C encoder or helper chips +# +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +# CONFIG_DRM_I2C_NXP_TDA998X is not set +CONFIG_DRM_I2C_NXP_TDA9950=m +# 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=m +# 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_ROCKCHIP=m +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_LVDS=y +# CONFIG_ROCKCHIP_RGB is not set +# CONFIG_ROCKCHIP_RK3066_HDMI is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_RCAR_DW_HDMI is not set +CONFIG_DRM_RCAR_LVDS=m +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN4I_HDMI=m +CONFIG_DRM_SUN4I_HDMI_CEC=y +CONFIG_DRM_SUN4I_BACKEND=m +CONFIG_DRM_SUN6I_DSI=m +CONFIG_DRM_SUN8I_DW_HDMI=m +CONFIG_DRM_SUN8I_MIXER=m +CONFIG_DRM_SUN8I_TCON_TOP=m +# CONFIG_DRM_QXL is not set +CONFIG_DRM_BOCHS=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +CONFIG_DRM_PANEL_ABT_Y030XX067A=m +CONFIG_DRM_PANEL_ARM_VERSATILE=m +# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set +CONFIG_DRM_PANEL_BOE_HIMAX8279D=m +CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m +CONFIG_DRM_PANEL_DSI_CM=m +CONFIG_DRM_PANEL_LVDS=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PANEL_ELIDA_KD35T133=m +CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m +CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m +CONFIG_DRM_PANEL_ILITEK_IL9322=m +CONFIG_DRM_PANEL_ILITEK_ILI9881C=m +CONFIG_DRM_PANEL_INNOLUX_P079ZCA=m +CONFIG_DRM_PANEL_JDI_LT070ME05000=m +CONFIG_DRM_PANEL_KHADAS_TS050=m +CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m +# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set +CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829=m +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +CONFIG_DRM_PANEL_LG_LB035Q02=m +# CONFIG_DRM_PANEL_LG_LG4573 is not set +CONFIG_DRM_PANEL_NEC_NL8048HL11=m +CONFIG_DRM_PANEL_NOVATEK_NT35510=m +CONFIG_DRM_PANEL_NOVATEK_NT36672A=m +CONFIG_DRM_PANEL_NOVATEK_NT39016=m +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=m +CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m +# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set +CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m +CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM67191=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m +CONFIG_DRM_PANEL_RONBO_RB070D30=m +CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=m +CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m +# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set +CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +CONFIG_DRM_PANEL_SAMSUNG_SOFEF00=m +CONFIG_DRM_PANEL_SEIKO_43WVF1G=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m +CONFIG_DRM_PANEL_SHARP_LS037V7DW01=m +CONFIG_DRM_PANEL_SHARP_LS043T1LE01=m +CONFIG_DRM_PANEL_SITRONIX_ST7701=m +# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +CONFIG_DRM_PANEL_SONY_ACX424AKP=m +CONFIG_DRM_PANEL_SONY_ACX565AKM=m +CONFIG_DRM_PANEL_TDO_TL070WSH30=m +CONFIG_DRM_PANEL_TPO_TD028TTEC1=m +CONFIG_DRM_PANEL_TPO_TD043MTEA1=m +CONFIG_DRM_PANEL_TPO_TPG110=m +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m +# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set +CONFIG_DRM_PANEL_XINPENG_XPP055C272=m +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +CONFIG_DRM_CDNS_DSI=m +CONFIG_DRM_CHIPONE_ICN6211=m +# CONFIG_DRM_CHRONTEL_CH7033 is not set +CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_LONTIUM_LT8912B=m +# CONFIG_DRM_LONTIUM_LT9611 is not set +CONFIG_DRM_LONTIUM_LT9611UXC=m +CONFIG_DRM_LVDS_CODEC=m +# 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=m +# CONFIG_DRM_SIL_SII8620 is not set +# CONFIG_DRM_SII902X is not set +CONFIG_DRM_SII9234=m +# CONFIG_DRM_SIMPLE_BRIDGE is not set +CONFIG_DRM_THINE_THC63LVD1024=m +# CONFIG_DRM_TOSHIBA_TC358762 is not set +CONFIG_DRM_TOSHIBA_TC358764=m +# CONFIG_DRM_TOSHIBA_TC358767 is not set +CONFIG_DRM_TOSHIBA_TC358768=m +# 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=m +CONFIG_DRM_ANALOGIX_ANX6345=m +CONFIG_DRM_ANALOGIX_ANX78XX=m +CONFIG_DRM_ANALOGIX_DP=m +# CONFIG_DRM_ANALOGIX_ANX7625 is not set +CONFIG_DRM_I2C_ADV7511=m +# CONFIG_DRM_I2C_ADV7511_AUDIO is not set +CONFIG_DRM_I2C_ADV7511_CEC=y +# CONFIG_DRM_CDNS_MHDP8546 is not set +CONFIG_DRM_DW_HDMI=m +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +CONFIG_DRM_DW_HDMI_CEC=m +CONFIG_DRM_DW_MIPI_DSI=m +# end of Display Interface Bridges + +CONFIG_DRM_ETNAVIV=m +CONFIG_DRM_ETNAVIV_THERMAL=y +# CONFIG_DRM_HISI_HIBMC is not set +CONFIG_DRM_HISI_KIRIN=m +# CONFIG_DRM_MXSFB is not set +CONFIG_DRM_MESON=m +CONFIG_DRM_MESON_DW_HDMI=m +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +CONFIG_DRM_GM12U320=m +CONFIG_TINYDRM_HX8357D=m +CONFIG_TINYDRM_ILI9225=m +CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m +CONFIG_TINYDRM_MI0283QT=m +CONFIG_TINYDRM_REPAPER=m +CONFIG_TINYDRM_ST7586=m +CONFIG_TINYDRM_ST7735R=m +# CONFIG_DRM_PL111 is not set +CONFIG_DRM_XEN=y +CONFIG_DRM_XEN_FRONTEND=m +CONFIG_DRM_LIMA=m +CONFIG_DRM_PANFROST=m +CONFIG_DRM_TIDSS=m +CONFIG_DRM_GUD=m +CONFIG_DRM_LEGACY=y +# CONFIG_DRM_TDFX is not set +# CONFIG_DRM_R128 is not set +# CONFIG_DRM_MGA is not set +# CONFIG_DRM_VIA is not set +# CONFIG_DRM_SAVAGE is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +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_BACKLIGHT=m +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +CONFIG_FB_ARMCLCD=y +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_UVESA=m +# CONFIG_FB_EFI is not set +# 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_XEN_FBDEV_FRONTEND=y +# 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 +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +CONFIG_LCD_CLASS_DEVICE=m +# CONFIG_LCD_L4F00242T03 is not set +# CONFIG_LCD_LMS283GF05 is not set +# CONFIG_LCD_LTV350QV is not set +# CONFIG_LCD_ILI922X is not set +# CONFIG_LCD_ILI9320 is not set +# CONFIG_LCD_TDO24M is not set +# CONFIG_LCD_VGG2432A4 is not set +# CONFIG_LCD_PLATFORM is not set +# CONFIG_LCD_AMS369FG06 is not set +# CONFIG_LCD_LMS501KF03 is not set +# CONFIG_LCD_HX8357 is not set +CONFIG_LCD_OTM3225A=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_KTD253 is not set +CONFIG_BACKLIGHT_LM3533=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_QCOM_WLED=m +CONFIG_BACKLIGHT_ADP5520=m +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +CONFIG_BACKLIGHT_AAT2870=m +# CONFIG_BACKLIGHT_LM3630A is not set +# CONFIG_BACKLIGHT_LM3639 is not set +CONFIG_BACKLIGHT_LP855X=y +CONFIG_BACKLIGHT_AS3711=m +CONFIG_BACKLIGHT_GPIO=m +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +CONFIG_BACKLIGHT_RAVE_SP=m +CONFIG_BACKLIGHT_LED=m +# end of Backlight & LCD device support + +CONFIG_VIDEOMODE_HELPERS=y +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_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +CONFIG_BOOTSPLASH=y +# end of Console display driver support + +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y +# end of Graphics support + +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_SEQ_DEVICE=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_VMASTER=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_MIDI_EVENT=m +CONFIG_SND_SEQ_MIDI=m +CONFIG_SND_SEQ_MIDI_EMUL=m +CONFIG_SND_SEQ_VIRMIDI=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +# CONFIG_SND_AC97_POWER_SAVE is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +CONFIG_SND_ALS300=m +CONFIG_SND_ALI5451=m +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INDIGODJX is not set +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_EMU10K1X=m +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +# CONFIG_SND_ES1968_INPUT is not set +# CONFIG_SND_ES1968_RADIO is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +CONFIG_SND_ICE1712=m +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +CONFIG_SND_MAESTRO3=m +# CONFIG_SND_MAESTRO3_INPUT is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SE6X is not set +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +# +# HD-Audio +# +# CONFIG_SND_HDA_INTEL is not set +# end of HD-Audio + +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_BCD2000=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_ADI=m +CONFIG_SND_SOC_ADI_AXI_I2S=m +CONFIG_SND_SOC_ADI_AXI_SPDIF=m +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_ATMEL_SOC is not set +CONFIG_SND_BCM63XX_I2S_WHISTLER=m +CONFIG_SND_DESIGNWARE_I2S=m +# CONFIG_SND_DESIGNWARE_PCM is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +CONFIG_SND_SOC_FSL_AUDMIX=m +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +CONFIG_SND_SOC_FSL_MICFIL=m +CONFIG_SND_SOC_FSL_XCVR=m +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_SOC_IMG is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set + +# +# ASoC support for Amlogic platforms +# +CONFIG_SND_MESON_AIU=m +CONFIG_SND_MESON_AXG_FIFO=m +CONFIG_SND_MESON_AXG_FRDDR=m +CONFIG_SND_MESON_AXG_TODDR=m +CONFIG_SND_MESON_AXG_TDM_FORMATTER=m +CONFIG_SND_MESON_AXG_TDM_INTERFACE=m +CONFIG_SND_MESON_AXG_TDMIN=m +CONFIG_SND_MESON_AXG_TDMOUT=m +CONFIG_SND_MESON_AXG_SOUND_CARD=m +CONFIG_SND_MESON_AXG_SPDIFOUT=m +CONFIG_SND_MESON_AXG_SPDIFIN=m +CONFIG_SND_MESON_AXG_PDM=m +CONFIG_SND_MESON_CARD_UTILS=m +CONFIG_SND_MESON_CODEC_GLUE=m +CONFIG_SND_MESON_GX_SOUND_CARD=m +CONFIG_SND_MESON_G12A_TOACODEC=m +CONFIG_SND_MESON_G12A_TOHDMITX=m +CONFIG_SND_SOC_MESON_T9015=m +# end of ASoC support for Amlogic platforms + +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_I2S=m +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m +CONFIG_SND_SOC_ROCKCHIP_PDM=m +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +CONFIG_SND_SOC_ROCKCHIP_MAX98090=m +CONFIG_SND_SOC_ROCKCHIP_RT5645=m +CONFIG_SND_SOC_ROCKCHIP_RT5651=m +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m +CONFIG_SND_SOC_RK3399_GRU_SOUND=m +# CONFIG_SND_SOC_SOF_TOPLEVEL is not set + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +# +# Allwinner SoC Audio support +# +CONFIG_SND_SUN4I_CODEC=m +CONFIG_SND_SUN8I_CODEC=m +CONFIG_SND_SUN8I_CODEC_ANALOG=m +CONFIG_SND_SUN50I_CODEC_ANALOG=m +CONFIG_SND_SUN4I_I2S=m +CONFIG_SND_SUN4I_SPDIF=m +CONFIG_SND_SUN8I_ADDA_PR_REGMAP=m +# end of Allwinner SoC Audio support + +CONFIG_SND_SOC_XILINX_I2S=m +CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER=m +CONFIG_SND_SOC_XILINX_SPDIF=m +# CONFIG_SND_SOC_XTFPGA_I2S is not set +CONFIG_SND_SOC_I2C_AND_SPI=m + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC is not set +CONFIG_SND_SOC_ADAU_UTILS=m +CONFIG_SND_SOC_ADAU1372=m +CONFIG_SND_SOC_ADAU1372_I2C=m +CONFIG_SND_SOC_ADAU1372_SPI=m +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +# CONFIG_SND_SOC_ADAU7002 is not set +CONFIG_SND_SOC_ADAU7118=m +CONFIG_SND_SOC_ADAU7118_HW=m +CONFIG_SND_SOC_ADAU7118_I2C=m +# CONFIG_SND_SOC_AK4104 is not set +CONFIG_SND_SOC_AK4118=m +CONFIG_SND_SOC_AK4458=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4613=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_AK5558=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_BD28623=m +# CONFIG_SND_SOC_BT_SCO is not set +CONFIG_SND_SOC_CROS_EC_CODEC=m +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +CONFIG_SND_SOC_CS35L36=m +# CONFIG_SND_SOC_CS42L42 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4234 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +CONFIG_SND_SOC_CS43130=m +CONFIG_SND_SOC_CS4341=m +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CX2072X is not set +CONFIG_SND_SOC_DA7213=m +CONFIG_SND_SOC_DA7219=m +CONFIG_SND_SOC_DMIC=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_ES7134=m +CONFIG_SND_SOC_ES7241=m +CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_ES8328_I2C=m +CONFIG_SND_SOC_ES8328_SPI=m +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98088 is not set +CONFIG_SND_SOC_MAX98090=m +CONFIG_SND_SOC_MAX98357A=m +# CONFIG_SND_SOC_MAX98504 is not set +CONFIG_SND_SOC_MAX9867=m +# CONFIG_SND_SOC_MAX98927 is not set +# CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98390 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +CONFIG_SND_SOC_PCM1789=m +CONFIG_SND_SOC_PCM1789_I2C=m +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +CONFIG_SND_SOC_PCM186X=m +CONFIG_SND_SOC_PCM186X_I2C=m +CONFIG_SND_SOC_PCM186X_SPI=m +CONFIG_SND_SOC_PCM3060=m +CONFIG_SND_SOC_PCM3060_I2C=m +CONFIG_SND_SOC_PCM3060_SPI=m +CONFIG_SND_SOC_PCM3168A=m +CONFIG_SND_SOC_PCM3168A_I2C=m +CONFIG_SND_SOC_PCM3168A_SPI=m +CONFIG_SND_SOC_PCM5102A=m +CONFIG_SND_SOC_PCM512x=m +CONFIG_SND_SOC_PCM512x_I2C=m +CONFIG_SND_SOC_PCM512x_SPI=m +CONFIG_SND_SOC_RK3308=m +CONFIG_SND_SOC_RK3328=m +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RT5514=m +CONFIG_SND_SOC_RT5514_SPI=m +CONFIG_SND_SOC_RT5616=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5651=m +CONFIG_SND_SOC_RT5659=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m +CONFIG_SND_SOC_SIMPLE_MUX=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SSM2305=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_SSM2602_SPI=m +CONFIG_SND_SOC_SSM2602_I2C=m +CONFIG_SND_SOC_SSM4567=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_STA350=m +CONFIG_SND_SOC_STI_SAS=m +CONFIG_SND_SOC_TAS2552=m +CONFIG_SND_SOC_TAS2562=m +# CONFIG_SND_SOC_TAS2764 is not set +CONFIG_SND_SOC_TAS2770=m +CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=m +CONFIG_SND_SOC_TAS5720=m +CONFIG_SND_SOC_TAS6424=m +CONFIG_SND_SOC_TDA7419=m +CONFIG_SND_SOC_TFA9879=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m +CONFIG_SND_SOC_TLV320AIC31XX=m +CONFIG_SND_SOC_TLV320AIC32X4=m +CONFIG_SND_SOC_TLV320AIC32X4_I2C=m +CONFIG_SND_SOC_TLV320AIC32X4_SPI=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TLV320AIC3X_I2C=m +CONFIG_SND_SOC_TLV320AIC3X_SPI=m +CONFIG_SND_SOC_TLV320ADCX140=m +CONFIG_SND_SOC_TS3A227E=m +CONFIG_SND_SOC_TSCS42XX=m +CONFIG_SND_SOC_TSCS454=m +CONFIG_SND_SOC_UDA1334=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=m +CONFIG_SND_SOC_WM8524=m +CONFIG_SND_SOC_WM8580=m +CONFIG_SND_SOC_WM8711=m +CONFIG_SND_SOC_WM8728=m +CONFIG_SND_SOC_WM8731=m +CONFIG_SND_SOC_WM8737=m +CONFIG_SND_SOC_WM8741=m +CONFIG_SND_SOC_WM8750=m +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8770=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8782=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_WM8804_SPI=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8904=m +CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8974=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8985=m +# CONFIG_SND_SOC_ZL38060 is not set +CONFIG_SND_SOC_ZX_AUD96P22=m +CONFIG_SND_SOC_MAX9759=m +CONFIG_SND_SOC_MT6351=m +CONFIG_SND_SOC_MT6358=m +CONFIG_SND_SOC_MT6660=m +CONFIG_SND_SOC_NAU8315=m +CONFIG_SND_SOC_NAU8540=m +CONFIG_SND_SOC_NAU8810=m +CONFIG_SND_SOC_NAU8822=m +CONFIG_SND_SOC_NAU8824=m +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_LPASS_WSA_MACRO=m +CONFIG_SND_SOC_LPASS_VA_MACRO=m +CONFIG_SND_SOC_LPASS_RX_MACRO=m +CONFIG_SND_SOC_LPASS_TX_MACRO=m +# end of CODEC drivers + +CONFIG_SND_SIMPLE_CARD_UTILS=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_AUDIO_GRAPH_CARD=m +CONFIG_SND_SYNTH_EMUX=m +CONFIG_SND_XEN_FRONTEND=m +CONFIG_SND_VIRTIO=m +CONFIG_AC97_BUS=m + +# +# HID support +# +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_ACCUTOUCH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +# CONFIG_HID_ASUS is not set +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_BIGBEN_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CORSAIR=m +CONFIG_HID_COUGAR=m +CONFIG_HID_MACALLY=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_CMEDIA=m +CONFIG_HID_CP2112=m +CONFIG_HID_CREATIVE_SB0540=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELAN=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=m +CONFIG_HID_FT260=m +CONFIG_HID_GEMBIRD=m +CONFIG_HID_GFRM=m +CONFIG_HID_GLORIOUS=m +CONFIG_HID_HOLTEK=m +CONFIG_HOLTEK_FF=y +CONFIG_HID_GOOGLE_HAMMER=m +# CONFIG_HID_VIVALDI is not set +CONFIG_HID_GT683R=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_VIEWSONIC=m +CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m +CONFIG_HID_ITE=m +CONFIG_HID_JABRA=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MALTRON=m +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTI=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PLAYSTATION=m +# CONFIG_PLAYSTATION_FF is not set +CONFIG_HID_PRIMAX=m +CONFIG_HID_RETRODE=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SEMITEK=m +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEAM=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_RMI=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_UDRAW_PS3=m +CONFIG_HID_U2FZERO=m +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_ALPS=m +CONFIG_HID_MCP2221=m +# end of Special HID drivers + +# +# USB HID support +# +CONFIG_USB_HID=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +# end of USB HID support + +# +# I2C HID support +# +CONFIG_I2C_HID_OF=m +CONFIG_I2C_HID_OF_GOODIX=m +# end of I2C HID support + +CONFIG_I2C_HID_CORE=m +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_LED_TRIG=y +CONFIG_USB_ULPI_BUS=y +CONFIG_USB_CONN_GPIO=m +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 is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +CONFIG_USB_OTG_FSM=m +CONFIG_USB_LEDS_TRIGGER_USBPORT=y +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_MON=m + +# +# 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=y +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=m +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_U132_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# 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=m +# CONFIG_REALTEK_AUTOPM is not set +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=m + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=8 +CONFIG_USBIP_VHCI_NR_HCS=1 +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USB_CDNS_SUPPORT=m +# CONFIG_USB_CDNS3 is not set +# CONFIG_USB_MUSB_HDRC is not set +CONFIG_USB_DWC3=y +# CONFIG_USB_DWC3_ULPI is not set +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_HAPS=y +CONFIG_USB_DWC3_MESON_G12A=m +CONFIG_USB_DWC3_OF_SIMPLE=y +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_HOST is not set + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +# CONFIG_USB_DWC2_PERIPHERAL is not set +CONFIG_USB_DWC2_DUAL_ROLE=y +CONFIG_USB_DWC2_PCI=m +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_PCI=y +CONFIG_USB_CHIPIDEA_MSM=y +CONFIG_USB_CHIPIDEA_IMX=y +CONFIG_USB_CHIPIDEA_GENERIC=y +CONFIG_USB_CHIPIDEA_TEGRA=y +CONFIG_USB_ISP1760=y +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1761_UDC=y +# CONFIG_USB_ISP1760_HOST_ROLE is not set +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_DUAL_ROLE=y + +# +# USB port drivers +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_XR=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_APPLE_MFI_FASTCHARGE=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_HUB_USB251XB=m +CONFIG_USB_HSIC_USB3503=y +# CONFIG_USB_HSIC_USB4604 is not set +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_VIEWPORT=y +# end of USB Physical Layer drivers + +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_U_SERIAL_CONSOLE=y + +# +# USB Peripheral Controller +# +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +CONFIG_USB_SNP_CORE=m +# CONFIG_USB_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +CONFIG_USB_AMD5536UDC=m +# CONFIG_USB_NET2272 is not set +CONFIG_USB_NET2280=m +CONFIG_USB_GOKU=m +CONFIG_USB_EG20T=m +# CONFIG_USB_GADGET_XILINX is not set +CONFIG_USB_MAX3420_UDC=m +# CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_F_ACM=m +CONFIG_USB_F_SS_LB=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_U_ETHER=m +CONFIG_USB_U_AUDIO=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_PHONET=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_FS=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_HID=m +CONFIG_USB_F_PRINTER=m +CONFIG_USB_F_TCM=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +# CONFIG_USB_CONFIGFS_PHONET is not set +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_USB_CONFIGFS_F_TCM=y + +# +# USB Gadget precomposed configurations +# +CONFIG_USB_ZERO=m +# CONFIG_USB_ZERO_HNPTEST is not set +CONFIG_USB_AUDIO=m +# CONFIG_GADGET_UAC1 is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_ETH_EEM=y +CONFIG_USB_G_NCM=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_MULTI_RNDIS=y +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_HID=m +# CONFIG_USB_G_DBGP is not set +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_RAW_GADGET=m +# end of USB Gadget precomposed configurations + +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_TCPCI=m +CONFIG_TYPEC_RT1711H=m +# CONFIG_TYPEC_TCPCI_MAXIM is not set +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_UCSI=m +CONFIG_UCSI_CCG=m +CONFIG_TYPEC_TPS6598X=m +CONFIG_TYPEC_HD3SS3220=m +# CONFIG_TYPEC_STUSB160X is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +CONFIG_TYPEC_MUX_PI3USB30532=m +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +CONFIG_TYPEC_DP_ALTMODE=m +# CONFIG_TYPEC_NVIDIA_ALTMODE is not set +# end of USB Type-C Alternate Mode drivers + +CONFIG_USB_ROLE_SWITCH=y +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +# 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=y +CONFIG_MMC_STM32_SDMMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +CONFIG_MMC_SDHCI_OF_ASPEED=m +# CONFIG_MMC_SDHCI_OF_AT91 is not set +# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set +CONFIG_MMC_SDHCI_CADENCE=y +# CONFIG_MMC_SDHCI_F_SDH30 is not set +CONFIG_MMC_SDHCI_MILBEAUT=m +CONFIG_MMC_MESON_GX=m +CONFIG_MMC_MESON_MX_SDIO=m +CONFIG_MMC_ALCOR=m +# CONFIG_MMC_TIFM_SD is not set +CONFIG_MMC_SPI=y +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +CONFIG_MMC_DW=y +CONFIG_MMC_DW_PLTFM=y +# CONFIG_MMC_DW_BLUEFIELD is not set +CONFIG_MMC_DW_EXYNOS=y +CONFIG_MMC_DW_HI3798CV200=m +CONFIG_MMC_DW_K3=y +# CONFIG_MMC_DW_PCI is not set +CONFIG_MMC_DW_ROCKCHIP=y +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_SUNXI=m +CONFIG_MMC_CQHCI=y +CONFIG_MMC_HSQ=m +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +CONFIG_MMC_SDHCI_XENON=y +# CONFIG_MMC_SDHCI_OMAP is not set +CONFIG_MMC_SDHCI_AM654=m +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_CLASS_MULTICOLOR is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +CONFIG_LEDS_AN30259A=m +# CONFIG_LEDS_AW2013 is not set +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +CONFIG_LEDS_CR0014114=m +CONFIG_LEDS_EL15203000=m +# CONFIG_LEDS_LM3530 is not set +CONFIG_LEDS_LM3532=m +CONFIG_LEDS_LM3533=m +# CONFIG_LEDS_LM3642 is not set +CONFIG_LEDS_LM3692X=m +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP50XX is not set +# CONFIG_LEDS_LP55XX_COMMON is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +CONFIG_LEDS_ADP5520=m +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +CONFIG_LEDS_MAX77650=m +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +# CONFIG_LEDS_IS31FL32XX is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_MLXREG=m +CONFIG_LEDS_USER=y +# CONFIG_LEDS_SPI_BYTE is not set +# CONFIG_LEDS_TI_LMU_COMMON is not set + +# +# Flash and Torch LED drivers +# + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_ACTIVITY=y +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_LEDS_TRIGGER_NETDEV=m +CONFIG_LEDS_TRIGGER_PATTERN=m +CONFIG_LEDS_TRIGGER_AUDIO=m +CONFIG_LEDS_TRIGGER_TTY=m +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +# CONFIG_EDAC_THUNDERX is not set +# CONFIG_EDAC_XGENE is not set +CONFIG_EDAC_DMC520=m +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc1" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc1" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# 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_AC100=m +CONFIG_RTC_DRV_AS3722=m +CONFIG_RTC_DRV_DS1307=y +# CONFIG_RTC_DRV_DS1307_CENTURY is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +CONFIG_RTC_DRV_HYM8563=y +# CONFIG_RTC_DRV_MAX6900 is not set +CONFIG_RTC_DRV_MAX77686=y +CONFIG_RTC_DRV_RK808=y +CONFIG_RTC_DRV_RS5C372=m +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +CONFIG_RTC_DRV_ISL12026=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF85063=m +CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_BD70528=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_RC5T619=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8010=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_RV3028=m +# CONFIG_RTC_DRV_RV3032 is not set +CONFIG_RTC_DRV_RV8803=m +CONFIG_RTC_DRV_S5M=m +CONFIG_RTC_DRV_SD3078=m + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1302=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1343=m +CONFIG_RTC_DRV_DS1347=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6916=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_MCP795=m +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_DS3232_HWMON=y +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RV3029_HWMON=y +CONFIG_RTC_DRV_RX6110=m + +# +# 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 +# CONFIG_RTC_DRV_CROS_EC is not set +CONFIG_RTC_DRV_NTXEC=m + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_MESON_VRTC=m +# CONFIG_RTC_DRV_PL030 is not set +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_SUN6I=y +CONFIG_RTC_DRV_CADENCE=m +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +CONFIG_RTC_DRV_GOLDFISH=m +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +CONFIG_DMA_OF=y +CONFIG_ALTERA_MSGDMA=m +# CONFIG_AMBA_PL08X is not set +CONFIG_BCM_SBA_RAID=m +CONFIG_DMA_SUN6I=m +CONFIG_DW_AXI_DMAC=m +# CONFIG_FSL_EDMA is not set +CONFIG_FSL_QDMA=m +CONFIG_HISI_DMA=m +# CONFIG_INTEL_IDMA64 is not set +CONFIG_MV_XOR_V2=y +CONFIG_PL330_DMA=y +CONFIG_PLX_DMA=m +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_XILINX_ZYNQMP_DPDMA is not set +CONFIG_QCOM_HIDMA_MGMT=y +CONFIG_QCOM_HIDMA=y +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +CONFIG_DW_EDMA=m +CONFIG_DW_EDMA_PCIE=m +CONFIG_SF_PDMA=m + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set +CONFIG_DMA_ENGINE_RAID=y + +# +# 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_DEBUG is not set +CONFIG_DMABUF_SELFTESTS=m +# 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_IOMMU_TYPE1=y +CONFIG_VFIO_VIRQFD=y +CONFIG_VFIO=y +# CONFIG_VFIO_NOIOMMU is not set +CONFIG_VFIO_PCI=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_INTX=y +# CONFIG_VFIO_PLATFORM is not set +# CONFIG_VFIO_MDEV is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTIO_VDPA=m +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_DMA_SHARED_BUFFER=m +CONFIG_VDPA=m +CONFIG_VDPA_SIM=m +CONFIG_VDPA_SIM_NET=m +CONFIG_VDPA_SIM_BLOCK=m +CONFIG_IFCVF=m +CONFIG_VP_VDPA=m +CONFIG_VHOST_IOTLB=m +CONFIG_VHOST_RING=m +CONFIG_VHOST=m +CONFIG_VHOST_MENU=y +CONFIG_VHOST_NET=m +CONFIG_VHOST_SCSI=m +# CONFIG_VHOST_VSOCK is not set +CONFIG_VHOST_VDPA=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# +# Xen driver support +# +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=y +CONFIG_XEN_GRANT_DEV_ALLOC=y +# CONFIG_XEN_GRANT_DMA_ALLOC is not set +CONFIG_SWIOTLB_XEN=y +# CONFIG_XEN_PVCALLS_FRONTEND is not set +# CONFIG_XEN_PVCALLS_BACKEND is not set +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_PRIVCMD=y +CONFIG_XEN_EFI=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_FRONT_PGDIR_SHBUF=m +# end of Xen driver support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +CONFIG_RTL8192U=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +CONFIG_RTL8192E=m +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +# CONFIG_R8188EU is not set +CONFIG_RTS5208=m +CONFIG_VT6655=m +CONFIG_VT6656=m + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7816 is not set +# CONFIG_AD7280 is not set +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set +# end of Analog digital bi-direction converters + +# +# Capacitance to digital converters +# +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters + +# +# Direct Digital Synthesis +# +CONFIG_AD9832=m +CONFIG_AD9834=m +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set +# end of Network Analyzer, Impedance Converters + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set +# end of Active energy metering IC + +# +# Resolver to digital converters +# +# CONFIG_AD2S1210 is not set +# end of Resolver to digital converters +# end of IIO staging drivers + +CONFIG_FB_SM750=m +CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_HANTRO=m +CONFIG_VIDEO_HANTRO_ROCKCHIP=y +CONFIG_VIDEO_MESON_VDEC=m +CONFIG_VIDEO_ROCKCHIP_VDEC=m +CONFIG_VIDEO_SUNXI=y +CONFIG_VIDEO_SUNXI_CEDRUS=m +# CONFIG_VIDEO_ZORAN is not set + +# +# Android +# +# end of Android + +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_UNISYSSPAR is not set +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m +CONFIG_FB_TFT_ILI9163=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SEPS525=m +CONFIG_FB_TFT_SH1106=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1305=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_ST7789V=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FUSB_30X=m +# CONFIG_MOST_COMPONENTS is not set +# CONFIG_KS7010 is not set +# CONFIG_PI433 is not set +# CONFIG_XIL_AXIS_FIFO is not set +CONFIG_FIELDBUS_DEV=m +CONFIG_HMS_ANYBUSS_BUS=m +# CONFIG_ARCX_ANYBUS_CONTROLLER is not set +# CONFIG_HMS_PROFINET is not set +# CONFIG_KPC2000 is not set +# CONFIG_QLGE is not set +CONFIG_WFX=m +# CONFIG_SPMI_HISI3670 is not set +# CONFIG_MFD_HI6421_SPMI is not set +# CONFIG_GOLDFISH is not set +CONFIG_CHROME_PLATFORMS=y +CONFIG_CROS_EC=y +# CONFIG_CROS_EC_I2C is not set +# CONFIG_CROS_EC_SPI is not set +CONFIG_CROS_EC_PROTO=y +CONFIG_CROS_EC_CHARDEV=y +CONFIG_CROS_EC_LIGHTBAR=y +CONFIG_CROS_EC_VBC=y +CONFIG_CROS_EC_DEBUGFS=y +CONFIG_CROS_EC_SENSORHUB=y +CONFIG_CROS_EC_SYSFS=y +CONFIG_CROS_EC_TYPEC=m +CONFIG_CROS_USBPD_NOTIFY=y +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_HAVE_CLK=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_MAX77686 is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCPI=y +# 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=m +# 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=y +CONFIG_COMMON_CLK_S2MPS11=y +CONFIG_COMMON_CLK_AXI_CLKGEN=m +CONFIG_COMMON_CLK_XGENE=y +CONFIG_COMMON_CLK_PWM=y +# CONFIG_COMMON_CLK_VC5 is not set +CONFIG_COMMON_CLK_BD718XX=m +# CONFIG_COMMON_CLK_FIXED_MMIO is not set + +# +# Clock support for Amlogic platforms +# +CONFIG_COMMON_CLK_MESON_REGMAP=y +CONFIG_COMMON_CLK_MESON_DUALDIV=y +CONFIG_COMMON_CLK_MESON_MPLL=y +CONFIG_COMMON_CLK_MESON_PHASE=m +CONFIG_COMMON_CLK_MESON_PLL=y +CONFIG_COMMON_CLK_MESON_SCLK_DIV=m +CONFIG_COMMON_CLK_MESON_VID_PLL_DIV=y +CONFIG_COMMON_CLK_MESON_AO_CLKC=y +CONFIG_COMMON_CLK_MESON_EE_CLKC=y +CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y +CONFIG_COMMON_CLK_GXBB=y +CONFIG_COMMON_CLK_AXG=y +CONFIG_COMMON_CLK_AXG_AUDIO=m +CONFIG_COMMON_CLK_G12A=y +# end of Clock support for Amlogic platforms + +CONFIG_COMMON_CLK_ROCKCHIP=y +CONFIG_CLK_PX30=y +CONFIG_CLK_RK3308=y +CONFIG_CLK_RK3328=y +CONFIG_CLK_RK3368=y +CONFIG_CLK_RK3399=y +CONFIG_CLK_RK3568=m +CONFIG_CLK_SUNXI=y +CONFIG_CLK_SUNXI_CLOCKS=y +CONFIG_CLK_SUNXI_PRCM_SUN6I=y +CONFIG_CLK_SUNXI_PRCM_SUN8I=y +CONFIG_CLK_SUNXI_PRCM_SUN9I=y +CONFIG_SUNXI_CCU=y +CONFIG_SUN50I_A64_CCU=y +CONFIG_SUN50I_A100_CCU=y +CONFIG_SUN50I_A100_R_CCU=y +CONFIG_SUN50I_H6_CCU=y +CONFIG_SUN50I_H616_CCU=y +CONFIG_SUN50I_H6_R_CCU=y +CONFIG_SUN8I_A83T_CCU=y +CONFIG_SUN8I_H3_CCU=y +CONFIG_SUN8I_DE2_CCU=y +CONFIG_SUN8I_R_CCU=y +# CONFIG_XILINX_VCU is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ROCKCHIP_TIMER=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_SUN50I_ERRATUM_UNKNOWN1=y +# CONFIG_MICROCHIP_PIT64B is not set +# end of Clock Source drivers + +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +CONFIG_ARM_MHU_V2=m +CONFIG_PLATFORM_MHU=y +# CONFIG_PL320_MBOX is not set +CONFIG_ROCKCHIP_MBOX=y +# CONFIG_ALTERA_MBOX is not set +# CONFIG_MAILBOX_TEST is not set +CONFIG_SUN6I_MSGBOX=y +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IO_PGTABLE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +CONFIG_IOMMU_DMA=y +CONFIG_ROCKCHIP_IOMMU=y +# CONFIG_SUN50I_IOMMU is not set +CONFIG_ARM_SMMU=y +# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set +CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y +CONFIG_ARM_SMMU_V3=y +# CONFIG_ARM_SMMU_V3_SVA is not set +# CONFIG_VIRTIO_IOMMU is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +CONFIG_MESON_CANVAS=m +CONFIG_MESON_CLK_MEASURE=y +CONFIG_MESON_GX_SOCINFO=y +CONFIG_MESON_GX_PM_DOMAINS=y +CONFIG_MESON_EE_PM_DOMAINS=y +CONFIG_MESON_SECURE_PM_DOMAINS=y +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +CONFIG_SOC_BRCMSTB=y +# 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 + +# +# Enable LiteX SoC Builder specific drivers +# +CONFIG_LITEX=y +CONFIG_LITEX_SOC_CONTROLLER=m +CONFIG_LITEX_SUBREG_SIZE=4 +# end of Enable LiteX SoC Builder specific drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +CONFIG_ROCKCHIP_GRF=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +# CONFIG_ROCKCHIP_SUSPEND_MODE is not set +CONFIG_SUNXI_MBUS=y +CONFIG_SUNXI_SRAM=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers + +CONFIG_VENDOR_FRIENDLYELEC=y +# end of SOC (System On Chip) specific Drivers + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=m +CONFIG_DEVFREQ_GOV_POWERSAVE=m +CONFIG_DEVFREQ_GOV_USERSPACE=m +CONFIG_DEVFREQ_GOV_PASSIVE=m + +# +# DEVFREQ Drivers +# +CONFIG_ARM_RK3328_DMC_DEVFREQ=y +CONFIG_ARM_RK3399_DMC_DEVFREQ=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_FSA9480 is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +CONFIG_EXTCON_PTN5150=m +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +CONFIG_EXTCON_USB_GPIO=y +# CONFIG_EXTCON_USBC_CROS_EC is not set +CONFIG_EXTCON_USBC_TUSB320=m +# CONFIG_MEMORY is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=m +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGERED_BUFFER=y +CONFIG_IIO_CONFIGFS=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_SW_DEVICE=m +CONFIG_IIO_SW_TRIGGER=m +# CONFIG_IIO_TRIGGERED_EVENT is not set + +# +# Accelerometers +# +CONFIG_ADIS16201=m +CONFIG_ADIS16209=m +CONFIG_ADXL345=m +CONFIG_ADXL345_I2C=m +CONFIG_ADXL345_SPI=m +CONFIG_ADXL372=m +CONFIG_ADXL372_SPI=m +CONFIG_ADXL372_I2C=m +CONFIG_BMA180=m +CONFIG_BMA220=m +CONFIG_BMA400=m +CONFIG_BMA400_I2C=m +CONFIG_BMA400_SPI=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_ACCEL_I2C=m +CONFIG_BMC150_ACCEL_SPI=m +CONFIG_BMI088_ACCEL=m +CONFIG_BMI088_ACCEL_SPI=m +CONFIG_DA280=m +CONFIG_DA311=m +CONFIG_DMARD06=m +CONFIG_DMARD09=m +CONFIG_DMARD10=m +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m +CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +CONFIG_KXSD9=m +CONFIG_KXSD9_SPI=m +CONFIG_KXSD9_I2C=m +CONFIG_KXCJK1013=m +CONFIG_MC3230=m +CONFIG_MMA7455=m +CONFIG_MMA7455_I2C=m +CONFIG_MMA7455_SPI=m +CONFIG_MMA7660=m +CONFIG_MMA8452=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m +CONFIG_MXC4005=m +CONFIG_MXC6255=m +CONFIG_SCA3000=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +# end of Accelerometers + +# +# Analog to digital converters +# +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AD7091R5=m +CONFIG_AD7124=m +# CONFIG_AD7192 is not set +CONFIG_AD7266=m +CONFIG_AD7291=m +CONFIG_AD7292=m +CONFIG_AD7298=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7766=m +CONFIG_AD7768_1=m +# CONFIG_AD7780 is not set +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD7949=m +CONFIG_AD799X=m +# CONFIG_ADI_AXI_ADC is not set +CONFIG_AXP20X_ADC=m +CONFIG_AXP288_ADC=m +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +CONFIG_LTC2496=m +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX1241 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP3911 is not set +CONFIG_MESON_SARADC=y +# CONFIG_NAU7802 is not set +# CONFIG_QCOM_SPMI_IADC is not set +# CONFIG_QCOM_SPMI_VADC is not set +# CONFIG_QCOM_SPMI_ADC5 is not set +CONFIG_RN5T618_ADC=m +CONFIG_ROCKCHIP_SARADC=y +# CONFIG_SD_ADC_MODULATOR is not set +CONFIG_SUN4I_GPADC=m +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC0832=m +CONFIG_TI_ADC084S021=m +CONFIG_TI_ADC12138=m +CONFIG_TI_ADC108S102=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_ADC161S626=m +CONFIG_TI_ADS1015=m +CONFIG_TI_ADS7950=m +CONFIG_TI_ADS8344=m +CONFIG_TI_ADS8688=m +CONFIG_TI_ADS124S08=m +CONFIG_TI_ADS131E08=m +# CONFIG_TI_TLC4541 is not set +# CONFIG_VF610_ADC is not set +CONFIG_XILINX_XADC=m +# end of Analog to digital converters + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +CONFIG_HMC425=m +# end of Amplifiers + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# end of Capacitance to digital converters + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set +CONFIG_BME680=m +CONFIG_BME680_I2C=m +CONFIG_BME680_SPI=m +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +CONFIG_PMS7003=m +# CONFIG_SCD30_CORE is not set +CONFIG_SENSIRION_SGP30=m +CONFIG_SPS30=m +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +# CONFIG_IIO_CROS_EC_SENSORS_CORE is not set + +# +# Hid Sensor IIO Common +# +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +# end of Hid Sensor IIO Common + +CONFIG_IIO_MS_SENSORS_I2C=m + +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +CONFIG_IIO_ST_SENSORS_I2C=m +CONFIG_IIO_ST_SENSORS_SPI=m +CONFIG_IIO_ST_SENSORS_CORE=m + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +CONFIG_AD5686=m +CONFIG_AD5686_SPI=m +CONFIG_AD5696_I2C=m +# CONFIG_AD5755 is not set +CONFIG_AD5758=m +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +CONFIG_AD5766=m +CONFIG_AD5770R=m +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_DS4424 is not set +CONFIG_LTC1660=m +# CONFIG_LTC2632 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +CONFIG_TI_DAC5571=m +CONFIG_TI_DAC7311=m +CONFIG_TI_DAC7612=m +# CONFIG_VF610_DAC is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +CONFIG_IIO_SIMPLE_DUMMY=m +# CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set +# CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +# end of IIO dummy driver + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +CONFIG_ADF4371=m +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16260=m +# CONFIG_ADXRS290 is not set +CONFIG_ADXRS450=m +CONFIG_BMG160=m +CONFIG_BMG160_I2C=m +CONFIG_BMG160_SPI=m +CONFIG_FXAS21002C=m +CONFIG_FXAS21002C_I2C=m +CONFIG_FXAS21002C_SPI=m +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_MPU3050=m +CONFIG_MPU3050_I2C=m +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_IIO_ST_GYRO_I2C_3AXIS=m +CONFIG_IIO_ST_GYRO_SPI_3AXIS=m +CONFIG_ITG3200=m +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +CONFIG_AM2315=m +CONFIG_DHT11=m +CONFIG_HDC100X=m +# CONFIG_HDC2010 is not set +CONFIG_HID_SENSOR_HUMIDITY=m +CONFIG_HTS221=m +CONFIG_HTS221_I2C=m +CONFIG_HTS221_SPI=m +CONFIG_HTU21=m +CONFIG_SI7005=m +CONFIG_SI7020=m +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +CONFIG_ADIS16460=m +# CONFIG_ADIS16475 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +CONFIG_FXOS8700=m +CONFIG_FXOS8700_I2C=m +CONFIG_FXOS8700_SPI=m +# CONFIG_KMX61 is not set +# CONFIG_INV_ICM42600_I2C is not set +# CONFIG_INV_ICM42600_SPI is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set +# end of Inertial measurement units + +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y + +# +# Light sensors +# +CONFIG_ADJD_S311=m +CONFIG_ADUX1020=m +CONFIG_AL3010=m +CONFIG_AL3320A=m +CONFIG_APDS9300=m +CONFIG_APDS9960=m +# CONFIG_AS73211 is not set +CONFIG_BH1750=m +CONFIG_BH1780=m +CONFIG_CM32181=m +CONFIG_CM3232=m +CONFIG_CM3323=m +CONFIG_CM3605=m +CONFIG_CM36651=m +CONFIG_GP2AP002=m +CONFIG_GP2AP020A00F=m +CONFIG_IQS621_ALS=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_ISL29125=m +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_PROX=m +CONFIG_JSA1212=m +CONFIG_RPR0521=m +CONFIG_SENSORS_LM3533=m +CONFIG_LTR501=m +CONFIG_LV0104CS=m +CONFIG_MAX44000=m +CONFIG_MAX44009=m +CONFIG_NOA1305=m +CONFIG_OPT3001=m +CONFIG_PA12203001=m +CONFIG_SI1133=m +CONFIG_SI1145=m +CONFIG_STK3310=m +CONFIG_ST_UVIS25=m +CONFIG_ST_UVIS25_I2C=m +CONFIG_ST_UVIS25_SPI=m +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_SENSORS_TSL2563=m +CONFIG_TSL2583=m +CONFIG_TSL2772=m +CONFIG_TSL4531=m +CONFIG_US5182D=m +CONFIG_VCNL4000=m +CONFIG_VCNL4035=m +CONFIG_VEML6030=m +CONFIG_VEML6070=m +CONFIG_VL6180=m +CONFIG_ZOPT2201=m +# end of Light sensors + +# +# Magnetometer sensors +# +CONFIG_AK8974=m +CONFIG_AK8975=m +CONFIG_AK09911=m +CONFIG_BMC150_MAGN=m +CONFIG_BMC150_MAGN_I2C=m +CONFIG_BMC150_MAGN_SPI=m +CONFIG_MAG3110=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_ST_MAGN_I2C_3AXIS=m +CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_RM3100=m +CONFIG_SENSORS_RM3100_I2C=m +CONFIG_SENSORS_RM3100_SPI=m +CONFIG_YAMAHA_YAS530=m +# end of Magnetometer sensors + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set +# end of Multiplexers + +# +# Inclinometer sensors +# +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +# end of Inclinometer sensors + +# +# Triggers - standalone +# +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_TIGHTLOOP_TRIGGER=m +CONFIG_IIO_SYSFS_TRIGGER=m +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +CONFIG_IQS624_POS=m +CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE=m +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +CONFIG_AD5272=m +# CONFIG_DS1803 is not set +CONFIG_MAX5432=m +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +CONFIG_MCP4018=m +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +CONFIG_MCP41010=m +# CONFIG_TPL0102 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +CONFIG_BMP280=m +CONFIG_BMP280_I2C=m +CONFIG_BMP280_SPI=m +CONFIG_DLHL60D=m +CONFIG_DPS310=m +CONFIG_HID_SENSOR_PRESS=m +# CONFIG_HP03 is not set +CONFIG_ICP10100=m +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +CONFIG_CROS_EC_MKBP_PROXIMITY=m +CONFIG_ISL29501=m +# CONFIG_LIDAR_LITE_V2 is not set +CONFIG_MB1232=m +CONFIG_PING=m +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +CONFIG_VL53L0X_I2C=m +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +CONFIG_IQS620AT_TEMP=m +CONFIG_LTC2983=m +CONFIG_MAXIM_THERMOCOUPLE=m +CONFIG_HID_SENSOR_TEMP=m +CONFIG_MLX90614=m +CONFIG_MLX90632=m +CONFIG_TMP006=m +CONFIG_TMP007=m +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +CONFIG_MAX31856=m +# end of Temperature sensors + +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +CONFIG_PWM=y +CONFIG_PWM_SYSFS=y +# CONFIG_PWM_DEBUG is not set +CONFIG_PWM_ATMEL_TCB=m +CONFIG_PWM_CROS_EC=m +CONFIG_PWM_DWC=m +# CONFIG_PWM_FSL_FTM is not set +# CONFIG_PWM_IQS620A is not set +CONFIG_PWM_MESON=m +CONFIG_PWM_NTXEC=m +# CONFIG_PWM_PCA9685 is not set +CONFIG_PWM_ROCKCHIP=y +CONFIG_PWM_SUN4I=m + +# +# 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 +CONFIG_MESON_IRQ_GPIO=y +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_MESON=y +CONFIG_RESET_MESON_AUDIO_ARB=m +CONFIG_RESET_SIMPLE=y +CONFIG_RESET_SUNXI=y +# CONFIG_RESET_TI_SYSCON is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y +CONFIG_PHY_XGENE=y +CONFIG_PHY_SUN4I_USB=m +CONFIG_PHY_SUN6I_MIPI_DPHY=m +CONFIG_PHY_SUN9I_USB=m +CONFIG_PHY_SUN50I_USB3=m +CONFIG_PHY_MESON8B_USB2=m +CONFIG_PHY_MESON_GXL_USB2=m +CONFIG_PHY_MESON_G12A_USB2=m +CONFIG_PHY_MESON_G12A_USB3_PCIE=m +CONFIG_PHY_MESON_AXG_PCIE=y +CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG=y +CONFIG_PHY_MESON_AXG_MIPI_DPHY=m +# CONFIG_BCM_KONA_USB2_PHY is not set +CONFIG_PHY_CADENCE_TORRENT=m +CONFIG_PHY_CADENCE_DPHY=m +CONFIG_PHY_CADENCE_SIERRA=m +# CONFIG_PHY_CADENCE_SALVO is not set +CONFIG_PHY_FSL_IMX8MQ_USB=m +CONFIG_PHY_MIXEL_MIPI_DPHY=m +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +CONFIG_PHY_MAPPHONE_MDM6600=m +# CONFIG_PHY_OCELOT_SERDES is not set +# CONFIG_PHY_QCOM_USB_HS is not set +# CONFIG_PHY_QCOM_USB_HSIC is not set +CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=m +CONFIG_PHY_ROCKCHIP_EMMC=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m +CONFIG_PHY_ROCKCHIP_INNO_USB3=y +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +CONFIG_PHY_SAMSUNG_USB2=y +# CONFIG_PHY_TUSB1210 is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +CONFIG_ARM_CCI_PMU=m +# CONFIG_ARM_CCI400_PMU is not set +# CONFIG_ARM_CCI5xx_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# end of Performance monitor support + +CONFIG_RAS=y +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# CONFIG_LIBNVDIMM is not set +CONFIG_DAX=y +CONFIG_DEV_DAX=m +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +CONFIG_NVMEM_SPMI_SDAM=m +CONFIG_ROCKCHIP_EFUSE=y +CONFIG_ROCKCHIP_OTP=m +CONFIG_NVMEM_SUNXI_SID=m +CONFIG_MESON_EFUSE=m +CONFIG_MESON_MX_EFUSE=m +CONFIG_RAVE_SP_EEPROM=m +CONFIG_NVMEM_RMEM=m + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +CONFIG_MULTIPLEXER=m + +# +# Multiplexer drivers +# +CONFIG_MUX_ADG792A=m +CONFIG_MUX_ADGS1408=m +CONFIG_MUX_GPIO=m +CONFIG_MUX_MMIO=m +# end of Multiplexer drivers + +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +CONFIG_COUNTER=m +CONFIG_INTERRUPT_CNT=m +CONFIG_FTM_QUADDEC=m +# CONFIG_MICROCHIP_TCB_CAPTURE is not set +CONFIG_MOST=m +# CONFIG_MOST_USB_HDM is not set +# CONFIG_MOST_CDEV is not set +CONFIG_MOST_SND=m +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_VALIDATE_FS_PARSER=y +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_KUNIT_TESTS=m +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_PROC_INFO=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=y +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_CHECK_FS=y +# CONFIG_F2FS_FAULT_INJECTION is not set +# CONFIG_F2FS_FS_COMPRESSION is not set +CONFIG_ZONEFS_FS=m +CONFIG_FS_DAX=y +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +CONFIG_EXPORTFS_BLOCK_OPS=y +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +CONFIG_FS_VERITY=y +# CONFIG_FS_VERITY_DEBUG is not set +CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +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=m +CONFIG_OVERLAY_FS=y +# 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=y +# CONFIG_OVERLAY_FS_METACOPY is not set + +# +# Caches +# +CONFIG_NETFS_SUPPORT=m +# CONFIG_NETFS_STATS is not set +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +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=m +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_EXFAT_FS=m +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=y +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_CHILDREN=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_TMPFS_INODE64 is not set +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +CONFIG_EFIVAR_FS=m +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ORANGEFS_FS=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=y +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +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 is not set +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 is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +CONFIG_CRAMFS=m +CONFIG_CRAMFS_BLOCKDEV=y +CONFIG_CRAMFS_MTD=y +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y +CONFIG_SQUASHFS_EMBEDDED=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_ROMFS_FS=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_MTD is not set +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +CONFIG_PSTORE_LZ4HC_COMPRESS=m +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +# CONFIG_PSTORE_LZ4HC_COMPRESS_DEFAULT is not set +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +CONFIG_PSTORE_RAM=m +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +CONFIG_UFS_FS_WRITE=y +# CONFIG_UFS_DEBUG is not set +CONFIG_EROFS_FS=m +# CONFIG_EROFS_FS_DEBUG is not set +CONFIG_EROFS_FS_XATTR=y +CONFIG_EROFS_FS_POSIX_ACL=y +CONFIG_EROFS_FS_SECURITY=y +# CONFIG_EROFS_FS_ZIP is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +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=y +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_NFS_FSCACHE=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +CONFIG_NFS_V4_2_READ_PLUS=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_PNFS=y +CONFIG_NFSD_BLOCKLAYOUT=y +CONFIG_NFSD_SCSILAYOUT=y +CONFIG_NFSD_FLEXFILELAYOUT=y +# CONFIG_NFSD_V4_2_INTER_SSC is not set +CONFIG_NFSD_V4_SECURITY_LABEL=y +CONFIG_GRACE_PERIOD=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_NFS_V4_2_SSC_HELPER=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +# CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES is not set +CONFIG_SUNRPC_DEBUG=y +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CEPH_FS_SECURITY_LABEL=y +CONFIG_CIFS=m +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set +CONFIG_CIFS_DFS_UPCALL=y +# CONFIG_CIFS_SWN_UPCALL is not set +CONFIG_CIFS_FSCACHE=y +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +# CONFIG_AFS_DEBUG_CURSOR is not set +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_UNICODE=y +# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +CONFIG_KEYS_REQUEST_CACHE=y +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_ENCRYPTED_KEYS=y +CONFIG_KEY_DH_OPERATIONS=y +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_LSM_MMAP_MIN_ADDR=0 +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=y +# 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=y +CONFIG_SECURITY_SMACK_APPEND_SIGNALS=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +# CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +# CONFIG_SECURITY_LOADPIN is not set +CONFIG_SECURITY_YAMA=y +CONFIG_SECURITY_SAFESETID=y +CONFIG_SECURITY_LOCKDOWN_LSM=y +CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y +CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y +# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set +# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set +# CONFIG_SECURITY_LANDLOCK is not set +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_TRUSTED_KEYRING=y +CONFIG_INTEGRITY_PLATFORM_KEYRING=y +CONFIG_LOAD_UEFI_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +# CONFIG_EVM is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_LSM="lockdown,yama,integrity,apparmor" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +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_GCC_PLUGIN_STACKLEAK is not set +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=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=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_AUTHENC=y +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_SIMD=y +CONFIG_CRYPTO_ENGINE=y + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_ECDSA=m +CONFIG_CRYPTO_ECRDSA=m +# CONFIG_CRYPTO_SM2 is not set +CONFIG_CRYPTO_CURVE25519=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_AEGIS128_SIMD=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=y + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CFB=m +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_OFB=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_KEYWRAP=m +CONFIG_CRYPTO_NHPOLY1305=m +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_ESSIV=m + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_VMAC=y + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_XXHASH=y +CONFIG_CRYPTO_BLAKE2B=y +CONFIG_CRYPTO_BLAKE2S=m +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_GHASH=y +CONFIG_CRYPTO_POLY1305=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=y +CONFIG_CRYPTO_RMD160=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +CONFIG_CRYPTO_SM3=m +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_WP512=y + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_TI=y +CONFIG_CRYPTO_ANUBIS=y +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=y +CONFIG_CRYPTO_BLOWFISH_COMMON=y +CONFIG_CRYPTO_CAMELLIA=y +CONFIG_CRYPTO_CAST_COMMON=y +CONFIG_CRYPTO_CAST5=y +CONFIG_CRYPTO_CAST6=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=y +CONFIG_CRYPTO_KHAZAD=y +CONFIG_CRYPTO_CHACHA20=y +CONFIG_CRYPTO_SEED=y +CONFIG_CRYPTO_SERPENT=y +CONFIG_CRYPTO_SM4=m +CONFIG_CRYPTO_TEA=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ZSTD=y + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set +CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +CONFIG_CRYPTO_STATS=y +CONFIG_CRYPTO_HASH_INFO=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=m +CONFIG_CRYPTO_LIB_BLAKE2S=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y +CONFIG_CRYPTO_LIB_CHACHA=m +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m +CONFIG_CRYPTO_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y +CONFIG_CRYPTO_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_ALLWINNER=y +CONFIG_CRYPTO_DEV_SUN4I_SS=m +# CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG is not set +# CONFIG_CRYPTO_DEV_SUN4I_SS_DEBUG is not set +CONFIG_CRYPTO_DEV_SUN8I_CE=m +# CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG is not set +# CONFIG_CRYPTO_DEV_SUN8I_CE_HASH is not set +# CONFIG_CRYPTO_DEV_SUN8I_CE_PRNG is not set +# CONFIG_CRYPTO_DEV_SUN8I_CE_TRNG is not set +CONFIG_CRYPTO_DEV_SUN8I_SS=m +# CONFIG_CRYPTO_DEV_SUN8I_SS_DEBUG is not set +# CONFIG_CRYPTO_DEV_SUN8I_SS_PRNG is not set +# CONFIG_CRYPTO_DEV_SUN8I_SS_HASH is not set +CONFIG_CRYPTO_DEV_ATMEL_I2C=m +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +# CONFIG_CRYPTO_DEV_CCP is not set +CONFIG_CRYPTO_DEV_NITROX=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_CAVIUM_ZIP=m +CONFIG_CRYPTO_DEV_ROCKCHIP=m +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_DEV_CCREE=m +CONFIG_CRYPTO_DEV_HISI_SEC=m +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=y +CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG=y +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=y +CONFIG_PKCS7_TEST_KEY=m +CONFIG_SIGNED_PE_FILE_VERIFICATION=y + +# +# Certificates for signature checking +# +CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +CONFIG_SYSTEM_EXTRA_CERTIFICATE=y +CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 +CONFIG_SECONDARY_TRUSTED_KEYRING=y +CONFIG_SYSTEM_BLACKLIST_KEYRING=y +CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" +# CONFIG_SYSTEM_REVOCATION_LIST 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_LINEAR_RANGES=y +CONFIG_PACKING=y +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_GENERIC_FIND_FIRST_BIT=y +CONFIG_CORDIC=m +# 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 +CONFIG_CRC_CCITT=y +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=y +CONFIG_CRC4=m +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_CRC8=m +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_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_TEST=m +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC16=y +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_INTERVAL_TREE=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=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_TEARDOWN_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_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_REMAP=y +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DMA_CMA=y +CONFIG_DMA_PERNUMA_CMA=y + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=128 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +CONFIG_GLOB_SELFTEST=m +CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m +CONFIG_CLZ_TAB=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_SIGNATURE=y +CONFIG_DIMLIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +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=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +# CONFIG_FONT_PEARL_8x8 is not set +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set +CONFIG_FONT_6x10=y +# CONFIG_FONT_10x18 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +CONFIG_FONT_TER16x32=y +# CONFIG_FONT_6x8 is not set +CONFIG_SG_SPLIT=y +CONFIG_SG_POOL=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set +# end of Library routines + +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y + +# +# 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=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL 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_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU 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=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +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 +# end of Generic Kernel Debugging Instruments + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# 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 is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +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=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=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 is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +CONFIG_TEST_LOCKUP=m +# 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 +CONFIG_DEBUG_PREEMPT=y + +# +# 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 is not set +# 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_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# 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_TORTURE_TEST=m +# CONFIG_RCU_SCALE_TEST is not set +CONFIG_RCU_TORTURE_TEST=m +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_TRACE=y +# CONFIG_RCU_EQS_DEBUG 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_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=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_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_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_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_SAMPLES is not set +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR 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=m +# CONFIG_KUNIT_DEBUGFS is not set +# CONFIG_KUNIT_TEST is not set +# CONFIG_KUNIT_EXAMPLE_TEST is not set +# CONFIG_KUNIT_ALL_TESTS is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# 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=y +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_SORT is not set +CONFIG_TEST_DIV64=m +CONFIG_BACKTRACE_SELF_TEST=m +CONFIG_RBTREE_TEST=m +CONFIG_REED_SOLOMON_TEST=m +CONFIG_INTERVAL_TREE_TEST=m +CONFIG_PERCPU_TEST=m +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_ASYNC_RAID6_TEST=m +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +CONFIG_TEST_STRSCPY=m +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +CONFIG_TEST_XARRAY=m +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +CONFIG_TEST_VMALLOC=m +# CONFIG_TEST_USER_COPY is not set +CONFIG_TEST_BPF=m +CONFIG_TEST_BLACKHOLE_DEV=m +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_BITFIELD_KUNIT is not set +CONFIG_RESOURCE_KUNIT_TEST=m +# CONFIG_SYSCTL_KUNIT_TEST is not set +# CONFIG_LIST_KUNIT_TEST is not set +# CONFIG_LINEAR_RANGES_TEST is not set +CONFIG_CMDLINE_KUNIT_TEST=m +# CONFIG_BITS_TEST is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +CONFIG_TEST_MEMCAT_P=m +CONFIG_TEST_STACKINIT=m +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_FREE_PAGES is not set +CONFIG_ARCH_USE_MEMTEST=y +CONFIG_MEMTEST=y +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/external/config/kernel/linux-5.13-sunxi64.config b/external/config/kernel/linux-5.13-sunxi64.config index be89bc9..b5cd713 100644 --- a/external/config/kernel/linux-5.13-sunxi64.config +++ b/external/config/kernel/linux-5.13-sunxi64.config @@ -137,9 +137,9 @@ CONFIG_BUILD_BIN2C=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_IKHEADERS=m -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_LOG_BUF_SHIFT=22 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=21 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=20 CONFIG_GENERIC_SCHED_CLOCK=y # @@ -5115,7 +5115,7 @@ CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_ES7134 is not set CONFIG_SND_SOC_ES7241=m -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=y # CONFIG_SND_SOC_ES8328_I2C is not set # CONFIG_SND_SOC_ES8328_SPI is not set # CONFIG_SND_SOC_GTM601 is not set diff --git a/external/config/kernel/linux-pi800-legacy.config b/external/config/kernel/linux-pi800-legacy.config new file mode 100644 index 0000000..ad72e09 --- /dev/null +++ b/external/config/kernel/linux-pi800-legacy.config @@ -0,0 +1,553 @@ +CONFIG_DEFAULT_HOSTNAME="localhost" +CONFIG_SYSVIPC=y +CONFIG_FHANDLE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_NAMESPACES=y +CONFIG_USER_NS=y +CONFIG_DEFAULT_USE_ENERGY_AWARE=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_PROFILING=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_ARCH_ROCKCHIP=y +CONFIG_PCI=y +CONFIG_PCI_MSI=y +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEASPM_POWERSAVE=y +# CONFIG_ARM64_ERRATUM_826319 is not set +# CONFIG_ARM64_ERRATUM_827319 is not set +# CONFIG_ARM64_ERRATUM_824069 is not set +# CONFIG_ARM64_ERRATUM_819472 is not set +# CONFIG_ARM64_ERRATUM_832075 is not set +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +CONFIG_SCHED_MC=y +CONFIG_NR_CPUS=8 +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_HZ_1000=y +# CONFIG_COMPACTION is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_ZSMALLOC=y +CONFIG_SECCOMP=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y +# CONFIG_EFI is not set +CONFIG_COMPAT=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_ROCKCHIP_CPUFREQ=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MROUTE=y +CONFIG_SYN_COOKIES=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET6_XFRM_MODE_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_BEET is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_ANDROID_PARANOID_NETWORK is not set +CONFIG_BT=y +CONFIG_BT_RFCOMM=y +CONFIG_BT_HIDP=y +CONFIG_BT_HCIBTUSB=y +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIBFUSB=y +CONFIG_BT_HCIVHCI=y +CONFIG_BT_MRVL=y +CONFIG_BT_MRVL_SDIO=y +CONFIG_NL80211_TESTMODE=y +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_VERBOSE_DEBUG=y +CONFIG_RFKILL=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEBUG_DEVRES=y +CONFIG_CONNECTOR=y +CONFIG_ZRAM=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_NVME=y +CONFIG_ROCKCHIP_SCR=y +CONFIG_SRAM=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_MD=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_CADENCE is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE 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_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_EXAR is not set +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_RDC 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_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=y +# 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_ROCKCHIP_PHY=y +CONFIG_USB_RTL8150=y +CONFIG_USB_RTL8152=y +CONFIG_USB_NET_CDC_MBIM=y +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +CONFIG_LIBERTAS_THINFIRM=y +CONFIG_USB_NET_RNDIS_WLAN=y +CONFIG_WL_ROCKCHIP=y +CONFIG_WIFI_BUILD_MODULE=y +CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y +CONFIG_AP6XXX=m +CONFIG_RTL8188EU=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_INPUT_FF_MEMLESS=y +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_ADC=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_GPIO_POLLED=y +CONFIG_KEYBOARD_ROCKCHIP=y +CONFIG_KEYBOARD_CROS_EC=y +# CONFIG_MOUSE_PS2 is not set +CONFIG_MOUSE_CYAPA=y +CONFIG_MOUSE_ELAN_I2C=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +CONFIG_TOUCHSCREEN_GSLX680_VR=y +CONFIG_TOUCHSCREEN_GSL3673=y +CONFIG_TOUCHSCREEN_GT9XX=y +CONFIG_TOUCHSCREEN_ELAN=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_TOUCHSCREEN_GT1X=y +CONFIG_ROCKCHIP_REMOTECTL=y +CONFIG_ROCKCHIP_REMOTECTL_PWM=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_RK8XX_PWRKEY=y +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_GPIO=y +# CONFIG_SERIO is not set +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_HW_RANDOM=y +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS_I2C_INFINEON=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_RK3X=y +CONFIG_I2C_CROS_EC_TUNNEL=y +CONFIG_SPI=y +CONFIG_SPI_BITBANG=y +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_SPIDEV=y +CONFIG_DEBUG_GPIO=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_RK8XX=y +CONFIG_BATTERY_SBS=y +CONFIG_CHARGER_GPIO=y +CONFIG_CHARGER_BQ24735=y +CONFIG_BATTERY_RK817=y +CONFIG_CHARGER_RK817=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_POWER_AVS=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_THERMAL=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_ROCKCHIP_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_DW_WATCHDOG=y +CONFIG_MFD_CROS_EC=y +CONFIG_MFD_CROS_EC_SPI=y +CONFIG_MFD_RK808=y +CONFIG_MFD_TPS6586X=y +CONFIG_FUSB_30X=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_ACT8865=y +CONFIG_REGULATOR_FAN53555=y +CONFIG_REGULATOR_GPIO=y +CONFIG_REGULATOR_LP8752=y +CONFIG_REGULATOR_MP8865=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK808=y +CONFIG_REGULATOR_RK818=y +CONFIG_REGULATOR_TPS6586X=y +CONFIG_REGULATOR_XZ3216=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_IR_RC5_DECODER is not set +# CONFIG_IR_RC6_DECODER is not set +# CONFIG_IR_JVC_DECODER is not set +# CONFIG_IR_SONY_DECODER is not set +# CONFIG_IR_SANYO_DECODER is not set +# CONFIG_IR_SHARP_DECODER is not set +# CONFIG_IR_MCE_KBD_DECODER is not set +# CONFIG_IR_XMP_DECODER is not set +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +# CONFIG_USB_GSPCA is not set +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=y +CONFIG_VIDEO_ROCKCHIP_ISP1=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_ROCKCHIP_RGA=y +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_TC35874X=y +CONFIG_VIDEO_OV4689=y +CONFIG_VIDEO_OV13850=y +CONFIG_VIDEO_VM149C=y +# CONFIG_DVB_AU8522_V4L is not set +# CONFIG_DVB_TUNER_DIB0070 is not set +# CONFIG_DVB_TUNER_DIB0090 is not set +# CONFIG_VGA_ARB is not set +CONFIG_DRM=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DMA_SYNC=y +CONFIG_DRM_ROCKCHIP=y +CONFIG_ROCKCHIP_DRM_DEBUG=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_DRM_TVE=y +CONFIG_ROCKCHIP_RGB=y +CONFIG_DRM_PANEL_SIMPLE=y +CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +CONFIG_DRM_DW_HDMI_CEC=y +CONFIG_MALI400=y +CONFIG_MALI450=y +# CONFIG_MALI400_PROFILING is not set +CONFIG_MALI_SHARED_INTERRUPTS=y +CONFIG_MALI_DT=y +CONFIG_MALI_DEVFREQ=y +CONFIG_MALI_MIDGARD_FOR_LINUX=y +CONFIG_MALI_MIDGARD=y +CONFIG_MALI_EXPERT=y +CONFIG_MALI_PLATFORM_THIRDPARTY=y +CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" +CONFIG_MALI_DEBUG=y +CONFIG_MALI_PWRSOFT_765=y +CONFIG_MALI_BIFROST_FOR_LINUX=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_ROCKCHIP_RGA2=y +CONFIG_RK_VCODEC=y +CONFIG_ROCKCHIP_MPP_SERVICE=y +CONFIG_ROCKCHIP_MPP_DEVICE=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_PCI is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_USB_AUDIO=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +CONFIG_SND_SOC_ROCKCHIP_MAX98090=y +CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y +CONFIG_SND_SOC_ROCKCHIP_RT5645=y +CONFIG_SND_SOC_ES8316=y +CONFIG_SND_SOC_RK3328=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_RT5616=y +CONFIG_SND_SOC_RT5640=y +CONFIG_SND_SOC_RT5651=y +CONFIG_SND_SOC_SPDIF=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_KENSINGTON=y +CONFIG_HID_MULTITOUCH=y +CONFIG_USB_HIDDEV=y +CONFIG_I2C_HID=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_OTG=y +CONFIG_USB_MON=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_ACM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_UAS=y +CONFIG_USB_DWC3=y +# CONFIG_USB_DWC3_PCI is not set +CONFIG_USB_DWC2=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_CP210X=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_KEYSPAN=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_OTI6858=y +CONFIG_USB_SERIAL_QUALCOMM=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +CONFIG_USB_SERIAL_OPTION=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_UEVENT=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_TEST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_IS31FL32XX=y +CONFIG_SWITCH=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_HYM8563=y +CONFIG_RTC_DRV_RK808=y +CONFIG_DMADEVICES=y +CONFIG_PL330_DMA=y +CONFIG_STAGING=y +CONFIG_SENSORS_ISL29018=y +CONFIG_TSL2583=y +# CONFIG_ANDROID_TIMED_OUTPUT is not set +CONFIG_FIQ_DEBUGGER=y +CONFIG_FIQ_DEBUGGER_NO_SLEEP=y +CONFIG_FIQ_DEBUGGER_CONSOLE=y +CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y +CONFIG_COMMON_CLK_RK808=y +CONFIG_MAILBOX=y +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_PVTM=y +CONFIG_ROCKCHIP_SUSPEND_MODE=y +CONFIG_PM_DEVFREQ=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_MEMORY=y +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGER=y +CONFIG_ROCKCHIP_SARADC=y +CONFIG_SENSORS_TSL2563=y +CONFIG_IIO_SYSFS_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_ROCKCHIP=y +CONFIG_PHY_ROCKCHIP_USB=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_USB3=y +CONFIG_PHY_ROCKCHIP_EMMC=y +CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY=y +CONFIG_PHY_ROCKCHIP_INNO_VIDEO_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_ANDROID=y +CONFIG_NVMEM=y +CONFIG_ROCKCHIP_EFUSE=y +CONFIG_RK_HEADSET=y +CONFIG_ROCKCHIP_SIP=y +# CONFIG_ACPI is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_XFS_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_FUSE_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=936 +CONFIG_FAT_DEFAULT_IOCHARSET="utf8" +CONFIG_NTFS_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_SQUASHFS=y +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_936=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y +CONFIG_PRINTK_TIME=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_LOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_CREDENTIALS=y +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_FUNCTION_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_LKDTM=y +CONFIG_STRICT_DEVMEM=y +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_CRYPTO_ECHAINIV is not set +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS7_MESSAGE_PARSER=y +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRC_CCITT=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC7=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_SPARC is not set diff --git a/external/config/kernel/linux-rk3399-legacy.config b/external/config/kernel/linux-rk3399-legacy.config index 9a3b7fb..91bbfa0 100644 --- a/external/config/kernel/linux-rk3399-legacy.config +++ b/external/config/kernel/linux-rk3399-legacy.config @@ -235,10 +235,10 @@ CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y CONFIG_HAVE_CC_STACKPROTECTOR=y -# CONFIG_CC_STACKPROTECTOR is not set -CONFIG_CC_STACKPROTECTOR_NONE=y +CONFIG_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR_NONE is not set # CONFIG_CC_STACKPROTECTOR_REGULAR is not set -# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_CC_STACKPROTECTOR_STRONG=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -589,71 +589,101 @@ CONFIG_NET_INGRESS=y # # Networking options # -CONFIG_PACKET=y -# CONFIG_PACKET_DIAG is not set +CONFIG_PACKET=m +CONFIG_PACKET_DIAG=m CONFIG_UNIX=y -# CONFIG_UNIX_DIAG is not set +CONFIG_UNIX_DIAG=y CONFIG_XFRM=y CONFIG_XFRM_ALGO=y CONFIG_XFRM_USER=y -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_XFRM_STATISTICS is not set -CONFIG_NET_KEY=y -# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y -# CONFIG_IP_FIB_TRIE_STATS is not set -# CONFIG_IP_MULTIPLE_TABLES is not set -# CONFIG_IP_ROUTE_MULTIPATH is not set -# CONFIG_IP_ROUTE_VERBOSE is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE_DEMUX is not set -# CONFIG_NET_IP_TUNNEL is not set +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y CONFIG_IP_MROUTE=y -# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set -# CONFIG_IP_PIMSM_V1 is not set -# CONFIG_IP_PIMSM_V2 is not set +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y CONFIG_SYN_COOKIES=y -# CONFIG_NET_UDP_TUNNEL is not set -# CONFIG_NET_FOU is not set -# CONFIG_INET_AH is not set -CONFIG_INET_ESP=y -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_XFRM_TUNNEL is not set -# CONFIG_INET_TUNNEL is not set -CONFIG_INET_XFRM_MODE_TRANSPORT=y -# CONFIG_INET_XFRM_MODE_TUNNEL is not set -# CONFIG_INET_XFRM_MODE_BEET is not set -# CONFIG_INET_LRO is not set -# CONFIG_INET_DIAG 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_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +# CONFIG_NET_FOU_IP_TUNNELS is not set +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +# CONFIG_INET_DIAG_DESTROY is not set +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +CONFIG_TCP_MD5SIG=y CONFIG_IPV6=y # 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_INET6_XFRM_TUNNEL is not set -# CONFIG_INET6_TUNNEL is not set -# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET6_XFRM_MODE_TUNNEL is not set -# CONFIG_INET6_XFRM_MODE_BEET is not set -# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set -# CONFIG_IPV6_SIT is not set -# CONFIG_IPV6_TUNNEL is not set -# CONFIG_IPV6_GRE is not set -# CONFIG_IPV6_MULTIPLE_TABLES is not set +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y # CONFIG_IPV6_MROUTE is not set # CONFIG_ANDROID_PARANOID_NETWORK is not set -# CONFIG_NETWORK_SECMARK is not set +CONFIG_NETWORK_SECMARK=y CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NETWORK_PHY_TIMESTAMPING is not set CONFIG_NETFILTER=y @@ -665,118 +695,176 @@ CONFIG_BRIDGE_NETFILTER=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_NF_CONNTRACK=y -# CONFIG_NF_CONNTRACK_MARK is not set +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_COMMON=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +# 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_CT_PROTO_DCCP is not set -# CONFIG_NF_CT_PROTO_SCTP is not set -# CONFIG_NF_CT_PROTO_UDPLITE is not set -# CONFIG_NF_CONNTRACK_AMANDA is not set -CONFIG_NF_CONNTRACK_FTP=y -# 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=y -# CONFIG_NF_CT_NETLINK is not set -# CONFIG_NF_CT_NETLINK_TIMEOUT is not set -CONFIG_NF_NAT=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +CONFIG_NF_NAT=m CONFIG_NF_NAT_NEEDED=y -# CONFIG_NF_NAT_AMANDA is not set -CONFIG_NF_NAT_FTP=y -# CONFIG_NF_NAT_IRC is not set -# CONFIG_NF_NAT_SIP is not set -CONFIG_NF_NAT_TFTP=y -CONFIG_NF_NAT_REDIRECT=y -# CONFIG_NF_TABLES is not set -CONFIG_NETFILTER_XTABLES=y +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=m +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_NETDEV=m +CONFIG_NFT_EXTHDR=m +CONFIG_NFT_META=m +CONFIG_NFT_CT=m +CONFIG_NFT_RBTREE=m +CONFIG_NFT_HASH=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_COMPAT=m +CONFIG_NETFILTER_XTABLES=m # # Xtables combined modules # -# CONFIG_NETFILTER_XT_MARK is not set -# CONFIG_NETFILTER_XT_CONNMARK is not set +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m # # Xtables targets # -# 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_LED is not set -# CONFIG_NETFILTER_XT_TARGET_LOG is not set -# CONFIG_NETFILTER_XT_TARGET_MARK is not set -CONFIG_NETFILTER_XT_NAT=y -# 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=y -# CONFIG_NETFILTER_XT_TARGET_TEE is not set -# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m # # Xtables matches # -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y -# 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=y -# 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_IPVS=y -# 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_OWNER is not set -# CONFIG_NETFILTER_XT_MATCH_POLICY is not set -# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set -# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set -# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set -# CONFIG_NETFILTER_XT_MATCH_QUOTA2 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 -# CONFIG_IP_SET is not set -CONFIG_IP_VS=y -# CONFIG_IP_VS_IPV6 is not set +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_QUOTA2=m +CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=y +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y # CONFIG_IP_VS_DEBUG is not set CONFIG_IP_VS_TAB_BITS=12 @@ -785,26 +873,26 @@ CONFIG_IP_VS_TAB_BITS=12 # CONFIG_IP_VS_PROTO_TCP=y CONFIG_IP_VS_PROTO_UDP=y -# CONFIG_IP_VS_PROTO_AH_ESP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set -# CONFIG_IP_VS_PROTO_SCTP is not set +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y # # IPVS scheduler # -CONFIG_IP_VS_RR=y -# CONFIG_IP_VS_WRR is not set -# CONFIG_IP_VS_LC is not set -# CONFIG_IP_VS_WLC is not set -# CONFIG_IP_VS_FO is not set -# CONFIG_IP_VS_OVF is not set -# CONFIG_IP_VS_LBLC is not set -# CONFIG_IP_VS_LBLCR is not set -# CONFIG_IP_VS_DH is not set -# CONFIG_IP_VS_SH is not set -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m # # IPVS SH scheduler @@ -816,46 +904,114 @@ CONFIG_IP_VS_SH_TAB_BITS=8 # # CONFIG_IP_VS_FTP is not set CONFIG_IP_VS_NFCT=y +# CONFIG_IP_VS_PE_SIP is not set # # IP: Netfilter Configuration # -CONFIG_NF_DEFRAG_IPV4=y -CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m CONFIG_NF_CONNTRACK_PROC_COMPAT=y -# 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 is not set -CONFIG_NF_NAT_IPV4=y -CONFIG_NF_NAT_MASQUERADE_IPV4=y -# CONFIG_NF_NAT_PPTP is not set -# CONFIG_NF_NAT_H323 is not set -CONFIG_IP_NF_IPTABLES=y -# 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=y -# CONFIG_IP_NF_TARGET_REJECT is not set -# CONFIG_IP_NF_TARGET_SYNPROXY is not set -CONFIG_IP_NF_NAT=y -CONFIG_IP_NF_TARGET_MASQUERADE=y -# CONFIG_IP_NF_TARGET_NETMAP is not set -CONFIG_IP_NF_TARGET_REDIRECT=y -# CONFIG_IP_NF_MANGLE is not set -# CONFIG_IP_NF_RAW is not set -# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_NF_TABLES_IPV4=m +CONFIG_NFT_CHAIN_ROUTE_IPV4=m +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NF_TABLES_ARP=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m +CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_REDIR_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m # # IPv6: Netfilter Configuration # -# CONFIG_NF_DEFRAG_IPV6 is not set -# CONFIG_NF_CONNTRACK_IPV6 is not set -# CONFIG_NF_DUP_IPV6 is not set -# CONFIG_NF_REJECT_IPV6 is not set -# CONFIG_NF_LOG_IPV6 is not set -# CONFIG_IP6_NF_IPTABLES is not set -# CONFIG_BRIDGE_NF_EBTABLES is not set +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_TABLES_IPV6=m +CONFIG_NFT_CHAIN_ROUTE_IPV6=m +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NFT_CHAIN_NAT_IPV6=m +CONFIG_NF_NAT_MASQUERADE_IPV6=m +CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_REDIR_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NF_LOG_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_RDS is not set @@ -865,15 +1021,16 @@ CONFIG_IP_NF_TARGET_REDIRECT=y CONFIG_STP=y CONFIG_BRIDGE=y CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_VLAN_FILTERING is not set CONFIG_HAVE_NET_DSA=y -CONFIG_NET_DSA=y -CONFIG_NET_DSA_HWMON=y -# CONFIG_VLAN_8021Q is not set +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set # CONFIG_DECNET is not set CONFIG_LLC=y # CONFIG_LLC2 is not set -CONFIG_IPX=y -# CONFIG_IPX_INTERN is not set +# CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set @@ -996,6 +1153,7 @@ CONFIG_BT_MRVL=y CONFIG_BT_MRVL_SDIO=y # CONFIG_BT_ATH3K is not set # CONFIG_AF_RXRPC is not set +CONFIG_FIB_RULES=y CONFIG_WIRELESS=y CONFIG_WIRELESS_EXT=y CONFIG_WEXT_CORE=y @@ -1046,8 +1204,8 @@ CONFIG_RFKILL_LEDS=y # CONFIG_CAIF is not set # CONFIG_CEPH_LIB is not set # CONFIG_NFC is not set -# CONFIG_LWTUNNEL is not set -# CONFIG_DST_CACHE is not set +CONFIG_LWTUNNEL=y +CONFIG_DST_CACHE=y CONFIG_HAVE_BPF_JIT=y CONFIG_HAVE_EBPF_JIT=y @@ -1222,6 +1380,16 @@ CONFIG_SRAM=y # CONFIG_CXL_KERNEL_API is not set # CONFIG_CXL_EEH is not set +# +# UNISOC WCN Device Drivers(for new chip...) +# +# CONFIG_SC23XX is not set +CONFIG_WCN_BSP_DRIVER_BUILDIN=y +# CONFIG_RK_WIFI_DEVICE_UWE5621 is not set +CONFIG_RK_WIFI_DEVICE_UWE5622=y +# CONFIG_AW_WIFI_DEVICE_UWE5622 is not set +CONFIG_TTY_OVERY_SDIO=m + # # SCSI device support # @@ -1419,6 +1587,7 @@ CONFIG_NET_CORE=y # CONFIG_MACVLAN is not set # CONFIG_IPVLAN is not set # CONFIG_VXLAN is not set +CONFIG_GENEVE=m # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set @@ -1436,13 +1605,7 @@ CONFIG_VETH=m # Distributed Switch Architecture drivers # # CONFIG_NET_DSA_MV88E6XXX is not set -# CONFIG_NET_DSA_MV88E6060 is not set # CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set -# CONFIG_NET_DSA_MV88E6131 is not set -# CONFIG_NET_DSA_MV88E6123_61_65 is not set -# CONFIG_NET_DSA_MV88E6171 is not set -# CONFIG_NET_DSA_MV88E6352 is not set -# CONFIG_NET_DSA_BCM_SF2 is not set CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_ADAPTEC is not set @@ -1482,7 +1645,10 @@ CONFIG_ETHERNET=y # CONFIG_NET_PACKET_ENGINE is not set # CONFIG_NET_VENDOR_QLOGIC is not set # CONFIG_NET_VENDOR_QUALCOMM is not set -# CONFIG_NET_VENDOR_REALTEK is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +CONFIG_R8169=m # CONFIG_NET_VENDOR_RENESAS is not set # CONFIG_NET_VENDOR_RDC is not set # CONFIG_NET_VENDOR_ROCKER is not set @@ -1531,6 +1697,7 @@ CONFIG_ROCKCHIP_PHY=y # CONFIG_SMSC_PHY is not set # CONFIG_BROADCOM_PHY is not set # CONFIG_BCM7XXX_PHY is not set +CONFIG_MOTORCOMM_PHY=m # CONFIG_BCM87XX_PHY is not set # CONFIG_ICPLUS_PHY is not set # CONFIG_REALTEK_PHY is not set @@ -1652,6 +1819,9 @@ CONFIG_RTL8822BE=m # SouthSV 6XXX WLAN support # # CONFIG_SSV6051 is not set +CONFIG_WLAN_UWE5622=m +CONFIG_SPRDWL_NG=m +CONFIG_UNISOC_WIFI_PS=y # CONFIG_WL_TI is not set # CONFIG_ZD1211RW is not set CONFIG_MWIFIEX=m @@ -2922,8 +3092,8 @@ CONFIG_MALI_SHARED_INTERRUPTS=y CONFIG_MALI_DT=y CONFIG_MALI_DEVFREQ=y # CONFIG_MALI_QUIET is not set -# CONFIG_MALI_MIDGARD_FOR_ANDROID is not set -CONFIG_MALI_MIDGARD_FOR_LINUX=y +CONFIG_MALI_MIDGARD_FOR_ANDROID=y +# CONFIG_MALI_MIDGARD_FOR_LINUX is not set CONFIG_MALI_MIDGARD=y # CONFIG_MALI_GATOR_SUPPORT is not set # CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set @@ -4627,6 +4797,7 @@ CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_NFS_SWAP=y # CONFIG_NFS_V4_1 is not set +# CONFIG_ROOT_NFS is not set # CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=y # CONFIG_NFSD is not set @@ -5019,7 +5190,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=y # # Compression # -# CONFIG_CRYPTO_DEFLATE is not set +CONFIG_CRYPTO_DEFLATE=m # CONFIG_CRYPTO_ZLIB is not set CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set @@ -5123,6 +5294,10 @@ CONFIG_GENERIC_ALLOCATOR=y CONFIG_REED_SOLOMON=y CONFIG_REED_SOLOMON_ENC8=y CONFIG_REED_SOLOMON_DEC8=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT_MAP=y diff --git a/external/config/kernel/linux-rockchip64-current.config b/external/config/kernel/linux-rockchip64-current.config index 6b6c5af..a777730 100644 --- a/external/config/kernel/linux-rockchip64-current.config +++ b/external/config/kernel/linux-rockchip64-current.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 5.10.37 Kernel Configuration +# Linux/arm64 5.10.50 Kernel Configuration # CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0" CONFIG_CC_IS_GCC=y @@ -469,7 +469,6 @@ CONFIG_ARM64_TLB_RANGE=y CONFIG_ARM64_BTI=y CONFIG_ARM64_E0PD=y CONFIG_ARCH_RANDOM=y -# CONFIG_ARM64_MTE is not set # end of ARMv8.5 architectural features CONFIG_ARM64_SVE=y @@ -2910,7 +2909,6 @@ CONFIG_NATIONAL_PHY=m CONFIG_AT803X_PHY=m CONFIG_QSEMI_PHY=m CONFIG_REALTEK_PHY=m -CONFIG_MOTORCOMM_PHY=m # CONFIG_RENESAS_PHY is not set CONFIG_ROCKCHIP_PHY=y CONFIG_SMSC_PHY=m @@ -3210,10 +3208,16 @@ CONFIG_RTLBTCOEXIST=m CONFIG_RTL8XXXU=m # CONFIG_RTL8XXXU_UNTESTED is not set CONFIG_RTW88=m -# CONFIG_RTW88_8822BE is not set -# CONFIG_RTW88_8822CE is not set +CONFIG_RTW88_CORE=m +CONFIG_RTW88_PCI=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822CE=m # CONFIG_RTW88_8723DE is not set # CONFIG_RTW88_8821CE is not set +CONFIG_RTW88_DEBUG=y +CONFIG_RTW88_DEBUGFS=y CONFIG_WLAN_VENDOR_RSI=y CONFIG_RSI_91X=m # CONFIG_RSI_DEBUGFS is not set @@ -3234,6 +3238,7 @@ CONFIG_WLCORE=m CONFIG_WLCORE_SPI=m CONFIG_WLCORE_SDIO=m CONFIG_WILINK_PLATFORM_DATA=y +CONFIG_RTL8822BS=m CONFIG_RTL8723DU=m CONFIG_RTL8723DS=m CONFIG_RTL8822BU=m @@ -4524,6 +4529,7 @@ CONFIG_REGULATOR_BD71828=m # CONFIG_REGULATOR_DA9211 is not set CONFIG_REGULATOR_FAN53555=y # CONFIG_REGULATOR_FAN53880 is not set +CONFIG_REGULATOR_FAN53200=y CONFIG_REGULATOR_GPIO=y # CONFIG_REGULATOR_ISL9305 is not set # CONFIG_REGULATOR_ISL6271A is not set @@ -8275,7 +8281,6 @@ CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" # CONFIG_PSTORE_CONSOLE is not set # CONFIG_PSTORE_PMSG is not set CONFIG_PSTORE_RAM=m -# CONFIG_PSTORE_BLK is not set CONFIG_SYSV_FS=m CONFIG_UFS_FS=m CONFIG_UFS_FS_WRITE=y @@ -8751,6 +8756,7 @@ CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 CONFIG_SECONDARY_TRUSTED_KEYRING=y CONFIG_SYSTEM_BLACKLIST_KEYRING=y CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" +# CONFIG_SYSTEM_REVOCATION_LIST is not set # end of Certificates for signature checking CONFIG_BINARY_PRINTF=y diff --git a/external/config/kernel/linux-sun50iw6-legacy.config b/external/config/kernel/linux-sun50iw6-legacy.config index 1b4f337..44b409d 100644 --- a/external/config/kernel/linux-sun50iw6-legacy.config +++ b/external/config/kernel/linux-sun50iw6-legacy.config @@ -1611,7 +1611,7 @@ CONFIG_FIXED_PHY=y # CONFIG_MICREL_PHY is not set # CONFIG_MICROCHIP_PHY is not set # CONFIG_MICROSEMI_PHY is not set -CONFIG_MOTORCOMM_PHY=y +CONFIG_MOTORCOMM_PHY=m # CONFIG_NATIONAL_PHY is not set # CONFIG_QSEMI_PHY is not set # CONFIG_REALTEK_PHY is not set diff --git a/external/config/kernel/linux-sun50iw9-legacy.config b/external/config/kernel/linux-sun50iw9-legacy.config index 6d6b4e5..879a19a 100644 --- a/external/config/kernel/linux-sun50iw9-legacy.config +++ b/external/config/kernel/linux-sun50iw9-legacy.config @@ -1662,7 +1662,7 @@ CONFIG_FIXED_PHY=y # CONFIG_MICREL_PHY is not set # CONFIG_MICROCHIP_PHY is not set # CONFIG_MICROSEMI_PHY is not set -CONFIG_MOTORCOMM_PHY=y +CONFIG_MOTORCOMM_PHY=m # CONFIG_NATIONAL_PHY is not set # CONFIG_QSEMI_PHY is not set # CONFIG_REALTEK_PHY is not set @@ -1733,15 +1733,37 @@ CONFIG_USB_NET_ZAURUS=y # CONFIG_USB_NET_QUECTEL is not set CONFIG_WLAN=y CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_ATH_COMMON=m CONFIG_WLAN_VENDOR_ATH=y # CONFIG_ATH_DEBUG is not set -# CONFIG_ATH9K is not set -# CONFIG_ATH9K_HTC is not set -# CONFIG_CARL9170 is not set -# CONFIG_ATH6KL is not set -# CONFIG_AR5523 is not set -# CONFIG_ATH10K is not set -# CONFIG_WCN36XX is not set +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_AHB=y +# CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set +# CONFIG_ATH9K_WOW is not set +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HWRNG=y +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +CONFIG_CARL9170_HWRNG=y +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_AR5523=m +CONFIG_ATH10K=m +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set CONFIG_WLAN_VENDOR_ATMEL=y # CONFIG_AT76C50X_USB is not set CONFIG_WLAN_VENDOR_BROADCOM=y @@ -1810,7 +1832,7 @@ CONFIG_AW_WIFI_DEVICE_UWE5622=y CONFIG_AW_BIND_VERIFY=y CONFIG_WLAN_UWE5622=m CONFIG_SPRDWL_NG=m -CONFIG_UNISOC_WIFI_PS=y +# CONFIG_UNISOC_WIFI_PS is not set CONFIG_TTY_OVERY_SDIO=m CONFIG_RTL8822BS=m CONFIG_RTL8821CS=m @@ -1828,7 +1850,7 @@ CONFIG_RTL8821CS=m CONFIG_INPUT=y CONFIG_INPUT_LEDS=y CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_POLLDEV is not set +CONFIG_INPUT_POLLDEV=y # CONFIG_INPUT_SPARSEKMAP is not set # CONFIG_INPUT_MATRIXKMAP is not set @@ -1853,8 +1875,8 @@ CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set # CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_GPIO is not set -# CONFIG_KEYBOARD_GPIO_POLLED is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_GPIO_POLLED=y # CONFIG_KEYBOARD_TCA6416 is not set # CONFIG_KEYBOARD_TCA8418 is not set # CONFIG_KEYBOARD_MATRIX is not set @@ -2011,6 +2033,7 @@ CONFIG_INPUT_GPIO=y # CONFIG_INPUT_ADXL34X is not set # CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set # CONFIG_INPUT_DRV2667_HAPTICS is not set @@ -2145,7 +2168,7 @@ CONFIG_I2C_SMBUS=y # # I2C Algorithms # -# CONFIG_I2C_ALGOBIT is not set +CONFIG_I2C_ALGOBIT=m # CONFIG_I2C_ALGOPCF is not set # CONFIG_I2C_ALGOPCA is not set @@ -2160,7 +2183,7 @@ CONFIG_I2C_SMBUS=y # CONFIG_I2C_CBUS_GPIO is not set # CONFIG_I2C_DESIGNWARE_PLATFORM is not set # CONFIG_I2C_EMEV2 is not set -# CONFIG_I2C_GPIO is not set +CONFIG_I2C_GPIO=m # CONFIG_I2C_MV64XXX is not set # CONFIG_I2C_NOMADIK is not set # CONFIG_I2C_OCORES is not set @@ -2198,10 +2221,10 @@ CONFIG_SPI_MASTER=y # # CONFIG_SPI_ALTERA is not set # CONFIG_SPI_AXI_SPI_ENGINE is not set -# CONFIG_SPI_BITBANG is not set +CONFIG_SPI_BITBANG=m # CONFIG_SPI_CADENCE is not set # CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_GPIO is not set +CONFIG_SPI_GPIO=m # CONFIG_SPI_FSL_SPI is not set # CONFIG_SPI_OC_TINY is not set # CONFIG_SPI_PL022 is not set @@ -2278,6 +2301,7 @@ CONFIG_PINCTRL_SUN50IW9P1=y CONFIG_PINCTRL_SUN50IW9P1_R=y CONFIG_GPIOLIB=y CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y # CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y CONFIG_GPIO_GENERIC=y @@ -2306,8 +2330,9 @@ CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_GPIO_ADNP is not set # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set -# CONFIG_GPIO_PCA953X is not set -# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCF857X=y # CONFIG_GPIO_SX150X is not set # CONFIG_GPIO_TPIC2810 is not set # CONFIG_GPIO_TS4900 is not set @@ -3121,8 +3146,6 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y CONFIG_SND_SUNXI_SOC_RWFUNC=y CONFIG_SND_SUNXI_SOC_CPUDAI=y CONFIG_SND_SUNXI_SOC_HDMI=y -CONFIG_SND_SUNXI_SOC_SPDIF=y -CONFIG_SND_SUNXI_SOC_DMIC=y CONFIG_SND_SUNXI_SOC=y CONFIG_SND_SUN50IW9_CODEC=y CONFIG_AHUB_FREQ_REQ=y @@ -3131,13 +3154,14 @@ CONFIG_AHUB_FREQ_REQ=y # Allwinner SoC Audio support # CONFIG_SND_SUNXI_SOC_SUN50IW9_CODEC=y +CONFIG_SND_SUNXI_SOC_SUN50IW9_RT5651=y CONFIG_SND_SUNXI_SOC_CODEC_CPU_DAI=y CONFIG_SND_SUNXI_SOC_SUNXI_HDMIAUDIO=y CONFIG_SND_SUNXI_SOC_SUNXI_DAUDIO=y -CONFIG_SND_SUNXI_SOC_SUNXI_SPDIF=y -CONFIG_SND_SUNXI_SOC_SUNXI_DMIC=y +# CONFIG_SND_SUNXI_SOC_SUNXI_SPDIF is not set +# CONFIG_SND_SUNXI_SOC_SUNXI_DMIC is not set CONFIG_SND_SUNXI_SOC_AHUB=y -# CONFIG_SUNXI_AUDIO_DEBUG is not set +CONFIG_SUNXI_AUDIO_DEBUG=y # CONFIG_SND_SOC_XTFPGA_I2S is not set CONFIG_SND_SOC_I2C_AND_SPI=y @@ -3167,8 +3191,8 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS4349 is not set # CONFIG_SND_SOC_CS53L30 is not set -CONFIG_SND_SOC_DMIC=y # CONFIG_SND_SOC_ES8328 is not set +CONFIG_SND_SOC_ES8316=y # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set # CONFIG_SND_SOC_MAX98504 is not set @@ -3180,8 +3204,10 @@ CONFIG_SND_SOC_DMIC=y # CONFIG_SND_SOC_PCM3168A_SPI is not set # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set +CONFIG_SND_SOC_RL6231=y # CONFIG_SND_SOC_RT5616 is not set # CONFIG_SND_SOC_RT5631 is not set +CONFIG_SND_SOC_RT5651=y # CONFIG_SND_SOC_RT5677_SPI is not set # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set @@ -3225,8 +3251,9 @@ CONFIG_SND_SOC_DMIC=y # CONFIG_SND_SOC_NAU8810 is not set # CONFIG_SND_SOC_TPA6130A2 is not set # CONFIG_SND_SOC_AC107 is not set -# CONFIG_SND_SIMPLE_CARD is not set -# CONFIG_SND_SIMPLE_SCU_CARD is not set +CONFIG_SND_SIMPLE_CARD_UTILS=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_SIMPLE_SCU_CARD=y # CONFIG_SOUND_PRIME is not set # @@ -3671,7 +3698,7 @@ CONFIG_MMC_SUNXI=y # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y -CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_CLASS_FLASH=y # # LED drivers @@ -3691,7 +3718,7 @@ CONFIG_LEDS_LP5523=m CONFIG_LEDS_LP5562=m CONFIG_LEDS_LP8501=m CONFIG_LEDS_LP8860=m -CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA955X=y CONFIG_LEDS_PCA963X=m CONFIG_LEDS_DAC124S085=m CONFIG_LEDS_PWM=m @@ -3716,20 +3743,20 @@ CONFIG_LEDS_SYSCON=y # LED Triggers # CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=m -CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y CONFIG_LEDS_TRIGGER_MTD=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_GPIO=m -CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # # iptables trigger is under Netfilter config (LED target) # -CONFIG_LEDS_TRIGGER_TRANSIENT=m -CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_LEDS_TRIGGER_CAMERA=y CONFIG_LEDS_TRIGGER_PANIC=y # CONFIG_ACCESSIBILITY is not set CONFIG_EDAC_SUPPORT=y @@ -3765,7 +3792,7 @@ CONFIG_RTC_DRV_DS1374_WDT=y CONFIG_RTC_DRV_DS1672=m CONFIG_RTC_DRV_HYM8563=m CONFIG_RTC_DRV_MAX6900=m -CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RS5C372=y CONFIG_RTC_DRV_ISL1208=m CONFIG_RTC_DRV_ISL12022=m CONFIG_RTC_DRV_X1205=m diff --git a/external/config/optional/boards/orangepi4-lts/_packages/bsp-cli/usr/bin/hciattach_opi b/external/config/optional/boards/orangepi4-lts/_packages/bsp-cli/usr/bin/hciattach_opi new file mode 100755 index 0000000..6766016 Binary files /dev/null and b/external/config/optional/boards/orangepi4-lts/_packages/bsp-cli/usr/bin/hciattach_opi differ diff --git a/external/config/optional/boards/orangepi4-lts/_packages/bsp-desktop/etc/X11/xorg.conf.d/02-modesetting.conf b/external/config/optional/boards/orangepi4-lts/_packages/bsp-desktop/etc/X11/xorg.conf.d/02-modesetting.conf new file mode 100644 index 0000000..0e25bfa --- /dev/null +++ b/external/config/optional/boards/orangepi4-lts/_packages/bsp-desktop/etc/X11/xorg.conf.d/02-modesetting.conf @@ -0,0 +1,32 @@ +Section "Device" + Identifier "Rockchip Graphics" + Driver "modesetting" + +### Use Rockchip RGA 2D HW accel +# Option "AccelMethod" "exa" + +### Use GPU HW accel + Option "AccelMethod" "glamor" + + Option "DRI" "2" + +### Set to "always" to avoid tearing, could lead to up 50% performance loss + Option "FlipFB" "none" + +### Limit flip rate and drop frames for "FlipFB" to reduce performance lost +# Option "MaxFlipRate" "25" + + Option "NoEDID" "true" +EndSection + +Section "Screen" + Identifier "Default Screen" + Device "Rockchip Graphics" + Monitor "Default Monitor" +EndSection + +### Valid values for rotation are "normal", "left", "right" +Section "Monitor" + Identifier "Default Monitor" + Option "Rotate" "normal" +EndSection diff --git a/external/config/optional/boards/orangepi4-lts/_packages/bsp-desktop/etc/mpv/mpv.conf b/external/config/optional/boards/orangepi4-lts/_packages/bsp-desktop/etc/mpv/mpv.conf new file mode 100644 index 0000000..dc586a6 --- /dev/null +++ b/external/config/optional/boards/orangepi4-lts/_packages/bsp-desktop/etc/mpv/mpv.conf @@ -0,0 +1,141 @@ +# +# mpv configuration file +# +# Warning: +# +# The commented example options usually do _not_ set the default values. Call +# mpv with --list-options to see the default values for most options. There is +# no builtin or example mpv.conf with all the defaults. +# +# +# Configuration files are read system-wide from /usr/local/etc/mpv.conf +# and per-user from ~/.config/mpv/mpv.conf, where per-user settings override +# system-wide settings, all of which are overridden by the command line. +# +# Configuration file settings and the command line options use the same +# underlying mechanisms. Most options can be put into the configuration file +# by dropping the preceding '--'. See the man page for a complete list of +# options. +# +# Lines starting with '#' are comments and are ignored. +# +# See the CONFIGURATION FILES section in the man page +# for a detailed description of the syntax. +# +# Profiles should be placed at the bottom of the configuration file to ensure +# that settings wanted as defaults are not restricted to specific profiles. + +################## +# video settings # +################## + +# Start in fullscreen mode by default. +#fs=yes + +# force starting with centered window +#geometry=50%:50% + +# don't allow a new window to have a size larger than 90% of the screen size +#autofit-larger=90%x90% + +# Do not close the window on exit. +#keep-open=yes + +# Do not wait with showing the video window until it has loaded. (This will +# resize the window once video is loaded. Also always shows a window with +# audio.) +#force-window=immediate + +# Disable the On Screen Controller (OSC). +#osc=no + +# Keep the player window on top of all other windows. +#ontop=yes + +# Specify high quality video rendering preset (for --vo=gpu only) +# Can cause performance problems with some drivers and GPUs. +#profile=gpu-hq + +# Force video to lock on the display's refresh rate, and change video and audio +# speed to some degree to ensure synchronous playback - can cause problems +# with some drivers and desktop environments. +#video-sync=display-resample + +# Enable hardware decoding if available. Often, this does not work with all +# video outputs, but should work well with default settings on most systems. +# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs +# may or may not help. +hwdec=rkmpp + +# Specify default video output. +vo=xv + +################## +# audio settings # +################## + +# Specify default audio device. You can list devices with: --audio-device=help +# The option takes the device string (the stuff between the '...'). +#audio-device=alsa/default + +# Do not filter audio to keep pitch when changing playback speed. +#audio-pitch-correction=no + +# Output 5.1 audio natively, and upmix/downmix audio with a different format. +#audio-channels=5.1 +# Disable any automatic remix, _if_ the audio output accepts the audio format. +# of the currently played file. See caveats mentioned in the manpage. +# (The default is "auto-safe", see manpage.) +#audio-channels=auto + +################## +# other settings # +################## + +# Pretend to be a web browser. Might fix playback with some streaming sites, +# but also will break with shoutcast streams. +#user-agent="Mozilla/5.0" + +# cache settings +# +# Use 150MB input cache by default. The cache is enabled for network streams only. +#cache-default=153600 +# +# Use 150MB input cache for everything, even local files. +#cache=153600 +# +# Disable the behavior that the player will pause if the cache goes below a +# certain fill size. +#cache-pause=no +# +# Read ahead about 5 seconds of audio and video packets. +#demuxer-readahead-secs=5.0 +# +# Raise readahead from demuxer-readahead-secs to this value if a cache is active. +#cache-secs=50.0 + +# Display English subtitles if available. +#slang=en + +# Play Finnish audio if available, fall back to English otherwise. +#alang=fi,en + +# Change subtitle encoding. For Arabic subtitles use 'cp1256'. +# If the file seems to be valid UTF-8, prefer UTF-8. +# (You can add '+' in front of the codepage to force it.) +#sub-codepage=cp1256 + +# You can also include other configuration files. +#include=/path/to/the/file/you/want/to/include + +############ +# Profiles # +############ + +# The options declared as part of profiles override global default settings, +# but only take effect when the profile is active. + +# The following profile can be enabled on the command line with: --profile=eye-cancer + +#[eye-cancer] +#sharpen=5 diff --git a/external/config/optional/boards/orangepi400/_config/desktop/_all_distributions/environments/xfce/debian/orangepi-bsp-desktop/postinst b/external/config/optional/boards/orangepi400/_config/desktop/_all_distributions/environments/xfce/debian/orangepi-bsp-desktop/postinst new file mode 100644 index 0000000..f262746 --- /dev/null +++ b/external/config/optional/boards/orangepi400/_config/desktop/_all_distributions/environments/xfce/debian/orangepi-bsp-desktop/postinst @@ -0,0 +1,2 @@ +sed -i '/xfdesktop/a ' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +sed -i '/xfdesktop/a ' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml diff --git a/external/config/optional/boards/orangepi400/_packages/bsp-cli/usr/bin/hciattach_opi b/external/config/optional/boards/orangepi400/_packages/bsp-cli/usr/bin/hciattach_opi new file mode 100755 index 0000000..2012b12 Binary files /dev/null and b/external/config/optional/boards/orangepi400/_packages/bsp-cli/usr/bin/hciattach_opi differ diff --git a/external/config/optional/boards/orangepi400/_packages/bsp-desktop/usr/bin/capslock.sh b/external/config/optional/boards/orangepi400/_packages/bsp-desktop/usr/bin/capslock.sh new file mode 100755 index 0000000..fe83093 --- /dev/null +++ b/external/config/optional/boards/orangepi400/_packages/bsp-desktop/usr/bin/capslock.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +sleep 0.35 +if [[ $(xset q | grep "Caps Lock" | cut -d " " -f10) == off ]]; +then + #notify-send -i keyboard "Caps Lock" "Off"; + echo 0 > /sys/class/leds/caps_led/brightness +else + #notify-send -i keyboard "Caps Lock" "On"; + echo 1 > /sys/class/leds/caps_led/brightness +fi diff --git a/external/config/optional/boards/orangepi400/_packages/bsp-desktop/usr/bin/numlock.sh b/external/config/optional/boards/orangepi400/_packages/bsp-desktop/usr/bin/numlock.sh new file mode 100755 index 0000000..dbd3e99 --- /dev/null +++ b/external/config/optional/boards/orangepi400/_packages/bsp-desktop/usr/bin/numlock.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +sleep 0.35 +if [[ $(xset q | grep "Num Lock" | cut -d ":" -f5) == *off* ]]; +then + #notify-send -i keyboard "Num Lock" "Off"; + echo 0 > /sys/class/leds/num_led/brightness +else + #notify-send -i keyboard "Num Lock" "On"; + echo 1 > /sys/class/leds/num_led/brightness +fi diff --git a/external/config/optional/boards/orangepi800/_config/desktop/_all_distributions/environments/xfce/debian/orangepi-bsp-desktop/postinst b/external/config/optional/boards/orangepi800/_config/desktop/_all_distributions/environments/xfce/debian/orangepi-bsp-desktop/postinst new file mode 100644 index 0000000..f262746 --- /dev/null +++ b/external/config/optional/boards/orangepi800/_config/desktop/_all_distributions/environments/xfce/debian/orangepi-bsp-desktop/postinst @@ -0,0 +1,2 @@ +sed -i '/xfdesktop/a ' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +sed -i '/xfdesktop/a ' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml diff --git a/external/config/optional/boards/orangepi800/_packages/bsp-cli/usr/bin/hciattach_opi b/external/config/optional/boards/orangepi800/_packages/bsp-cli/usr/bin/hciattach_opi new file mode 100755 index 0000000..6766016 Binary files /dev/null and b/external/config/optional/boards/orangepi800/_packages/bsp-cli/usr/bin/hciattach_opi differ diff --git a/external/config/optional/boards/orangepi800/_packages/bsp-desktop/etc/X11/xorg.conf.d/02-modesetting.conf b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/etc/X11/xorg.conf.d/02-modesetting.conf new file mode 100644 index 0000000..0e25bfa --- /dev/null +++ b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/etc/X11/xorg.conf.d/02-modesetting.conf @@ -0,0 +1,32 @@ +Section "Device" + Identifier "Rockchip Graphics" + Driver "modesetting" + +### Use Rockchip RGA 2D HW accel +# Option "AccelMethod" "exa" + +### Use GPU HW accel + Option "AccelMethod" "glamor" + + Option "DRI" "2" + +### Set to "always" to avoid tearing, could lead to up 50% performance loss + Option "FlipFB" "none" + +### Limit flip rate and drop frames for "FlipFB" to reduce performance lost +# Option "MaxFlipRate" "25" + + Option "NoEDID" "true" +EndSection + +Section "Screen" + Identifier "Default Screen" + Device "Rockchip Graphics" + Monitor "Default Monitor" +EndSection + +### Valid values for rotation are "normal", "left", "right" +Section "Monitor" + Identifier "Default Monitor" + Option "Rotate" "normal" +EndSection diff --git a/external/config/optional/boards/orangepi800/_packages/bsp-desktop/etc/mpv/mpv.conf b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/etc/mpv/mpv.conf new file mode 100644 index 0000000..dc586a6 --- /dev/null +++ b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/etc/mpv/mpv.conf @@ -0,0 +1,141 @@ +# +# mpv configuration file +# +# Warning: +# +# The commented example options usually do _not_ set the default values. Call +# mpv with --list-options to see the default values for most options. There is +# no builtin or example mpv.conf with all the defaults. +# +# +# Configuration files are read system-wide from /usr/local/etc/mpv.conf +# and per-user from ~/.config/mpv/mpv.conf, where per-user settings override +# system-wide settings, all of which are overridden by the command line. +# +# Configuration file settings and the command line options use the same +# underlying mechanisms. Most options can be put into the configuration file +# by dropping the preceding '--'. See the man page for a complete list of +# options. +# +# Lines starting with '#' are comments and are ignored. +# +# See the CONFIGURATION FILES section in the man page +# for a detailed description of the syntax. +# +# Profiles should be placed at the bottom of the configuration file to ensure +# that settings wanted as defaults are not restricted to specific profiles. + +################## +# video settings # +################## + +# Start in fullscreen mode by default. +#fs=yes + +# force starting with centered window +#geometry=50%:50% + +# don't allow a new window to have a size larger than 90% of the screen size +#autofit-larger=90%x90% + +# Do not close the window on exit. +#keep-open=yes + +# Do not wait with showing the video window until it has loaded. (This will +# resize the window once video is loaded. Also always shows a window with +# audio.) +#force-window=immediate + +# Disable the On Screen Controller (OSC). +#osc=no + +# Keep the player window on top of all other windows. +#ontop=yes + +# Specify high quality video rendering preset (for --vo=gpu only) +# Can cause performance problems with some drivers and GPUs. +#profile=gpu-hq + +# Force video to lock on the display's refresh rate, and change video and audio +# speed to some degree to ensure synchronous playback - can cause problems +# with some drivers and desktop environments. +#video-sync=display-resample + +# Enable hardware decoding if available. Often, this does not work with all +# video outputs, but should work well with default settings on most systems. +# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs +# may or may not help. +hwdec=rkmpp + +# Specify default video output. +vo=xv + +################## +# audio settings # +################## + +# Specify default audio device. You can list devices with: --audio-device=help +# The option takes the device string (the stuff between the '...'). +#audio-device=alsa/default + +# Do not filter audio to keep pitch when changing playback speed. +#audio-pitch-correction=no + +# Output 5.1 audio natively, and upmix/downmix audio with a different format. +#audio-channels=5.1 +# Disable any automatic remix, _if_ the audio output accepts the audio format. +# of the currently played file. See caveats mentioned in the manpage. +# (The default is "auto-safe", see manpage.) +#audio-channels=auto + +################## +# other settings # +################## + +# Pretend to be a web browser. Might fix playback with some streaming sites, +# but also will break with shoutcast streams. +#user-agent="Mozilla/5.0" + +# cache settings +# +# Use 150MB input cache by default. The cache is enabled for network streams only. +#cache-default=153600 +# +# Use 150MB input cache for everything, even local files. +#cache=153600 +# +# Disable the behavior that the player will pause if the cache goes below a +# certain fill size. +#cache-pause=no +# +# Read ahead about 5 seconds of audio and video packets. +#demuxer-readahead-secs=5.0 +# +# Raise readahead from demuxer-readahead-secs to this value if a cache is active. +#cache-secs=50.0 + +# Display English subtitles if available. +#slang=en + +# Play Finnish audio if available, fall back to English otherwise. +#alang=fi,en + +# Change subtitle encoding. For Arabic subtitles use 'cp1256'. +# If the file seems to be valid UTF-8, prefer UTF-8. +# (You can add '+' in front of the codepage to force it.) +#sub-codepage=cp1256 + +# You can also include other configuration files. +#include=/path/to/the/file/you/want/to/include + +############ +# Profiles # +############ + +# The options declared as part of profiles override global default settings, +# but only take effect when the profile is active. + +# The following profile can be enabled on the command line with: --profile=eye-cancer + +#[eye-cancer] +#sharpen=5 diff --git a/external/config/optional/boards/orangepi800/_packages/bsp-desktop/usr/bin/capslock.sh b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/usr/bin/capslock.sh new file mode 100755 index 0000000..fe83093 --- /dev/null +++ b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/usr/bin/capslock.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +sleep 0.35 +if [[ $(xset q | grep "Caps Lock" | cut -d " " -f10) == off ]]; +then + #notify-send -i keyboard "Caps Lock" "Off"; + echo 0 > /sys/class/leds/caps_led/brightness +else + #notify-send -i keyboard "Caps Lock" "On"; + echo 1 > /sys/class/leds/caps_led/brightness +fi diff --git a/external/config/optional/boards/orangepi800/_packages/bsp-desktop/usr/bin/numlock.sh b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/usr/bin/numlock.sh new file mode 100755 index 0000000..dbd3e99 --- /dev/null +++ b/external/config/optional/boards/orangepi800/_packages/bsp-desktop/usr/bin/numlock.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +sleep 0.35 +if [[ $(xset q | grep "Num Lock" | cut -d ":" -f5) == *off* ]]; +then + #notify-send -i keyboard "Num Lock" "Off"; + echo 0 > /sys/class/leds/num_led/brightness +else + #notify-send -i keyboard "Num Lock" "On"; + echo 1 > /sys/class/leds/num_led/brightness +fi diff --git a/external/config/optional/families/sun50iw6/_packages/bsp-cli/usr/bin/hciattach_opi b/external/config/optional/families/sun50iw6/_packages/bsp-cli/usr/bin/hciattach_opi new file mode 100755 index 0000000..17b2518 Binary files /dev/null and b/external/config/optional/families/sun50iw6/_packages/bsp-cli/usr/bin/hciattach_opi differ diff --git a/external/config/optional/families/sun50iw9/_packages/bsp-cli/usr/bin/hciattach_opi b/external/config/optional/families/sun50iw9/_packages/bsp-cli/usr/bin/hciattach_opi new file mode 100755 index 0000000..17b2518 Binary files /dev/null and b/external/config/optional/families/sun50iw9/_packages/bsp-cli/usr/bin/hciattach_opi differ diff --git a/external/config/sources/arm64.conf b/external/config/sources/arm64.conf index 2cfce8e..aea9093 100644 --- a/external/config/sources/arm64.conf +++ b/external/config/sources/arm64.conf @@ -1,3 +1,13 @@ +#!/bin/bash +# +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com +# +# This file is licensed under the terms of the GNU General Public +# License version 2. This program is licensed "as is" without any +# warranty of any kind, whether express or implied. +# +# This file is a part of the Armbian build script +# https://github.com/armbian/build/ QEMU_BINARY="qemu-aarch64-static" ARCHITECTURE=arm64 ARCH=arm64 diff --git a/external/config/sources/armhf.conf b/external/config/sources/armhf.conf index 0759d5b..8d9d274 100644 --- a/external/config/sources/armhf.conf +++ b/external/config/sources/armhf.conf @@ -1,3 +1,11 @@ +#!/bin/bash +# +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com +# +# This file is licensed under the terms of the GNU General Public +# License version 2. This program is licensed "as is" without any +# warranty of any kind, whether express or implied. + INITRD_ARCH=arm QEMU_BINARY="qemu-arm-static" ARCHITECTURE=arm diff --git a/external/config/sources/families/include/rk3399_gpu_vpu.inc b/external/config/sources/families/include/rk3399_gpu_vpu.inc new file mode 100644 index 0000000..861365f --- /dev/null +++ b/external/config/sources/families/include/rk3399_gpu_vpu.inc @@ -0,0 +1,290 @@ +rk3399_gpu_vpu_tweaks() +{ + if [[ "$BOARD" =~ orangepi4|orangepi800|orangepi4-lts && "$BRANCH" == legacy && $BUILD_DESKTOP == yes && ${RELEASE} =~ buster|bionic|focal ]]; then + + # Gstreamer library + GST_DIR="$EXTER/cache/sources/rk3399_gst_xserver_libs/gstreamer" + [[ ! -d "${SDCARD}"/usr/libexec ]] && mkdir -p "${SDCARD}"/usr/libexec + + if [[ $RELEASE != buster ]]; then + + cp ${GST_DIR}/${RELEASE}_build/etc/iqfiles ${SDCARD}/etc/ -rfa + cp ${GST_DIR}/${RELEASE}_build/usr/bin/* ${SDCARD}/usr/bin/ -rfa + cp ${GST_DIR}/${RELEASE}_build/usr/include/* ${SDCARD}/usr/include/ -rfa + cp ${GST_DIR}/${RELEASE}_build/usr/lib/* ${SDCARD}/usr/lib/ -rfa + cp ${GST_DIR}/${RELEASE}_build/usr/share/* ${SDCARD}/usr/share/ -rfa + cp ${GST_DIR}/overlay/etc/udev/rules.d/* ${SDCARD}/etc/udev/rules.d/ -rfa + cp ${GST_DIR}/overlay/usr/local/bin/* ${SDCARD}/usr/local/bin/ -rfa + + XSERVER_DIR="$EXTER/cache/sources/rk3399_gst_xserver_libs/xserver" + cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/bin/* ${SDCARD}/usr/bin/ -rfa + cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/include/* ${SDCARD}/usr/include/ -rfa + cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/lib/* ${SDCARD}/usr/lib/ -rfa + cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/share/* ${SDCARD}/usr/share/ -rfa + cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/libexec/* ${SDCARD}/usr/libexec/ -rfa + + fi + + if [[ $RELEASE == bionic ]]; then + + cp ${GST_DIR}/${RELEASE}_build/usr/lib/gstreamer-1.0/* ${SDCARD}/usr/lib/aarch64-linux-gnu/gstreamer-1.0/ -rfa + + #Mali GPU library + install_deb_chroot "$EXTER/cache/debs/rk3399/libmali-rk-midgard-t86x-r14p0-r0p0_1.6-1-1armbian3_arm64.deb" + + elif [[ $RELEASE == xenial ]]; then + + # Mail GPU library + sed 's/^#\(deb-src\)/\1/' -i ${SDCARD}/etc/apt/sources.list + chroot $SDCARD /bin/bash -c "apt-get -q update >/dev/null 2>&1" + chroot $SDCARD /bin/bash -c "apt-get -y build-dep xserver-xorg-core >/dev/null 2>&1" + chroot $SDCARD /bin/bash -c "apt-get remove -y --purge libegl1-mesa-dev:arm64 libgbm-dev:arm64 >/dev/null 2>&1" + chroot $SDCARD /bin/bash -c "apt-get install -q -y --no-install-recommends libxcb-xkb-dev libxfont-dev wayland-protocols >/dev/null 2>&1" + install_deb_chroot "$EXTER/cache/debs/rk3399/libmali-rk-dev_1.6-2_arm64.deb" + install_deb_chroot "$EXTER/cache/debs/rk3399/libmali-rk-midgard-t86x-r14p0_1.6-2_arm64.deb" + rm -rf ${SDCARD}/usr/lib/aarch64-linux-gnu/mesa-egl + + # Gstreamer + cp ${GST_DIR}/others/gstreamer/usr/bin/* ${SDCARD}/usr/bin/ -rfa + cp ${GST_DIR}/others/gstreamer/usr/include/* ${SDCARD}/usr/include/ -rfa + cp ${GST_DIR}/others/gstreamer/usr/lib/* ${SDCARD}/usr/lib/ -rfa + cp ${GST_DIR}/others/gstreamer/usr/libexec/* ${SDCARD}/usr/libexec/ -rfa + cp ${GST_DIR}/others/gstreamer/usr/local/* ${SDCARD}/usr/local/ -rfa + cp ${GST_DIR}/others/gstreamer/usr/share/* ${SDCARD}/usr/share/ -rfa + + elif [[ $RELEASE == buster ]]; then + + #Multimedia Framework + chroot $SDCARD /bin/bash -c "apt-get -q update >/dev/null 2>&1" + chroot $SDCARD /bin/bash -c "apt-get remove -y --purge xserver-xorg-core orangepi-bsp-desktop-${BOARD} >/dev/null 2>&1" + chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad \ + qtgstreamer-plugins-qt5 qtmultimedia5-examples mesa-utils fonts-liberation python-bluez python-lightblue python-pil \ + python-simplejson libshairplay0 libaacs0 libcec4 libfstrcmp0 libiso9660-11 liblirc-client0 libmariadb3 libmicrohttpd12 \ + libpcrecpp0v5 libdav1d4 libssh-4 libtag1v5 gstreamer1.0-plugins-good liblua5.2-0 librubberband2 gstreamer1.0-libav \ + gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 \ + gstreamer1.0-pulseaudio libjsoncpp1 libminizip1 libre2-5 libxss1 libxslt1.1 libv4l-0 xserver-common libpciaccess0 \ + libunwind8 libxfont2 libcdio-cdda2 libcdio-paranoia2 libuchardet0 libnspr4 libnss3 >/dev/null 2>&1" + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libmali/libmali-midgard-t86x-r18p0-x11_1.9-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga2_2.0.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp1_1.4.0_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-vpu0_1.4.0_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-core-rockchip_1.20.3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/gl4es_1.1.5_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/gst/gstreamer1.0-rockchip1_2.1.10_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/gst/gstreamer1.0-rockchip1-extra_3-20180115_arm64.deb" + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/mpv-legacy_2%3a2020.12.08.df805cfc84_arm64.deb" + echo "hwdec=rkmpp" > ${SDCARD}/etc/mpv/mpv.conf + + chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends xserver-xorg \ + xserver-xorg-video-fbdev xserver-xorg-input-all xserver-xorg-input-libinput >/dev/null 2>&1" + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rkisp/rkisp-engine-2.2.0_arm64.deb" + install -m 0755 ${EXTER}/packages/bsp/rk3399/scripts/test_camera-gst.sh ${SDCARD}/usr/local/bin/ + install -m 0755 ${EXTER}/packages/bsp/rk3399/scripts/test_camera-dual.sh ${SDCARD}/usr/local/bin/ + install -m 0755 ${EXTER}/packages/bsp/rk3399/scripts/io ${SDCARD}/usr/local/bin/ + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/glmark2/glmark2-data_2021.02+ds-1_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/glmark2/glmark2-es2-x11_2021.02+ds-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/ir-keytable_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-0_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-dev_1.16.3-3_arm64.deb" + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l2rds0_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4lconvert0_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-rkmpp_1.3.2-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/dvb-tools_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-0_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-dev_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/qv4l2_1.16.3-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/v4l-utils_1.16.3-3_arm64.deb" + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/chromium/chromium-x11_91.0.4472.164_arm64.deb" + + # The chromium using fixed pathes for libv4l2.so + chroot $SDCARD /bin/bash -c "ln -rsf /usr/lib/*/libv4l2.so /usr/lib/" + chroot $SDCARD /bin/bash -c "[ -e /usr/lib/aarch64-linux-gnu/ ] && ln -Tsf lib /usr/lib64" + + fi + fi + + if [[ ${BOARD} =~ orangepi800 && ${SELECTED_CONFIGURATION} == desktop && ${RELEASE} == bookworm ]]; then + + chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends libdrm-dev libqt5opengl5 \ + libgdk-pixbuf2.0-0 libminizip1 libre2-9 >/dev/null 2>&1" + + # RK399 GPU and VPU + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga2_2.1.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga-dev_2.1.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libmali/libmali-midgard-t86x-r18p0-x11_1.9-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-common_1.20.11-1_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-core_1.20.11-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-legacy_1.20.11-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/glmark2/glmark2-data_2021.02+ds-1_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/glmark2/glmark2-es2-x11_2021.02+ds-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp1_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp-dev_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-vpu0_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/rockchip-mpp-demos_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/gst-base/gstreamer1.0-x_1.14.4-2+deb10u1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/gst-rkmpp/gstreamer1.0-rockchip1_1.14-4_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/ffmpeg_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavutil56_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavutil-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libaom0_1.0.0.errata1-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libcodec2-0.9_0.9.2-4_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavcodec58_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavdevice58_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswresample3_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswresample-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavcodec-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavfilter7_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavformat58_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavformat-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libpostproc55_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libpostproc-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswscale5_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswscale-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavfilter-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavdevice-dev_4.4-6_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libplacebo120_3.120.3-dmo1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libmpv1_0.33.1-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libmpv-dev_0.33.1-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/mpv_0.33.1-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-dev_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-doc_1.20.0-2_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/dvb-tools_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4lconvert0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l2rds0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-dev_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-rkmpp_1.3.3-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/v4l-utils_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/chromium/chromium-x11_91.0.4472.164_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libdrm-cursor/libdrm-cursor_1.2.3-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libdrm-cursor/libdrm-cursor-dev_1.2.3-1_arm64.deb" + + # The chromium using fixed pathes for libv4l2.so + chroot $SDCARD /bin/bash -c "ln -rsf /usr/lib/*/libv4l2.so /usr/lib/" + chroot $SDCARD /bin/bash -c "[ -e /usr/lib/aarch64-linux-gnu/ ] && ln -Tsf lib /usr/lib64" + + fi + + if [[ ${BOARD} =~ orangepi4|orangepi4-lts|orangepi800 && ${SELECTED_CONFIGURATION} == desktop && ${RELEASE} == bullseye ]]; then + + chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends libchromaprint1 libgme0 \ + libopenmpt0 librabbitmq4 libsrt1.4-gnutls libssh-gcrypt-4 libzmq5 libass9 libbs2b0 \ + libflite1 liblilv-0-0 libmysofa1 libpocketsphinx3 libsphinxbase3 librubberband2 \ + libvidstab1.1 libcdio-cdda2 libcdio-paranoia2 libdc1394-25 libopenal1 libsdl2-2.0-0 \ + libsndio7.0 libxv1 libdvdnav4 liblua5.2-0 libva-wayland2 libxslt1.1 libgles2 libjsoncpp24 \ + libdrm-dev libqt5opengl5 libgdk-pixbuf2.0-0 libminizip1 libre2-9 >/dev/null 2>&1" + + # RK GPU VPU + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga2_2.2.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga-dev_2.2.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libmali/libmali-midgard-t86x-r18p0-x11_1.9-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-common_1.20.11-1_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-core_1.20.11-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-legacy_1.20.11-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/glmark2/glmark2-data_2021.02+ds-1_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/glmark2/glmark2-es2-x11_2021.02+ds-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp1_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp-dev_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-vpu0_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/rockchip-mpp-demos_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/gst-rkmpp/gstreamer1.0-rockchip1_1.14-4_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libaom0_1.0.0.errata1-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libcodec2-0.9_0.9.2-4_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavutil56_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavutil-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libpostproc55_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libpostproc-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswresample3_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswresample-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswscale5_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswscale-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavcodec58_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavcodec-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavformat58_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavformat-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavresample4_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavresample-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavfilter7_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavfilter-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavdevice58_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavdevice-dev_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/ffmpeg_4.3.2-0+deb11u2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libmpv1_0.32.0-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libmpv-dev_0.32.0-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/mpv_0.32.0-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-dev_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libdvbv5-doc_1.20.0-2_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/dvb-tools_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4lconvert0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l2rds0_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-dev_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/libv4l-rkmpp_1.3.3-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libv4l/v4l-utils_1.20.0-2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/chromium/chromium-x11_91.0.4472.164_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libdrm-cursor/libdrm-cursor_1.3.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libdrm-cursor/libdrm-cursor-dev_1.3.0-1_arm64.deb" + + # The chromium using fixed pathes for libv4l2.so + chroot $SDCARD /bin/bash -c "ln -rsf /usr/lib/*/libv4l2.so /usr/lib/" + chroot $SDCARD /bin/bash -c "[ -e /usr/lib/aarch64-linux-gnu/ ] && ln -Tsf lib /usr/lib64" + + fi + + if [[ ${BOARD} =~ orangepi4|orangepi4-lts|orangepi800 && ${SELECTED_CONFIGURATION} == desktop && ${RELEASE} == focal ]]; then + + chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends libdrm-dev \ + ocl-icd-libopencl1 libgsm1 libshine3 libsnappy1v5 libx264-155 libx265-179 \ + libxvidcore4 libzvbi0 libbluray2 libchromaprint1 libgme0 libopenmpt0 libssh-gcrypt-4 \ + libass9 libbs2b0 libflite1 liblilv-0-0 libmysofa1 librubberband2 libvidstab1.1 \ + libzmq5 libdc1394-22 libopenal1 libsdl2-2.0-0 libsndio7.0 libxv1 libdvdnav4 \ + liblua5.2-0 libva-wayland2>/dev/null 2>&1" + + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga2_2.2.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/rga/librga-dev_2.2.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libmali/libmali-midgard-t86x-r18p0-x11_1.9-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-common_1.20.13-1ubuntu1~20.04.2_all.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-core_1.20.13-1ubuntu1~20.04.2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/xserver/xserver-xorg-legacy_1.20.13-1ubuntu1~20.04.2_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp1_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-mpp-dev_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/librockchip-vpu0_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpp/rockchip-mpp-demos_1.5.0-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/gst-rkmpp/gstreamer1.0-rockchip1_1.14-4_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libaom0_1.0.0.errata1-3_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libcodec2-0.9_0.9.2-4_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavutil56_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavutil-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libpostproc55_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libpostproc-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswresample3_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswresample-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswscale5_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libswscale-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavcodec58_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavcodec-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavformat58_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavformat-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavresample4_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavresample-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavfilter7_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavfilter-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavdevice58_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/libavdevice-dev_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/ffmpeg/ffmpeg_4.2.4-1ubuntu0.1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libmpv1_0.32.0-1ubuntu1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/libmpv-dev_0.32.0-1ubuntu1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/mpv/mpv_0.32.0-1ubuntu1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libdrm-cursor/libdrm-cursor_1.2.3-1_arm64.deb" + dpkg_install_deb_chroot "$EXTER/cache/sources/rk-rootfs-build-${RELEASE}/libdrm-cursor/libdrm-cursor-dev_1.2.3-1_arm64.deb" + + fi +} diff --git a/external/config/sources/families/include/rockchip64_common.inc b/external/config/sources/families/include/rockchip64_common.inc old mode 100755 new mode 100644 index 823c1b4..be4dec8 --- a/external/config/sources/families/include/rockchip64_common.inc +++ b/external/config/sources/families/include/rockchip64_common.inc @@ -1,3 +1,6 @@ +source "${BASH_SOURCE%/*}/rk3399_gpu_vpu.inc" + +enable_extension "rkbin-tools" ARCH=arm64 KERNEL_IMAGE_TYPE=Image OFFSET=30 @@ -11,13 +14,26 @@ GOVERNOR="ondemand" BOOTBRANCH="branch:v2020.10-rockchip64" PACKAGE_LIST_FAMILY="ethtool" PACKAGE_LIST_DESKTOP_FAMILY="fcitx fonts-wqy-zenhei" +PACKAGE_LIST_FAMILY_REMOVE="mpv firefox-esr" RKBIN_DIR="$EXTER/cache/sources/rkbin-tools" +if [ "$(uname -m)" = "aarch64" ]; then + case "$(lsb_release -sc)" in + "bookworm"|"bullseye"|"focal"|"jammy") + PKG_PREFIX="qemu-x86_64-static -L /usr/x86_64-linux-gnu " + ;; + *) + PKG_PREFIX="qemu-x86_64 -L /usr/x86_64-linux-gnu " + ;; + esac +else + PKG_PREFIX="" +fi if [[ $BOOTCONFIG == *3399* ]]; then CPUMIN=${CPUMIN:="408000"} - CPUMAX=${CPUMAX:="2016000"} + CPUMAX=${CPUMAX:="1800000"} else # rk3328 @@ -34,28 +50,12 @@ if [[ $BOARD =~ orangepir1plus|orangepir1plus-lts ]]; then MINILOADER_BLOB='rk33/rk322xh_miniloader_v2.50.bin' BL31_BLOB='rk33/rk322xh_bl31_v1.44.elf' -elif [[ $BOOTCONFIG == *3328* ]]; then - - BOOT_RK3328_USE_AYUFAN_ATF=yes - else ATFPATCHDIR='atf-rk3399' fi -case $BRANCH in - - current) - - KERNELPATCHDIR='rockchip64-'$BRANCH - KERNELBRANCH="branch:orange-pi-5.10-rockchip64" - LINUXFAMILY=rockchip64 - LINUXCONFIG='linux-rockchip64-'$BRANCH - - ;; -esac - prepare_boot_configuration() { @@ -81,28 +81,6 @@ prepare_boot_configuration() UBOOT_TARGET_MAP="u-boot-dtb.bin;;idbloader.bin uboot.img trust.bin" ATFSOURCE='' ATF_COMPILE='no' - - elif [[ $BOOT_RK3399_LEGACY_HYBRID == yes ]]; then # to be removed - - UBOOT_TARGET_MAP="BL31=$RKBIN_DIR/$BL31_BLOB u-boot-dtb.bin spl/u-boot-spl.bin u-boot.itb;;spl/u-boot-spl.bin u-boot.itb" - ATFSOURCE='' - ATF_COMPILE='no' - - legacy_uboot_locations - - elif [[ $BOOT_RK3328_USE_AYUFAN_ATF == yes ]]; then # to be removed - - UBOOT_TARGET_MAP=";;idbloader.bin uboot.img trust.bin" - ATFSOURCE='https://github.com/ayufan-rock64/arm-trusted-firmware' - ATF_COMPILER='aarch64-linux-gnu-' - ATFDIR='arm-trusted-firmware-rockchip64' - ATFBRANCH='branch:rockchip' - ATF_USE_GCC='> 6.3' - ATF_TARGET_MAP='PLAT=rk322xh DEBUG=1 bl31;;trust.bin' - ATF_TOOLCHAIN2="arm-linux-gnueabi-:> 5.0" - - legacy_uboot_locations - fi if [[ $BOOT_SUPPORT_SPI == yes ]]; then @@ -112,22 +90,6 @@ prepare_boot_configuration() fi } -legacy_uboot_locations() -{ - - BOOTSOURCE='https://github.com/ayufan-rock64/linux-u-boot' - BOOTDIR='u-boot-rockchip64' - BOOTBRANCH='branch:rockchip-master' - case $BRANCH in - legacy) - BOOTPATCHDIR="u-boot-rockchip64" - ;; - *) - BOOTPATCHDIR="u-boot-rockchip64-dev" - ;; - esac -} - uboot_custom_postprocess() { @@ -148,31 +110,21 @@ uboot_custom_postprocess() loaderimage --pack --uboot ./u-boot-dtb.bin uboot.img 0x200000 trust_merger --replace bl31.elf $RKBIN_DIR/$BL31_BLOB trust.ini - elif [[ $BOOT_RK3399_LEGACY_HYBRID == yes ]]; then - - # 3399 - tools/mkimage -n rk3399 -T rksd -d $EXTER/cache/sources/rkbin-tools/rk33/rk3399_ddr_933MHz_v1.13.bin rksd_loader.img - cat spl/u-boot-spl.bin >> rksd_loader.img - dd if=u-boot.itb of=rksd_loader.img seek=448 conv=notrunc - cp rksd_loader.img $EXTER/.tmp/$uboot_name/usr/lib/$uboot_name/$f_dst - tools/mkimage -n rk3399 -T rksd -d $EXTER/cache/sources/rkbin-tools/rk33/rk3399_ddr_933MHz_v1.13.bin rkspi_loader.img - cat spl/u-boot-spl.bin >> rkspi_loader.img - for i in `seq 1 128`; do dd count=4 status=none; dd if=/dev/zero count=4 status=none; done < rkspi_loader.img > rkspi_loader.tmp - mv rkspi_loader.tmp rkspi_loader.img - dd if=u-boot.itb of=rkspi_loader.img seek=1024 conv=notrunc - cp rkspi_loader.img $EXTER/.tmp/$uboot_name/usr/lib/$uboot_name/$f_dst - - elif [[ $BOOT_RK3328_USE_AYUFAN_ATF == yes ]]; then - - # 3328 - tools/mkimage -n rk3328 -T rksd -d $EXTER/cache/sources/rkbin-tools/rk33/rk3328_ddr_786MHz_v1.13.bin idbloader.bin - cat $EXTER/cache/sources/rkbin-tools/rk33/rk3328_miniloader_v2.46.bin >> idbloader.bin - loaderimage --pack --uboot ./u-boot-dtb.bin uboot.img 0x200000 - else echo "Unsupported u-boot processing configuration!" exit 1 fi + + if [[ ${MERGE_UBOOT} ]]; then + + display_alert "Merge u-boot" "u-boot-${BOARD}-merged.bin" "info" + + dd if=/dev/zero of=u-boot-${BOARD}-merged.bin bs=1M count=32 > /dev/null 2>&1 + dd if=idbloader.bin of=u-boot-${BOARD}-merged.bin seek=64 conv=notrunc status=none + dd if=uboot.img of=u-boot-${BOARD}-merged.bin seek=16384 conv=notrunc status=none + dd if=trust.bin of=u-boot-${BOARD}-merged.bin seek=24576 conv=notrunc status=none + mv u-boot-${BOARD}-merged.bin ${DEB_STORAGE}/u-boot/ + fi } write_uboot_platform() @@ -239,103 +191,29 @@ atf_custom_postprocess() trust_merger trust.ini } - family_tweaks() { # execute specific tweaks function if present [[ $(type -t family_tweaks_s) == function ]] && family_tweaks_s - if [[ $BOARD == orangepi4 && $BRANCH == legacy ]]; then + rk3399_gpu_vpu_tweaks - # Gstreamer library - GST_DIR="$EXTER/cache/sources/rk3399_gst_xserver_libs/gstreamer" - [[ ! -d "${SDCARD}"/usr/libexec ]] && mkdir -p "${SDCARD}"/usr/libexec + if [[ ${BOARD} == orangepi800 && ${SELECTED_CONFIGURATION} == desktop && ${RELEASE} =~ bullseye|bookworm ]]; then - if [[ $RELEASE != buster ]]; then + install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb" + install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb" + install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb" + install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb" + install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb" + install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb" - cp ${GST_DIR}/${RELEASE}_build/etc/iqfiles ${SDCARD}/etc/ -rfa - cp ${GST_DIR}/${RELEASE}_build/usr/bin/* ${SDCARD}/usr/bin/ -rfa - cp ${GST_DIR}/${RELEASE}_build/usr/include/* ${SDCARD}/usr/include/ -rfa - cp ${GST_DIR}/${RELEASE}_build/usr/lib/* ${SDCARD}/usr/lib/ -rfa - cp ${GST_DIR}/${RELEASE}_build/usr/share/* ${SDCARD}/usr/share/ -rfa - cp ${GST_DIR}/overlay/etc/udev/rules.d/* ${SDCARD}/etc/udev/rules.d/ -rfa - cp ${GST_DIR}/overlay/usr/local/bin/* ${SDCARD}/usr/local/bin/ -rfa - - XSERVER_DIR="$EXTER/cache/sources/rk3399_gst_xserver_libs/xserver" - cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/bin/* ${SDCARD}/usr/bin/ -rfa - cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/include/* ${SDCARD}/usr/include/ -rfa - cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/lib/* ${SDCARD}/usr/lib/ -rfa - cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/share/* ${SDCARD}/usr/share/ -rfa - cp ${XSERVER_DIR}/xserver_for_${RELEASE}/usr/libexec/* ${SDCARD}/usr/libexec/ -rfa - - fi - - if [[ $RELEASE == bionic ]]; then - - cp ${GST_DIR}/${RELEASE}_build/usr/lib/gstreamer-1.0/* ${SDCARD}/usr/lib/aarch64-linux-gnu/gstreamer-1.0/ -rfa - - #Mali GPU library - install_deb_chroot "$EXTER/cache/debs/rk3399/libmali-rk-midgard-t86x-r14p0-r0p0_1.6-1-1armbian3_arm64.deb" - - elif [[ $RELEASE == xenial ]]; then - - # Mail GPU library - sed 's/^#\(deb-src\)/\1/' -i ${SDCARD}/etc/apt/sources.list - chroot $SDCARD /bin/bash -c "apt-get -q update >/dev/null 2>&1" - chroot $SDCARD /bin/bash -c "apt-get -y build-dep xserver-xorg-core >/dev/null 2>&1" - chroot $SDCARD /bin/bash -c "apt-get remove -y --purge libegl1-mesa-dev:arm64 libgbm-dev:arm64 >/dev/null 2>&1" - chroot $SDCARD /bin/bash -c "apt-get install -q -y --no-install-recommends libxcb-xkb-dev libxfont-dev wayland-protocols >/dev/null 2>&1" - install_deb_chroot "$EXTER/cache/debs/rk3399/libmali-rk-dev_1.6-2_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/libmali-rk-midgard-t86x-r14p0_1.6-2_arm64.deb" - rm -rf ${SDCARD}/usr/lib/aarch64-linux-gnu/mesa-egl - - # Gstreamer - cp ${GST_DIR}/others/gstreamer/usr/bin/* ${SDCARD}/usr/bin/ -rfa - cp ${GST_DIR}/others/gstreamer/usr/include/* ${SDCARD}/usr/include/ -rfa - cp ${GST_DIR}/others/gstreamer/usr/lib/* ${SDCARD}/usr/lib/ -rfa - cp ${GST_DIR}/others/gstreamer/usr/libexec/* ${SDCARD}/usr/libexec/ -rfa - cp ${GST_DIR}/others/gstreamer/usr/local/* ${SDCARD}/usr/local/ -rfa - cp ${GST_DIR}/others/gstreamer/usr/share/* ${SDCARD}/usr/share/ -rfa - - elif [[ $RELEASE == buster ]]; then - - #Multimedia Framework - chroot $SDCARD /bin/bash -c "apt-get -q update >/dev/null 2>&1" - chroot $SDCARD /bin/bash -c "apt-get remove -y --purge xserver-xorg-core mpv >/dev/null 2>&1" - chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad \ - qtgstreamer-plugins-qt5 qtmultimedia5-examples mesa-utils fonts-liberation python-bluez python-lightblue python-pil \ - python-simplejson libshairplay0 libaacs0 libcec4 libfstrcmp0 libiso9660-11 liblirc-client0 libmariadb3 libmicrohttpd12 \ - libpcrecpp0v5 libdav1d4 libssh-4 libtag1v5 gstreamer1.0-plugins-good liblua5.2-0 librubberband2 gstreamer1.0-libav \ - gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 \ - gstreamer1.0-pulseaudio >/dev/null 2>&1" - - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/libmali-rk-midgard-t86x-r14p0-r0p0_1.6-1-1armbian3_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/librga2_2.0.0-1_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/librockchip-mpp1_1.4.0-3armbian3_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/librockchip-vpu0_1.4.0-3armbian3_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/xserver-xorg-core-rockchip_1.20.3-3armbian1_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/gl4es_1.1.5-0armbian1_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/gstreamer1.0-rockchip1_2%3a1.10-0armbian1_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/gstreamer1.0-rockchip1-extra_3%3a20180115-3armbian1_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/kodi-rk-bin_2%3a18.9-final-18.9buster0armbian3_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/kodi-rk_2%3a18.9-final-18.9buster0armbian3_all.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/mpv-legacy_2%3a2020.12.08.df805cfc84_arm64.deb" - install_deb_chroot "$EXTER/cache/debs/rk3399/buster_media/media-buster-legacy-rk3399_20.11.4_arm64.deb" - - chroot $SDCARD /bin/bash -c "apt install -q -y --no-install-recommends xserver-xorg xserver-xorg-video-fbdev xserver-xorg-input-all \ - xserver-xorg-input-libinput >/dev/null 2>&1" - - cp ${GST_DIR}/${RELEASE}_build/etc/iqfiles ${SDCARD}/etc/ -rfa - cp ${GST_DIR}/${RELEASE}_build/usr/lib/* ${SDCARD}/usr/lib/ -rfa - cp ${GST_DIR}/overlay/etc/udev/rules.d/* ${SDCARD}/etc/udev/rules.d/ -rfa - cp ${GST_DIR}/overlay/usr/local/bin/* ${SDCARD}/usr/local/bin/ -rfa - - fi + ## Orange Pi Desktop layout switcher + install_deb_chroot "$EXTER/cache/debs/arm64/layout_switcher/layoutswitcher_0.2-0_all.deb" + #install_deb_chroot "$EXTER/cache/debs/arm64/layout_switcher/switcher_1.0-1_arm64.deb" fi - if [[ $BOARD =~ orangepir1plus|orangepir1plus-lts ]]; then - + if [[ $BOARD =~ orangepir1plus|orangepir1plus-lts ]]; then # rename USB based network to lan0 mkdir -p $SDCARD/etc/udev/rules.d/ @@ -354,6 +232,8 @@ family_tweaks() chroot $SDCARD /bin/bash -c "apt-get -y -qq install rfkill bluetooth bluez bluez-tools >/dev/null 2>&1" chroot $SDCARD /bin/bash -c "systemctl --no-reload enable rk3399-bluetooth.service >/dev/null 2>&1" fi + + rm $SDCARD/root/*.deb >/dev/null 2>&1 } @@ -371,7 +251,7 @@ family_tweaks_bsp() EOF fi - if [[ ${BOARD} == orangepi4 ]]; then + if [[ ${BOARD} == orangepi4 && $BRANCH == legacy ]]; then # Bluetooth for most of others (custom patchram is needed only in legacy) install -m 755 $EXTER/packages/bsp/rk3399/brcm_patchram_plus_rk3399 $destination/usr/bin diff --git a/external/config/sources/families/include/sunxi64_common.inc b/external/config/sources/families/include/sunxi64_common.inc old mode 100755 new mode 100644 index 118bbf6..f128968 --- a/external/config/sources/families/include/sunxi64_common.inc +++ b/external/config/sources/families/include/sunxi64_common.inc @@ -8,6 +8,8 @@ BOOTSCRIPT='boot-sun50i-next.cmd:boot.cmd' LINUXFAMILY=sunxi64 PACKAGE_LIST_DESKTOP_FAMILY="fcitx fonts-wqy-zenhei" +#PACKAGE_LIST_FAMILY_REMOVE="mpv" + case $BRANCH in current) @@ -24,6 +26,17 @@ family_tweaks() # execute specific tweaks function if present [[ $(type -t family_tweaks_s) == function ]] && family_tweaks_s #cp $SRC/packages/blobs/splash/orangepi-u-boot-24.bmp $SDCARD/boot/boot.bmp + + #if [[ $BOARD == orangepizero2 ]]; then + + # install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb" + # install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb" + # install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb" + # install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb" + # install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb" + # install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb" + # #install_deb_chroot "$EXTER/cache/debs/extra/bullseye-desktop/scratch-desktop_3.26.0_arm64.deb" + #fi } write_uboot_platform() diff --git a/external/config/sources/families/rk3399.conf b/external/config/sources/families/rk3399.conf index 87944ef..9207f1a 100755 --- a/external/config/sources/families/rk3399.conf +++ b/external/config/sources/families/rk3399.conf @@ -11,11 +11,17 @@ case $BRANCH in legacy) + BOOTBRANCH="branch:v2020.10-rockchip64" KERNELBRANCH='branch:orange-pi-4.4-rockchip64' + #KERNELBRANCH='branch:orange-pi-4.4-rk3399' + #LINUXCONFIG=linux-rk3399-new-legacy KERNEL_USE_GCC='> 7.0' KERNEL_COMPILER='aarch64-linux-gnu-' + + [[ ${BOARD} == orangepi800 ]] && ASOUND_STATE='asound.state.orangepi800-es8316' + [[ ${BOARD} == orangepi4-lts ]] && ASOUND_STATE='asound.state.orangepi4-es8316' - if [[ $RELEASE == xenial ]]; then + if [[ $RELEASE == xenial && $BUILD_DESKTOP == yes ]]; then PACKAGE_LIST_FAMILY="bison flex libffi-dev libmount-dev libpcre3 libpcre3-dev zlib1g-dev libssl-dev gtk-doc-tools \ automake autoconf libtool gettext make autopoint g++ xz-utils net-tools libasound2-dev \ libx11-dev unzip libxext-dev libjpeg62-dev gdisk librtmp-dev libxv-dev libpulse-dev libgl1-mesa-dev libgles2-mesa \ @@ -24,7 +30,7 @@ case $BRANCH in PACKAGE_LIST_FAMILY_REMOVE="gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-pulseaudio \ gstreamer1.0-plugins-ugly-amr libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgstreamer1.0-0" - elif [[ $RELEASE == bionic ]]; then + elif [[ $RELEASE == bionic && $BUILD_DESKTOP == yes ]]; then PACKAGE_LIST_FAMILY="bison flex libffi-dev libmount-dev libpcre3 libpcre3-dev zlib1g-dev libssl-dev gtk-doc-tools \ automake autoconf libtool gettext make autopoint g++ xz-utils net-tools unzip cmake make libglib2.0-dev \ xutils-dev libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ @@ -37,12 +43,16 @@ case $BRANCH in current) - KERNELBRANCH='branch:orange-pi-5.4-rockchip64' - + BOOTBRANCH="branch:v2020.10-rockchip64" + KERNELBRANCH='branch:orange-pi-5.10-rk3399' + LINUXCONFIG='linux-5.10-rk3399' + #KERNELBRANCH='branch:orange-pi-5.13-rockchip64' + #LINUXCONFIG='linux-5.13-rockchip64' + [[ ${BOARD} == orangepi4-lts ]] && ASOUND_STATE='asound.state.orangepi4-es8316' ;; esac -if [[ $BOARD == orangepi4 ]]; then +if [[ $BOARD =~ orangepi4|orangepi4-lts|orangepi800 ]]; then BOOT_USE_BLOBS=yes DDR_BLOB='rk33/rk3399_ddr_933MHz_v1.24.bin' @@ -60,7 +70,22 @@ fi family_tweaks_s() { - : + + if [[ -f ${SDCARD}/etc/pulse/default.pa && ${BOARD} == orangepi800 ]]; then + + sed -i "s/auto-profiles = yes/auto-profiles = no/" ${SDCARD}/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf + + echo "load-module module-alsa-sink device=hw:0,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa + echo "load-module module-alsa-sink device=hw:1,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Headphone or Speaker'\"" >> ${SDCARD}/etc/pulse/default.pa + + elif [[ -f ${SDCARD}/etc/pulse/default.pa && ${BOARD} == orangepi4-lts ]]; then + + sed -i "s/auto-profiles = yes/auto-profiles = no/" ${SDCARD}/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf + + echo "load-module module-alsa-sink device=hw:1,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa + echo "load-module module-alsa-sink device=hw:0,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Headphone'\"" >> ${SDCARD}/etc/pulse/default.pa + + fi } prepare_boot_configuration diff --git a/external/config/sources/families/sun50iw6.conf b/external/config/sources/families/sun50iw6.conf index 052a041..ca31a96 100644 --- a/external/config/sources/families/sun50iw6.conf +++ b/external/config/sources/families/sun50iw6.conf @@ -6,36 +6,38 @@ OVERLAY_PREFIX='sun50i-h6' GOVERNOR=ondemand ASOUND_STATE='asound.state.sun50iw2-current' -case $BRANCH in - legacy) +LINUXFAMILY=sun50iw6 +case $BRANCH in + + legacy) LINUXFAMILY=sun50iw6 - KERNELBRANCH="branch:orange-pi-4.9-sun50iw6" - KERNELPATCHDIR=${BOARDFAMILY}-${BRANCH} + KERNELBRANCH="branch:orange-pi-4.9-sun50iw6" + KERNELPATCHDIR=${BOARDFAMILY}-${BRANCH} BOOTCONFIG="sun50iw6p1_config" - BOOTBRANCH='branch:v2014.07-sun50iw6-linux4.9' - UBOOT_TARGET_MAP=';;u-boot.bin:u-boot.fex + BOOTBRANCH='branch:v2014.07-sun50iw6-linux4.9' + UBOOT_TARGET_MAP=';;u-boot.bin:u-boot.fex spl;;boot0_sdcard.bin:boot0_sdcard.fex' - UBOOT_COMPILER="arm-linux-gnueabi-" - UBOOT_USE_GCC='> 4.0' - BOOTENV_FILE=sun50iw6-default.txt - BOOTSCRIPT='boot-sun50iw6-legacy.cmd:boot.cmd' - PACK_UBOOT="yes" - OFFSET=20 - ATFSOURCE="" - ATF_COMPILE="no" - INITRD_ARCH=arm + UBOOT_COMPILER="arm-linux-gnueabi-" + UBOOT_USE_GCC='> 4.0' + BOOTENV_FILE=sun50iw6-default.txt + BOOTSCRIPT='boot-sun50iw6-legacy.cmd:boot.cmd' + PACK_UBOOT="yes" + OFFSET=20 + ATFSOURCE="" + ATF_COMPILE="no" + INITRD_ARCH=arm ASOUND_STATE='asound.state.sun50iw6-legacy' BOOT_FDT_FILE=sunxi/sun50i-h6-orangepi-${BOARD:8}.dtb - ;; + ;; current) if [[ ${BOARD} == orangepi3-lts ]]; then - KERNELBRANCH="branch:orange-pi-5.10" - LINUXCONFIG=linux-5.10-sunxi64-current + KERNELBRANCH="branch:orange-pi-5.10" + LINUXCONFIG=linux-5.10-sunxi64-current fi ;; esac @@ -58,16 +60,6 @@ family_tweaks_s() chroot $SDCARD /bin/bash -c "systemctl --no-reload enable ap6255-bluetooth.service >/dev/null 2>&1" [[ $BRANCH == legacy ]] && chroot $SDCARD /bin/bash -c "systemctl --no-reload enable ap6255-wifi.service >/dev/null 2>&1" fi - - #if [[ $BUILD_DESKTOP == yes ]]; then - - # sed -i "s/auto-profiles = yes/auto-profiles = no/" ${SDCARD}/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf - - # if [[ $BRANCH == legacy ]]; then - # echo "load-module module-alsa-sink device=hw:1,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Audio Codec'\"" >> ${SDCARD}/etc/pulse/default.pa - # echo "load-module module-alsa-sink device=hw:0,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa - # fi - #fi } family_tweaks_bsp() @@ -86,6 +78,4 @@ family_tweaks_bsp() cp $EXTER/packages/bsp/sunxi/ap6255-bluetooth.service $destination/lib/systemd/system/ [[ $BRANCH == legacy ]] && cp $EXTER/packages/bsp/sunxi/ap6255-wifi.service $destination/lib/systemd/system/ fi - - install -m 755 $EXTER/packages/blobs/bt/hciattach/hciattach_opi_${ARCH} $destination/usr/bin/hciattach_opi } diff --git a/external/config/sources/families/sun50iw9.conf b/external/config/sources/families/sun50iw9.conf old mode 100755 new mode 100644 index 1bda631..28448e2 --- a/external/config/sources/families/sun50iw9.conf +++ b/external/config/sources/families/sun50iw9.conf @@ -22,7 +22,9 @@ case $BRANCH in ATFSOURCE="" ATF_COMPILE="no" INITRD_ARCH=arm - ASOUND_STATE='asound.state.sun50iw9-legacy' + [[ ${BOARD} =~ orangepizero2|orangepizero2-b|orangepizero2-lts ]] && ASOUND_STATE='asound.state.sun50iw9-legacy' + [[ ${BOARD} == orangepi400 ]] && ASOUND_STATE='asound.state.orangepi400-es8316' + ;; current) @@ -67,8 +69,7 @@ family_tweaks_s() family_tweaks_bsp() { - - install -m 755 $EXTER/packages/blobs/bt/hciattach/hciattach_opi_${ARCH} $destination/usr/bin/hciattach_opi + : } uboot_custom_postprocess() diff --git a/external/config/targets-cli-beta.conf b/external/config/targets-cli-beta.conf new file mode 100755 index 0000000..221e7b2 --- /dev/null +++ b/external/config/targets-cli-beta.conf @@ -0,0 +1,305 @@ +#################################################################################################################### +# board branch release desktop|cli|minimal stable|beta create images # +#################################################################################################################### + +# Bananapi M1 / M1+ A20 +bananapi edge hirsute cli beta yes + + +# Bananapi Pro A20 +bananapipro edge hirsute cli beta yes + + +# Bananapi M2+ H3 +bananapim2plus edge hirsute cli beta yes + + +# Helios64 +helios64 edge hirsute cli beta yes + + +# Cubietruck +cubietruck edge hirsute cli beta yes + + +# Espressobin +espressobin edge hirsute cli beta yes + + +# Jetson Nano +jetson-nano edge hirsute cli beta yes + + +# Khadas Vim1 +khadas-vim1 current hirsute cli beta yes + + +# Khadas Vim2 +khadas-vim2 current hirsute cli beta yes + + +# Khadas Vim3 +khadas-vim3 current hirsute cli beta yes + + +# Khadas Vim3l +khadas-vim3l current hirsute cli beta yes + + +# Khadas Edge +khadas-edge edge hirsute cli beta yes + + +# Lepotato +lepotato edge hirsute cli beta yes + + +# Olimex Lime2 +lime2 edge hirsute cli beta yes + + +# Olimex Lime A64 +lime-a64 edge hirsute cli beta yes + + +# nanopct4 +nanopct4 edge hirsute cli beta yes + + +# nanopi-r1 +nanopi-r1 edge hirsute cli beta yes + + +# nanopi-r2s +nanopi-r2s edge hirsute cli beta yes + + +# nanopi-r4s +nanopi-r4s edge hirsute cli beta yes + + +# nanopiair +nanopiair edge hirsute cli beta yes + + +# nanopiduo2 +nanopiduo2 edge hirsute cli beta yes + + +# nanopik1plus +nanopik1plus edge hirsute cli beta yes + + +# nanopik2-905 +nanopik2-s905 edge hirsute cli beta yes + + +# nanopim4 +nanopim4 edge hirsute cli beta yes + + +# nanopim4v2 +nanopim4v2 edge hirsute cli beta yes + + +# nanopineo +nanopineo edge hirsute cli beta yes + + +# nanopineocore2 +nanopineo2 edge hirsute cli beta yes + + +# nanopineo2black +nanopineo2black edge hirsute cli beta yes + + +# nanopineo3 +nanopineo3 edge hirsute cli beta yes + + +# nanopineo4 +nanopineo4 edge hirsute cli beta yes + + +# nanopineocore2 +nanopineocore2 edge hirsute cli beta yes + + +# Odroid C2 +odroidc2 edge hirsute cli beta yes + + +# Odroid N2 / N2+ +odroidn2 edge hirsute cli beta yes + + +# Odroid C4 +odroidc4 edge hirsute cli beta yes + + +# Odroid HC4 +odroidhc4 edge hirsute cli beta yes + + +# Odroid XU4 +odroidxu4 edge hirsute cli beta yes + + +# orangepi2 +orangepi2 edge hirsute cli beta yes + + +# orangepi 3 +orangepi3 edge hirsute cli beta yes + + +# Orangepi 4 +orangepi4 edge hirsute cli beta yes + + +# Orangepi R1 +orangepi-r1 edge hirsute cli beta yes + + +# Orangepi R1+ +orangepi-r1plus edge hirsute cli beta yes + + +# orangepilite +orangepilite edge hirsute cli beta yes + + +# orangepilite2 +orangepilite2 edge hirsute cli beta yes + + +# orangepioneplus +orangepioneplus edge hirsute cli beta yes + + +# orangepione +orangepione edge hirsute cli beta yes + + +# orangepipc +orangepipc edge hirsute cli beta yes + + +# orangepipc2 +orangepipc2 edge hirsute cli beta yes + + +# orangepipcplus +orangepipcplus edge hirsute cli beta yes + + +# orangepiplus +orangepiplus edge hirsute cli beta yes + + +# orangepiplus2e +orangepiplus2e edge hirsute cli beta yes + + +# Orangepi Prime +orangepiprime edge hirsute cli beta yes + + +# Orangepi Win +orangepiwin edge hirsute cli beta yes + + +# orangepizero +orangepizero edge hirsute cli beta yes + + +# orangepizero2 +orangepizero2 edge hirsute cli beta yes + + +# orangepizeroplus +orangepizeroplus edge hirsute cli beta yes + + +# orangepizeroplus2-h3 +orangepizeroplus2-h3 edge hirsute cli beta yes + + +# orangepizeroplus2-h5 +orangepizeroplus2-h5 edge hirsute cli beta yes + + +# Pine64 +pine64 edge hirsute cli beta yes + + +# Pine64so +pine64so edge hirsute cli beta yes + + +# rk322x-box +rk322x-box edge hirsute cli beta yes + + +# Rock64 +rock64 edge hirsute cli beta yes + + +# Rockpi 4a +rockpi-4a edge hirsute cli beta yes + + +# Rockpi 4b +rockpi-4b edge hirsute cli beta yes + + +# Rockpi 4c +rockpi-4c edge hirsute cli beta yes + + +# Rockpi S +rockpi-s edge hirsute minimal beta yes + + +# Rockpi E +rockpi-e edge hirsute cli beta yes + + +# Rock64pro +rockpro64 edge hirsute cli beta yes + + +# Tinkerboard +tinkerboard edge hirsute cli beta yes + + +# Station M1 +station-m1 current hirsute cli beta no +station-m1 edge hirsute cli beta no + + +# Station P1 +station-p1 current hirsute cli beta no +station-p1 edge hirsute cli beta no + + +# Tinkerboard 2 +tinkerboard-2 current hirsute cli beta yes +tinkerboard-2 edge hirsute cli beta yes + + +# tritium-h3 +tritium-h3 edge hirsute cli beta yes + + +# tritium-h5 +tritium-h5 edge hirsute cli beta yes + + +# zeropi +zeropi edge hirsute cli beta yes + + +# Virtual qemu +virtual-qemu current hirsute cli beta yes diff --git a/external/config/targets-desktop-beta.conf b/external/config/targets-desktop-beta.conf new file mode 100755 index 0000000..b59b1e4 --- /dev/null +++ b/external/config/targets-desktop-beta.conf @@ -0,0 +1,76 @@ +########################################################################################################################################################### +# board branch release desktop|cli|minimal stable|beta create images DE DE config Comma delimited app groups # +########################################################################################################################################################### + +# Lepotato +lepotato edge hirsute desktop beta yes cinnamon config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# nanopct4 +nanopct4 edge hirsute desktop beta yes budgie config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# nanopim4v2 +nanopim4v2 edge hirsute desktop beta yes xfce config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# Odroid C2 +odroidc2 edge hirsute desktop beta yes xfce config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# Odroid N2 +odroidn2 edge hirsute desktop beta yes cinnamon config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop +odroidn2 edge hirsute desktop beta yes xfce config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# Odroid C4 +odroidc4 current focal desktop beta yes budgie config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop +odroidc4 current focal desktop beta yes cinnamon config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# orangepi 3 +orangepi3 current focal desktop beta yes xfce config_base 3dsupport,browsers + + +# Orangepi 4 +orangepi4 current focal desktop beta yes xfce config_base 3dsupport,browsers + + +# orangepipc2 +orangepipc2 current focal desktop beta yes xfce config_base 3dsupport,browsers + + +# Pinebook A64 +pinebook-a64 edge hirsute desktop beta yes xfce config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# Pinebook PRO +pinebook-pro edge hirsute desktop beta yes budgie config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop +pinebook-pro edge hirsute desktop beta yes cinnamon config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop +pinebook-pro edge hirsute desktop beta yes xfce config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# qemu virtual images +virtual-qemu current focal desktop beta yes budgie config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop +virtual-qemu current focal desktop beta yes cinnamon config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop +virtual-qemu current focal desktop beta yes xfce config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# Rockpi 4a +rockpi-4a current focal desktop beta yes xfce config_base 3dsupport,browsers + + +# Rockpi 4b +rockpi-4b current focal desktop beta yes xfce config_base 3dsupport,browsers + + +# Rockpi 4c +rockpi-4c current focal desktop beta yes xfce config_base 3dsupport,browsers + + +#tinkerboard 2 +tinkerboard-2 current hirsute desktop beta yes cinnamon config_base 3dsupport,browsers,chat,desktop_tools,editors,email,internet,multimedia,office,programming,remote_desktop + + +# tritium-h5 +tritium-h5 current focal desktop beta yes xfce config_base 3dsupport,browsers diff --git a/external/config/targets.conf b/external/config/targets.conf index 4766279..66ebd93 100644 --- a/external/config/targets.conf +++ b/external/config/targets.conf @@ -449,14 +449,3 @@ orangepir1plus current focal cli orangepir1plus current buster minimal stable yes orangepir1plus current bionic minimal stable yes orangepir1plus current focal minimal stable yes - -# orangepir1plus-lts - -orangepir1plus-lts current buster cli stable yes -orangepir1plus-lts current bionic cli stable yes -orangepir1plus-lts current focal cli stable yes - -orangepir1plus-lts current buster minimal stable yes -orangepir1plus-lts current bionic minimal stable yes -orangepir1plus-lts current focal minimal stable yes - diff --git a/external/config/templates/Dockerfile b/external/config/templates/Dockerfile index 0e339c2..daaff53 100644 --- a/external/config/templates/Dockerfile +++ b/external/config/templates/Dockerfile @@ -1,18 +1,30 @@ -FROM ubuntu:20.04 +FROM ubuntu:21.04 ARG DEBIAN_FRONTEND=noninteractive -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ +RUN apt-get update && apt-get -y install \ + joe \ + software-properties-common \ gnupg \ gnupg1 \ gpgv1 \ + curl \ && rm -rf /var/lib/apt/lists/* -RUN sh -c "if [ x"" != x$http_proxy ]; then \ - apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --keyserver-options http-proxy=$http_proxy --recv-keys ED75B5A4483DA07C >/dev/null 2>&1; \ - else \ - apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys ED75B5A4483DA07C >/dev/null 2>&1; \ - fi" -RUN echo "deb http://repo.aptly.info/ nightly main" > /etc/apt/sources.list.d/aptly.list -RUN dpkg --add-architecture i386 +RUN sh -c " \ + if [ $(dpkg --print-architecture) = amd64 ]; then \ + if [ x'' != x$http_proxy ]; then \ + curl -fsSL -x $http_proxy https://www.aptly.info/pubkey.txt | apt-key add - >/dev/null 2>&1; \ + else \ + curl -fsSL https://www.aptly.info/pubkey.txt | apt-key add - >/dev/null 2>&1; \ + fi; \ + echo \"deb http://repo.aptly.info/ nightly main\" > /etc/apt/sources.list.d/aptly.list; \ + dpkg --add-architecture i386 \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + lib32ncurses6 \ + lib32stdc++6 \ + lib32tinfo6 \ + libc6-i386 \ + zlib1g:i386; \ + fi" RUN apt-get update \ && apt-get -y upgrade \ && apt-get install -y --no-install-recommends \ @@ -30,28 +42,31 @@ RUN apt-get update \ cpio \ cryptsetup \ cryptsetup-bin \ - curl \ debian-archive-keyring \ debian-keyring \ debootstrap \ device-tree-compiler \ dialog \ + distcc \ dosfstools \ + dwarves \ f2fs-tools \ fakeroot \ flex \ g++-8-arm-linux-gnueabihf \ gawk \ gcc-arm-linux-gnueabihf \ + gcc-arm-linux-gnueabi \ + gcc-arm-none-eabi \ + gdisk \ git \ imagemagick \ + jq \ kmod \ - lib32ncurses6 \ - lib32stdc++6 \ - lib32tinfo6 \ libbison-dev \ + libc6-amd64-cross \ libc6-dev-armhf-cross \ - libc6-i386 \ + libfdt-dev libelf-dev \ libfile-fcntllock-perl \ libfl-dev \ liblz4-tool \ @@ -68,6 +83,7 @@ RUN apt-get update \ ncurses-term \ nfs-kernel-server \ ntpdate \ + openssh-client \ p7zip-full \ parted \ patchutils \ @@ -80,21 +96,28 @@ RUN apt-get update \ python3 \ python3-dev \ python3-distutils \ + python3-pkg-resources \ + python3-setuptools \ + qemu \ + qemu-utils \ qemu-user-static \ rsync \ swig \ + sudo \ systemd-container \ tzdata \ u-boot-tools \ udev \ unzip \ + uuid \ uuid-dev \ + uuid-runtime \ wget \ whiptail \ + xfsprogs \ xxd \ zip \ zlib1g-dev \ - zlib1g:i386 \ && rm -rf /var/lib/apt/lists/* RUN locale-gen en_US.UTF-8 @@ -104,4 +127,4 @@ RUN sed -i 's/\(^STATDOPTS=\).*/\1"--port 32765 --outgoing-port 32766"/' /etc/de ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' TERM=screen WORKDIR /root/orangepi -ENTRYPOINT [ "/bin/bash", "/root/orangepi/compile.sh" ] +ENTRYPOINT [ "/bin/bash", "/root/orangepi/build.sh" ] diff --git a/external/config/templates/Vagrantfile b/external/config/templates/Vagrantfile index 31fe56f..8df7718 100644 --- a/external/config/templates/Vagrantfile +++ b/external/config/templates/Vagrantfile @@ -15,7 +15,7 @@ SCRIPT Vagrant.configure(2) do |config| # What box should we base this build on? - config.vm.box = "ubuntu/bionic64" + config.vm.box = "ubuntu/focal64" config.vm.box_version = ">= 20180719.0.0" # Default images are not big enough to build Armbian. diff --git a/external/config/templates/config-docker.conf b/external/config/templates/config-docker.conf index 945b6de..d41a522 100644 --- a/external/config/templates/config-docker.conf +++ b/external/config/templates/config-docker.conf @@ -43,7 +43,7 @@ DOCKER_FLAGS+=(--security-opt=apparmor:unconfined) # remove resulting container after exit to minimize clutter # bad side effect - named volumes are considered not attached to anything and are removed on "docker volume prune" -#DOCKER_FLAGS+=(--rm) +DOCKER_FLAGS+=(--rm) # pass through loop devices for d in /dev/loop*; do @@ -106,10 +106,10 @@ If you prefer to use profile, for example, `userpatches/config-my.conf`, try: ./compile.sh my compile_uboot EOF - docker run "${DOCKER_FLAGS[@]}" -it --rm --entrypoint /usr/bin/env armbian:$VERSION "$@" /bin/bash + docker run "${DOCKER_FLAGS[@]}" -it --entrypoint /usr/bin/env armbian:$VERSION "$@" /bin/bash else display_alert "Running the container" "" "info" - docker run "${DOCKER_FLAGS[@]}" -it --rm armbian:$VERSION "$@" + docker run "${DOCKER_FLAGS[@]}" -it armbian:$VERSION "$@" fi # Docker error treatment diff --git a/external/config/templates/config-example.conf b/external/config/templates/config-example.conf index df8e094..74bdee1 100644 --- a/external/config/templates/config-example.conf +++ b/external/config/templates/config-example.conf @@ -1,17 +1,18 @@ -KERNEL_CONFIGURE="yes" # leave empty to select each time, set to "yes" or "no" to skip dialog prompt -CLEAN_LEVEL="debs,oldcache" # comma-separated list of clean targets: "make" = make clean for selected kernel and u-boot, - # "debs" = delete packages in "./output/debs" for current branch and family, - # "alldebs" = delete all packages in "./output/debs", "images" = delete "./output/images", - # "cache" = delete "./output/cache", "sources" = delete "./sources" - # "oldcache" = remove old cached rootfs except for the newest 8 files +KERNEL_CONFIGURE="" # leave empty to select each time, set to "yes" or "no" to skip dialog prompt +CLEAN_LEVEL="debs,oldcache" # comma-separated list of clean targets: "make" = make clean for selected kernel and u-boot, + # "debs" = delete packages in "./output/debs" for current branch and family, + # "alldebs" = delete all packages in "./output/debs", "images" = delete "./output/images", + # "cache" = delete "./output/cache", "sources" = delete "./sources" + # "oldcache" = remove old cached rootfs except for the newest 8 files -DEST_LANG="en_US.UTF-8" # sl_SI.UTF-8, en_US.UTF-8 +DEST_LANG="en_US.UTF-8" # sl_SI.UTF-8, en_US.UTF-8 # advanced -EXTERNAL_NEW="prebuilt" # compile and install or install prebuilt additional packages -INSTALL_HEADERS="" # install kernel headers package -LIB_TAG="master" # change to "branchname" to use any branch currently available. -DOWNLOAD_MIRROR="china" # set to "china" to use mirrors.tuna.tsinghua.edu.cn +EXTERNAL_NEW="prebuilt" # compile and install or install prebuilt additional packages +INSTALL_HEADERS="" # install kernel headers package +LIB_TAG="master" # change to "branchname" to use any branch currently available. +USE_TORRENT="yes" # use torrent network for faster toolchain and cache download +DOWNLOAD_MIRROR="china" # set to "china" to use mirrors.tuna.tsinghua.edu.cn BOARD="" BRANCH="" diff --git a/external/config/templates/customize-image.sh.template b/external/config/templates/customize-image.sh.template index e018a82..13ec4f1 100644 --- a/external/config/templates/customize-image.sh.template +++ b/external/config/templates/customize-image.sh.template @@ -10,6 +10,7 @@ # NOTE: If you want to transfer files between chroot and host # userpatches/overlay directory on host is bind-mounted to /tmp/overlay in chroot +# The sd card's root path is accessible via $SDCARD variable. RELEASE=$1 LINUXFAMILY=$2 @@ -28,9 +29,15 @@ Main() { buster) # your code here ;; + bullseye) + # your code here + ;; bionic) # your code here ;; + focal) + # your code here + ;; esac } # Main @@ -43,6 +50,10 @@ InstallOpenMediaVault() { # policies since you end up with root password 'openmediavault' which # you have to change yourself later. SSH login as root has to be enabled # through OMV web UI first + # + # This routine is based on idea/code courtesy Benny Stark. For fixes, + # discussion and feature requests please refer to + # https://forum.armbian.com/index.php?/topic/2644-openmediavault-3x-customize-imagesh/ echo root:openmediavault | chpasswd rm /root/.not_logged_in_yet @@ -222,7 +233,7 @@ UnattendedStorageBenchmark() { InstallAdvancedDesktop() { - apt install -yy transmission libreoffice libreoffice-style-tango meld remmina thunderbird kazam avahi-daemon + apt-get install -yy transmission libreoffice libreoffice-style-tango meld remmina thunderbird kazam avahi-daemon [[ -f /usr/share/doc/avahi-daemon/examples/sftp-ssh.service ]] && cp /usr/share/doc/avahi-daemon/examples/sftp-ssh.service /etc/avahi/services/ [[ -f /usr/share/doc/avahi-daemon/examples/ssh.service ]] && cp /usr/share/doc/avahi-daemon/examples/ssh.service /etc/avahi/services/ apt clean diff --git a/external/config/templates/example.deb b/external/config/templates/example.deb new file mode 100755 index 0000000..da97d98 Binary files /dev/null and b/external/config/templates/example.deb differ diff --git a/external/config/templates/fel-boot.cmd.template b/external/config/templates/fel-boot.cmd.template index 4ad5e07..e83b681 100644 --- a/external/config/templates/fel-boot.cmd.template +++ b/external/config/templates/fel-boot.cmd.template @@ -1,7 +1,7 @@ setenv nfs_ip FEL_LOCAL_IP setenv nfs_root FEL_ROOTFS setenv branch BRANCH -setenv bootargs "console=tty1 console=ttyS0,115200 root=/dev/nfs nfsroot=${nfs_ip}:${nfs_root} ip=dhcp rw panic=10 consoleblank=0 enforcing=0 loglevel=6 rootflags=noatime,nodiratime" +setenv bootargs "console=tty1 console=ttyS0,115200 root=/dev/nfs nfsroot=${nfs_ip}:${nfs_root} ip=dhcp rw panic=10 consoleblank=0 enforcing=0 loglevel=6 rootflags=noatime" # uncomment to disable initrd # setenv ramdisk_addr_r "-" if test ${branch} != legacy; then diff --git a/external/config/templates/nfs-boot.cmd.template b/external/config/templates/nfs-boot.cmd.template index 5a4689c..7cb4b74 100644 --- a/external/config/templates/nfs-boot.cmd.template +++ b/external/config/templates/nfs-boot.cmd.template @@ -9,7 +9,7 @@ setenv branch BRANCH setenv net_setup "ip=dhcp" # for static configuration see documentation -# https://github.com/torvalds/linux/blob/master/Documentation/filesystems/nfs/nfsroot.txt +# https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/nfs/nfsroot.rst # setenv net_setup "ip=::::::::" # you may need to add extra kernel arguments specific to your device diff --git a/external/extensions/detect-unused-extensions.sh b/external/extensions/detect-unused-extensions.sh new file mode 100755 index 0000000..482770d --- /dev/null +++ b/external/extensions/detect-unused-extensions.sh @@ -0,0 +1,50 @@ +## Configuration +export LOG_ALL_HOOK_TRACES=no # Should we log all hook function traces to stdout? (no, or level: wrn info) + +## Hooks + +# A honeypot wishful hooking. To make sure the whole thing works. +# This is exactly the kind of hooking this extension is meant to detect. +# This will never run, and should be detected below, but is handled specially and ignored. +# Note: this will never run, since we (hopefully) don't have a hook_point called 'wishful_hooking_example'. +function wishful_hooking_example__this_will_never_run() { + echo "WISHFUL HOOKING -- this will never run. I promise." +} + +# Run super late, hopefully at the last possible moment. +function extension_metadata_ready__999_detect_wishful_hooking() { + display_alert "Checking extensions and hooks for uncalled hook points" + declare -i found_honeypot_function=0 + + # Loop over the defined functions' keys. Find the info about the call. If not found, warn the user. + # shellcheck disable=SC2154 # hook-exported variable + for one_defined_function in ${!defined_hook_point_functions[*]}; do + local source_info defined_info line_info + defined_info="${defined_hook_point_functions["${one_defined_function}"]}" + source_info="${hook_point_function_trace_sources["${one_defined_function}"]}" + line_info="${hook_point_function_trace_lines["${one_defined_function}"]}" + stack="$(get_extension_hook_stracktrace "${source_info}" "${line_info}")" + if [[ "$source_info" != "" ]]; then + # log to debug log. it's reassuring. + echo "\$\$\$ Hook function stacktrace for '${one_defined_function}': '${stack}' (${defined_info})" >>"${EXTENSION_MANAGER_LOG_FILE}" + if [[ "${LOG_ALL_HOOK_TRACES}" != "no" ]]; then + display_alert "Hook function stacktrace for '${one_defined_function}'" "${stack}" "${LOG_ALL_HOOK_TRACES}" + fi + continue # found a caller, move on. + fi + + # special handling for the honeypot function. it is supposed to be always detected as uncalled. + if [[ "${one_defined_function}" == "wishful_hooking_example__this_will_never_run" ]]; then + # we expect this wishful hooking, it is done on purpose below, to make sure this code works. + found_honeypot_function=1 + else + # unexpected wishful hooking. Log and wrn the user. + echo "\$\$\$ Wishful hooking detected" "Function '${one_defined_function}' is defined (${defined_info}) but never called by the build." >>"${EXTENSION_MANAGER_LOG_FILE}" + display_alert "Wishful hooking detected" "Function '${one_defined_function}' is defined (${defined_info}) but never called by the build." "wrn" + fi + done + + if [[ $found_honeypot_function -lt 1 ]]; then + display_alert "Wishful hook DETECTION FAILED" "detect-wishful-hooking is not working. Good chance the environment vars are corrupted. Avoid child shells. Sorry." "wrn" | tee -a "${EXTENSION_MANAGER_LOG_FILE}" + fi +} diff --git a/external/extensions/flash-kernel.sh b/external/extensions/flash-kernel.sh new file mode 100755 index 0000000..57c7c95 --- /dev/null +++ b/external/extensions/flash-kernel.sh @@ -0,0 +1,122 @@ +# This runs *after* user_config. Don't change anything not coming from other variables or meant to be configured by the user. +function extension_prepare_config__prepare_flash_kernel() { + # Configuration defaults, or lack thereof. + export FK__TOOL_PACKAGE="${FK__TOOL_PACKAGE:-flash-kernel}" + export FK__PUBLISHED_KERNEL_VERSION="${FK__PUBLISHED_KERNEL_VERSION:-undefined-flash-kernel-version}" + export FK__EXTRA_PACKAGES="${FK__EXTRA_PACKAGES:-undefined-flash-kernel-kernel-package}" + export FK__KERNEL_PACKAGES="${FK__KERNEL_PACKAGES:-}" + export FK__MACHINE_MODEL="${FK__MACHINE_MODEL:-Undefined Flash-Kernel Machine}" + + # Override certain variables. A case of "this extension knows better and modifies user configurable stuff". + export BOOTCONFIG="none" # To try and convince lib/ to not build or install u-boot. + unset BOOTSOURCE # To try and convince lib/ to not build or install u-boot. + export UEFISIZE=256 # in MiB. Not really UEFI, but partition layout is the same. + export BOOTSIZE=0 # No separate /boot, flash-kernel will "flash" the kernel+initrd to the firmware part. + export UEFI_MOUNT_POINT="/boot/firmware" # mount uefi partition at /boot/firmware + export CLOUD_INIT_CONFIG_LOCATION="/boot/firmware" # use /boot/firmware for cloud-init as well + export VER="${FK__PUBLISHED_KERNEL_VERSION}" # For the VERSION + export EXTRA_BSP_NAME="${EXTRA_BSP_NAME}-fk${FK__PUBLISHED_KERNEL_VERSION}" # Unique bsp name. + echo "-- starting" >"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log # Zero out the log for this extension. +} + +function post_install_kernel_debs__install_kernel_and_flash_packages() { + export INSTALL_ARMBIAN_FIRMWARE="no" # Disable Armbian-firmware install, which would happen after this method. + + if [[ "${FK__EXTRA_PACKAGES}" != "" ]]; then + display_alert "Installing flash-kernel extra packages" "${FK__EXTRA_PACKAGES}" + echo "-- install extra pkgs" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq --no-install-recommends install ${FK__EXTRA_PACKAGES}" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log || { + display_alert "Failed to install flash-kernel's extra packages." "${EXTENSION}" "err" + exit 28 + } + fi + + if [[ "${FK__KERNEL_PACKAGES}" != "" ]]; then + display_alert "Installing flash-kernel kernel packages" "${FK__KERNEL_PACKAGES}" + echo "-- install kernel pkgs" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq --no-install-recommends install ${FK__KERNEL_PACKAGES}" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log || { + display_alert "Failed to install flash-kernel's kernel packages." "${EXTENSION}" "err" + exit 28 + } + fi + + display_alert "Installing flash-kernel package" "${FK__TOOL_PACKAGE}" + # Create a fake /sys/firmware/efi directory so that flash-kernel does not try to do anything when installed + # @TODO: this might or not work after flash-kernel 3.104 or later + umount "${SDCARD}"/sys + mkdir -p "${SDCARD}"/sys/firmware/efi + + echo "-- install flash-kernel package" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq --no-install-recommends install ${FK__TOOL_PACKAGE}" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log || { + display_alert "Failed to install flash-kernel package." "${EXTENSION}" "err" + exit 28 + } + + # Remove fake /sys/firmware (/efi) directory + rm -rf "${SDCARD}"/sys/firmware +} + +# @TODO: extract u-boot into an extension, so that core bsps don't have this stuff in there to begin with. +# @TODO: this code is duplicated in grub.sh extension, so another reason to refactor the root of the evil +post_family_tweaks_bsp__remove_uboot_flash_kernel() { + display_alert "Removing uboot from BSP" "${EXTENSION}" "info" + # Simply remove everything with 'uboot' or 'u-boot' in their filenames from the BSP package. + # shellcheck disable=SC2154 # $destination is the target dir of the bsp building function + find "$destination" -type f | grep -e "uboot" -e "u-boot" | xargs rm +} + +pre_umount_final_image__remove_uboot_initramfs_hook_flash_kernel() { + # even if BSP still contained this (cached .deb), make sure by removing from ${MOUNT} + [[ -f "$MOUNT"/etc/initramfs/post-update.d/99-uboot ]] && rm -v "$MOUNT"/etc/initramfs/post-update.d/99-uboot +} + +function pre_update_initramfs__setup_flash_kernel() { + local chroot_target=$MOUNT + cp /usr/bin/"$QEMU_BINARY" "$chroot_target"/usr/bin/ + mount_chroot "$chroot_target/" # this already handles /boot/firmware which is required for it to work. + # hack, umount the chroot's /sys, otherwise flash-kernel tries to EFI flash due to the build host (!) being EFI + umount "$chroot_target/sys" + + echo "-- flash-kernel disabling hooks" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "$chroot_target" /bin/bash -c "chmod -v -x /etc/kernel/postinst.d/initramfs-tools" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log 2>&1 + chroot "$chroot_target" /bin/bash -c "chmod -v -x /etc/initramfs/post-update.d/flash-kernel" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log 2>&1 + + export FIRMWARE_DIR="${MOUNT}"/boot/firmware + call_extension_method "pre_initramfs_flash_kernel" <<-'PRE_INITRAMFS_FLASH_KERNEL' + *prepare to update-initramfs before flashing kernel via flash_kernel* + A good spot to write firmware config to ${FIRMWARE_DIR} (/boot/firmware) before flash-kernel actually runs. + PRE_INITRAMFS_FLASH_KERNEL + + local update_initramfs_cmd="update-initramfs -c -k all" + display_alert "Updating flash-kernel initramfs..." "$update_initramfs_cmd" "" + echo "-- flash-kernel initramfs" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "$chroot_target" /bin/bash -c "$update_initramfs_cmd" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log 2>&1 || { + display_alert "Failed to run '$update_initramfs_cmd'" "Check ${DEST}/"${LOG_SUBPATH}"/flash-kernel.log" "err" + exit 29 + } + + call_extension_method "pre_flash_kernel" <<-'PRE_FLASH_KERNEL' + *run before running flash-kernel* + Each board might need different stuff for flash-kernel to work. Implement it here. + Write to `${MOUNT}`, eg: `"${MOUNT}"/etc/flash-kernel` + PRE_FLASH_KERNEL + + local flash_kernel_cmd="flash-kernel --machine '${FK__MACHINE_MODEL}'" + display_alert "flash-kernel" "${FK__MACHINE_MODEL}" "info" + echo "-- flash-kernel itself" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "$chroot_target" /bin/bash -c "${flash_kernel_cmd}" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log 2>&1 || { + display_alert "Failed to run '${flash_kernel_cmd}'" "Check ${DEST}/"${LOG_SUBPATH}"/flash-kernel.log" "err" + exit 29 + } + + display_alert "Re-enabling" "initramfs-tools/flash-kernel hook for kernel" + echo "-- flash-kernel re-enabling hooks" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log + chroot "$chroot_target" /bin/bash -c "chmod -v +x /etc/kernel/postinst.d/initramfs-tools" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log 2>&1 + chroot "$chroot_target" /bin/bash -c "chmod -v +x /etc/initramfs/post-update.d/flash-kernel" >>"${DEST}"/"${LOG_SUBPATH}"/flash-kernel.log 2>&1 + + umount_chroot "$chroot_target/" + rm "$chroot_target"/usr/bin/"$QEMU_BINARY" + + display_alert "Disabling Armbian-core update_initramfs, was already done above." "${EXTENSION}" + unset KERNELSOURCE # ugly. sorry. we'll have better mechanism for this soon. this is tested at lib/debootstrap.sh:844 +} diff --git a/external/extensions/gen-sample-extension-docs.sh b/external/extensions/gen-sample-extension-docs.sh new file mode 100755 index 0000000..bd5a350 --- /dev/null +++ b/external/extensions/gen-sample-extension-docs.sh @@ -0,0 +1,126 @@ +## Hooks +function extension_metadata_ready__499_display_docs_generation_start_info() { + display_alert "Generating hook documentation and sample extension" +} + +function extension_metadata_ready__docs_markdown() { + generate_markdown_docs_to_stdout >"${DEST}/"${LOG_SUBPATH}"/hooks.auto.docs.md" +} + +function extension_metadata_ready__docs_sample_extension() { + mkdir -p "${SRC}/userpatches/extensions" + generate_sample_extension_to_stdout >"${SRC}/userpatches/extensions/sample-extension.sh" +} + +## Internal functions + +### Common stuff +function read_common_data() { + export HOOK_POINT_CALLS_COUNT=$(wc -l <"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt") + export HOOK_POINT_CALLS_UNIQUE_COUNT=$(sort <"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt" | uniq | wc -l) + export HOOK_POINTS_WITH_MULTIPLE_CALLS="" + + # Read the hook_points (main, official names) from the hook point ordering file. + export ALL_HOOK_POINT_CALLS=$(xargs echo -n <"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt") +} + +function loop_over_hook_points_and_call() { + local callback="$1" + HOOK_POINT_COUNTER=0 + for one_hook_point in ${ALL_HOOK_POINT_CALLS}; do + export HOOK_POINT_COUNTER=$((HOOK_POINT_COUNTER + 1)) + export HOOK_POINT="${one_hook_point}" + export MARKDOWN_HEAD="$(head -1 "${EXTENSION_MANAGER_TMP_DIR}/${one_hook_point}.orig.md")" + export MARKDOWN_BODY="$(tail -n +2 "${EXTENSION_MANAGER_TMP_DIR}/${one_hook_point}.orig.md")" + export COMPATIBILITY_NAMES="$(xargs echo -n <"${EXTENSION_MANAGER_TMP_DIR}/${one_hook_point}.compat")" + ${callback} + done +} + +## Markdown stuff +function generate_markdown_docs_to_stdout() { + read_common_data + cat < ${MARKDOWN_HEAD} + +${MARKDOWN_BODY} + +HOOK_DOCS + + [[ "${COMPATIBILITY_NAMES}" != "" ]] && { + echo -e "\n\nAlso known as (for backwards compatibility only):" + for old_name in ${COMPATIBILITY_NAMES}; do + echo "- \`${old_name}\`" + done + } + + echo "" +} + +## Bash sample extension stuff +generate_sample_extension_to_stdout() { + read_common_data + cat <
>"${MOUNT}"/etc/default/grub.d/99-armbian-host-side.cfg + GRUB_DISABLE_OS_PROBER=true + grubCfgFragHostSide + + # Mount the chroot... + mount_chroot "$chroot_target/" # this already handles /boot/efi which is required for it to work. + + if [[ "${UEFI_GRUB_TARGET_BIOS}" != "" ]]; then + display_alert "Installing GRUB BIOS..." "${UEFI_GRUB_TARGET_BIOS} device ${LOOP}" "" + chroot "$chroot_target" /bin/bash -c "grub-install --verbose --target=${UEFI_GRUB_TARGET_BIOS} ${LOOP}" >>"$DEST"/"${LOG_SUBPATH}"/install.log 2>&1 || { + exit_with_error "${install_grub_cmdline} failed!" + } + fi + + local install_grub_cmdline="update-initramfs -c -k all && update-grub && grub-install --verbose --target=${UEFI_GRUB_TARGET} --no-nvram --removable" # nvram is global to the host, even across chroot. take care. + display_alert "Installing GRUB EFI..." "${UEFI_GRUB_TARGET}" "" + chroot "$chroot_target" /bin/bash -c "$install_grub_cmdline" >>"$DEST"/"${LOG_SUBPATH}"/install.log 2>&1 || { + exit_with_error "${install_grub_cmdline} failed!" + } + + # Remove host-side config. + rm -f "${MOUNT}"/etc/default/grub.d/99-armbian-host-side.cfg + + local root_uuid + root_uuid=$(blkid -s UUID -o value "${LOOP}p1") # get the uuid of the root partition, this has been transposed + + # Create /boot/efi/EFI/BOOT/grub.cfg (EFI/ESP) which will load /boot/grub/grub.cfg (in the rootfs, generated by update-grub) + cat <<-grubEfiCfg >"${MOUNT}"/boot/efi/EFI/BOOT/grub.cfg + search.fs_uuid ${root_uuid} root + set prefix=(\$root)'/boot/grub' + configfile \$prefix/grub.cfg + grubEfiCfg + + umount_chroot "$chroot_target/" + +} + +pre_umount_final_image__900_export_kernel_and_initramfs() { + if [[ "${UEFI_EXPORT_KERNEL_INITRD}" == "yes" ]]; then + display_alert "Exporting Kernel and Initrd for" "kexec" "info" + # this writes to ${DESTIMG} directly, since debootstrap.sh will move them later. + # capture the $MOUNT/boot/vmlinuz and initrd and send it out ${DESTIMG} + cp "$MOUNT"/boot/vmlinuz-* "${DESTIMG}/${version}.kernel" + cp "$MOUNT"/boot/initrd.img-* "${DESTIMG}/${version}.initrd" + fi +} + +configure_grub() { + display_alert "GRUB EFI kernel cmdline" "console=${SERIALCON} distro=${UEFI_GRUB_DISTRO_NAME} timeout=${UEFI_GRUB_TIMEOUT}" "" + + if [[ "_${SERIALCON}_" != "__" ]]; then + cat <<-grubCfgFrag >>"${MOUNT}"/etc/default/grub.d/98-armbian.cfg + GRUB_CMDLINE_LINUX_DEFAULT="console=${SERIALCON}" # extra Kernel cmdline is configured here + grubCfgFrag + fi + + cat <<-grubCfgFrag >>"${MOUNT}"/etc/default/grub.d/98-armbian.cfg + GRUB_TIMEOUT_STYLE=menu # Show the menu with Kernel options (Armbian or -generic)... + GRUB_TIMEOUT=${UEFI_GRUB_TIMEOUT} # ... for ${UEFI_GRUB_TIMEOUT} seconds, then boot the Armbian default. + GRUB_DISTRIBUTOR="${UEFI_GRUB_DISTRO_NAME}" # On GRUB menu will show up as "Armbian GNU/Linux" (will show up in some UEFI BIOS boot menu (F8?) as "armbian", not on others) + grubCfgFrag + + if [[ "a${UEFI_GRUB_DISABLE_OS_PROBER}" != "a" ]]; then + cat <<-grubCfgFragHostSide >>"${MOUNT}"/etc/default/grub.d/98-armbian.cfg + GRUB_DISABLE_OS_PROBER=${UEFI_GRUB_DISABLE_OS_PROBER} + grubCfgFragHostSide + fi + + if [[ "a${UEFI_GRUB_TERMINAL}" != "a" ]]; then + cat <<-grubCfgFragTerminal >>"${MOUNT}"/etc/default/grub.d/98-armbian.cfg + GRUB_TERMINAL="${UEFI_GRUB_TERMINAL}" + grubCfgFragTerminal + fi +} diff --git a/external/extensions/rkbin-tools.sh b/external/extensions/rkbin-tools.sh new file mode 100755 index 0000000..09cac40 --- /dev/null +++ b/external/extensions/rkbin-tools.sh @@ -0,0 +1,16 @@ +function fetch_sources_tools__rkbin_tools() { + fetch_from_repo "https://github.com/armbian/rkbin" "${EXTER}/cache/sources/rkbin-tools" "branch:master" +} + +function build_host_tools__install_rkbin_tools() { + # install only if git commit hash changed + cd "${EXTER}"/cache/sources/rkbin-tools || exit + # need to check if /usr/local/bin/loaderimage to detect new Docker containers with old cached sources + if [[ ! -f .commit_id || $(improved_git rev-parse @ 2>/dev/null) != $(<.commit_id) || ! -f /usr/local/bin/loaderimage ]]; then + display_alert "Installing" "rkbin-tools" "info" + mkdir -p /usr/local/bin/ + install -m 755 tools/loaderimage /usr/local/bin/ + install -m 755 tools/trust_merger /usr/local/bin/ + improved_git rev-parse @ 2>/dev/null >.commit_id + fi +} diff --git a/external/extensions/sunxi-tools.sh b/external/extensions/sunxi-tools.sh new file mode 100755 index 0000000..c068f45 --- /dev/null +++ b/external/extensions/sunxi-tools.sh @@ -0,0 +1,17 @@ +function fetch_sources_tools__sunxi_tools() { + fetch_from_repo "https://github.com/linux-sunxi/sunxi-tools" "${EXTER}/cache/sources/sunxi-tools" "branch:master" +} + +function build_host_tools__compile_sunxi_tools() { + # Compile and install only if git commit hash changed + cd "${EXTER}"/cache/sources/sunxi-tools || exit + # need to check if /usr/local/bin/sunxi-fexc to detect new Docker containers with old cached sources + if [[ ! -f .commit_id || $(improved_git rev-parse @ 2>/dev/null) != $(<.commit_id) || ! -f /usr/local/bin/sunxi-fexc ]]; then + display_alert "Compiling" "sunxi-tools" "info" + make -s clean >/dev/null + make -s tools >/dev/null + mkdir -p /usr/local/bin/ + make install-tools >/dev/null 2>&1 + improved_git rev-parse @ 2>/dev/null >.commit_id + fi +} diff --git a/external/packages/blobs/asound.state/asound.state.orangepi4-es8316 b/external/packages/blobs/asound.state/asound.state.orangepi4-es8316 new file mode 100644 index 0000000..17e07c8 --- /dev/null +++ b/external/packages/blobs/asound.state/asound.state.orangepi4-es8316 @@ -0,0 +1,1452 @@ +state.realtekrt5651co { + control.1 { + iface MIXER + name 'HP Playback Volume' + value.0 31 + value.1 31 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 39' + dbmin -4650 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.2 { + iface MIXER + name 'OUT Playback Volume' + value.0 179 + value.1 179 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 39' + dbmin -4650 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.3 { + iface MIXER + name 'DAC2 Playback Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.4 { + iface MIXER + name 'DAC1 Playback Volume' + value.0 175 + value.1 175 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 175' + dbmin -65625 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.5 { + iface MIXER + name 'Mono DAC Playback Volume' + value.0 175 + value.1 175 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 175' + dbmin -65625 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.6 { + iface MIXER + name 'IN1 Boost' + value 3 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 8' + dbmin 0 + dbmax 5200 + dbvalue.0 3000 + } + } + control.7 { + iface MIXER + name 'IN2 Boost' + value 3 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 8' + dbmin 0 + dbmax 5200 + dbvalue.0 3000 + } + } + control.8 { + iface MIXER + name 'IN Capture Volume' + value.0 23 + value.1 23 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 31' + dbmin -3450 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.9 { + iface MIXER + name 'ADC Capture Switch' + value.0 true + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.10 { + iface MIXER + name 'ADC Capture Volume' + value.0 47 + value.1 47 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 127' + dbmin -17625 + dbmax 30000 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.11 { + iface MIXER + name 'Mono ADC Capture Volume' + value.0 47 + value.1 47 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 127' + dbmin -17625 + dbmax 30000 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.12 { + iface MIXER + name 'ADC Boost Gain' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 3' + dbmin 0 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.13 { + iface MIXER + name 'RT5651 ASRC Switch' + value Disable + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Disable + item.1 Enable + } + } + control.14 { + iface MIXER + name 'IF1 ASRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.15 { + iface MIXER + name 'IF2 ASRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.16 { + iface MIXER + name 'DMIC ASRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.17 { + iface MIXER + name 'ADC IF2 Data Switch' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 Swap + item.2 'left copy to right' + item.3 'right copy to left' + } + } + control.18 { + iface MIXER + name 'DAC IF2 Data Switch' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 Swap + item.2 'left copy to right' + item.3 'right copy to left' + } + } + control.19 { + iface CARD + name 'Headphones Jack' + value false + comment { + access read + type BOOLEAN + count 1 + } + } + control.20 { + iface MIXER + name 'RECMIXL INL1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.21 { + iface MIXER + name 'RECMIXL BST3 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.22 { + iface MIXER + name 'RECMIXL BST2 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.23 { + iface MIXER + name 'RECMIXL BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.24 { + iface MIXER + name 'RECMIXR INR1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.25 { + iface MIXER + name 'RECMIXR BST3 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.26 { + iface MIXER + name 'RECMIXR BST2 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.27 { + iface MIXER + name 'RECMIXR BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.28 { + iface MIXER + name 'Stereo1 ADC L2 Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 DMIC + item.1 'DD MIX' + } + } + control.29 { + iface MIXER + name 'Stereo1 ADC R2 Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 DMIC + item.1 'DD MIX' + } + } + control.30 { + iface MIXER + name 'Stereo1 ADC L1 Mux' + value ADC + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 ADC + } + } + control.31 { + iface MIXER + name 'Stereo1 ADC R1 Mux' + value ADC + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 ADC + } + } + control.32 { + iface MIXER + name 'Stereo2 ADC L2 Mux' + value 'DD MIXL' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DMIC L' + item.1 'DD MIXL' + } + } + control.33 { + iface MIXER + name 'Stereo2 ADC L1 Mux' + value ADCL + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIXL' + item.1 ADCL + } + } + control.34 { + iface MIXER + name 'Stereo2 ADC R1 Mux' + value 'DD MIXR' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIXR' + item.1 ADCR + } + } + control.35 { + iface MIXER + name 'Stereo2 ADC R2 Mux' + value 'DMIC R' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DMIC R' + item.1 'DD MIXR' + } + } + control.36 { + iface MIXER + name 'Stereo1 ADC MIXL ADC1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.37 { + iface MIXER + name 'Stereo1 ADC MIXL ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.38 { + iface MIXER + name 'Stereo1 ADC MIXR ADC1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.39 { + iface MIXER + name 'Stereo1 ADC MIXR ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.40 { + iface MIXER + name 'Stereo2 ADC MIXL ADC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.41 { + iface MIXER + name 'Stereo2 ADC MIXL ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.42 { + iface MIXER + name 'Stereo2 ADC MIXR ADC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.43 { + iface MIXER + name 'Stereo2 ADC MIXR ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.44 { + iface MIXER + name 'IF2 ADC' + value 'IF1 ADC1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IF1 ADC1' + item.1 'IF1 ADC2' + } + } + control.45 { + iface MIXER + name 'PDM L Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 'Stereo DAC MIX' + } + } + control.46 { + iface MIXER + name 'PDM R Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 'Stereo DAC MIX' + } + } + control.47 { + iface MIXER + name 'DAC MIXL Stereo ADC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.48 { + iface MIXER + name 'DAC MIXL INF1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.49 { + iface MIXER + name 'DAC MIXR Stereo ADC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.50 { + iface MIXER + name 'DAC MIXR INF1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.51 { + iface MIXER + name 'DAC L2 Mux' + value IF2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 IF1 + item.1 IF2 + } + } + control.52 { + iface MIXER + name 'DAC R2 Mux' + value IF2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 IF1 + item.1 IF2 + } + } + control.53 { + iface MIXER + name 'Stereo DAC MIXL DAC L1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.54 { + iface MIXER + name 'Stereo DAC MIXL DAC L2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.55 { + iface MIXER + name 'Stereo DAC MIXL DAC R1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.56 { + iface MIXER + name 'Stereo DAC MIXR DAC R1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.57 { + iface MIXER + name 'Stereo DAC MIXR DAC R2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.58 { + iface MIXER + name 'Stereo DAC MIXR DAC L1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.59 { + iface MIXER + name 'DD MIXL DAC L1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.60 { + iface MIXER + name 'DD MIXL DAC L2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.61 { + iface MIXER + name 'DD MIXL DAC R2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.62 { + iface MIXER + name 'DD MIXR DAC R1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.63 { + iface MIXER + name 'DD MIXR DAC R2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.64 { + iface MIXER + name 'DD MIXR DAC L2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.65 { + iface MIXER + name 'OUT MIXL BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.66 { + iface MIXER + name 'OUT MIXL BST2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.67 { + iface MIXER + name 'OUT MIXL INL1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.68 { + iface MIXER + name 'OUT MIXL REC MIXL Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.69 { + iface MIXER + name 'OUT MIXL DAC L1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.70 { + iface MIXER + name 'OUT MIXR BST2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.71 { + iface MIXER + name 'OUT MIXR BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.72 { + iface MIXER + name 'OUT MIXR INR1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.73 { + iface MIXER + name 'OUT MIXR REC MIXR Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.74 { + iface MIXER + name 'OUT MIXR DAC R1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.75 { + iface MIXER + name 'OUTVOL L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.76 { + iface MIXER + name 'OUTVOL R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.77 { + iface MIXER + name 'HPOVOL L Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.78 { + iface MIXER + name 'HPOVOL R Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.79 { + iface MIXER + name 'HPO MIX DAC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.80 { + iface MIXER + name 'HPO MIX HPVOL Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.81 { + iface MIXER + name 'LOUT MIX DAC L1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.82 { + iface MIXER + name 'LOUT MIX DAC R1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.83 { + iface MIXER + name 'LOUT MIX OUTVOL L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.84 { + iface MIXER + name 'LOUT MIX OUTVOL R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.85 { + iface MIXER + name 'HPO L Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.86 { + iface MIXER + name 'HPO R Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.87 { + iface MIXER + name 'LOUT L Playback Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.88 { + iface MIXER + name 'LOUT R Playback Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } +} +state.hdmisound { + control.1 { + iface PCM + name 'Playback Channel Map' + value.0 0 + value.1 0 + value.2 0 + value.3 0 + value.4 0 + value.5 0 + value.6 0 + value.7 0 + comment { + access read + type INTEGER + count 8 + range '0 - 36' + } + } + control.2 { + iface PCM + name ELD + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read volatile' + type BYTES + count 128 + } + } +} +state.rkhdmidpsound { + control.1 { + iface PCM + name ELD + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read volatile' + type BYTES + count 128 + } + } + control.2 { + iface PCM + name 'AUDIO MODE' + value 0 + comment { + access 'read write volatile' + type INTEGER + count 1 + range '0 - 2' + } + } +} +state.rockchipes8316c { + control.1 { + iface MIXER + name 'Headphone Playback Volume' + value.0 3 + value.1 3 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 3' + dbmin -4800 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.2 { + iface MIXER + name 'Headphone Mixer Volume' + value.0 11 + value.1 11 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 11' + dbmin -1200 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.3 { + iface MIXER + name 'Playback Polarity' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 'R Invert' + item.2 'L Invert' + item.3 'L + R Invert' + } + } + control.4 { + iface MIXER + name 'DAC Playback Volume' + value.0 192 + value.1 192 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 192' + dbmin -9999999 + dbmax 0 + dbvalue.0 -2000 + dbvalue.1 -2000 + } + } + control.5 { + iface MIXER + name 'DAC Soft Ramp Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.6 { + iface MIXER + name 'DAC Soft Ramp Rate' + value 4 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 4' + } + } + control.7 { + iface MIXER + name 'DAC Notch Filter Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.8 { + iface MIXER + name 'DAC Double Fs Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.9 { + iface MIXER + name 'DAC Stereo Enhancement' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + } + } + control.10 { + iface MIXER + name 'DAC Mono Mix Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.11 { + iface MIXER + name 'Capture Polarity' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 Invert + } + } + control.12 { + iface MIXER + name 'Mic Boost Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.13 { + iface MIXER + name 'ADC Capture Volume' + value 192 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 192' + dbmin -9999999 + dbmax 0 + dbvalue.0 -9999999 + } + } + control.14 { + iface MIXER + name 'ADC PGA Gain Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + dbmin -350 + dbmax 2400 + dbvalue.0 -350 + } + } + control.15 { + iface MIXER + name 'ADC Soft Ramp Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.16 { + iface MIXER + name 'ADC Double Fs Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.17 { + iface MIXER + name 'ALC Capture Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.18 { + iface MIXER + name 'ALC Capture Max Volume' + value 28 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 28' + dbmin -650 + dbmax 3550 + dbvalue.0 3550 + } + } + control.19 { + iface MIXER + name 'ALC Capture Min Volume' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 28' + dbmin -1200 + dbmax 3000 + dbvalue.0 -1200 + } + } + control.20 { + iface MIXER + name 'ALC Capture Target Volume' + value 11 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + dbmin -1650 + dbmax -150 + dbvalue.0 0 + } + } + control.21 { + iface MIXER + name 'ALC Capture Hold Time' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.22 { + iface MIXER + name 'ALC Capture Decay Time' + value 3 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.23 { + iface MIXER + name 'ALC Capture Attack Time' + value 2 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.24 { + iface MIXER + name 'ALC Capture Noise Gate Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.25 { + iface MIXER + name 'ALC Capture Noise Gate Threshold' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + } + } + control.26 { + iface MIXER + name 'ALC Capture Noise Gate Type' + value 'Constant PGA Gain' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'Constant PGA Gain' + item.1 'Mute ADC Output' + } + } + control.27 { + iface MIXER + name 'Differential Mux' + value lin1-rin1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 lin1-rin1 + item.1 lin2-rin2 + item.2 'lin1-rin1 with 20db Boost' + item.3 'lin2-rin2 with 20db Boost' + } + } + control.28 { + iface MIXER + name 'Digital Mic Mux' + value 'dmic disable' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'dmic disable' + item.1 'dmic data at high level' + item.2 'dmic data at low level' + } + } + control.29 { + iface MIXER + name 'DAC Source Mux' + value 'LDATA TO LDAC, RDATA TO RDAC' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'LDATA TO LDAC, RDATA TO RDAC' + item.1 'LDATA TO LDAC, LDATA TO RDAC' + item.2 'RDATA TO LDAC, RDATA TO RDAC' + item.3 'RDATA TO LDAC, LDATA TO RDAC' + } + } + control.30 { + iface MIXER + name 'Left Headphone Mux' + value lin1-rin1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 lin1-rin1 + item.1 lin2-rin2 + item.2 'lin-rin with Boost' + item.3 'lin-rin with Boost and PGA' + } + } + control.31 { + iface MIXER + name 'Right Headphone Mux' + value lin1-rin1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 lin1-rin1 + item.1 lin2-rin2 + item.2 'lin-rin with Boost' + item.3 'lin-rin with Boost and PGA' + } + } + control.32 { + iface MIXER + name 'Left Headphone Mixer LLIN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.33 { + iface MIXER + name 'Left Headphone Mixer Left DAC Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.34 { + iface MIXER + name 'Right Headphone Mixer RLIN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.35 { + iface MIXER + name 'Right Headphone Mixer Right DAC Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } +} diff --git a/external/packages/blobs/asound.state/asound.state.orangepi800-es8316 b/external/packages/blobs/asound.state/asound.state.orangepi800-es8316 new file mode 100644 index 0000000..4660367 --- /dev/null +++ b/external/packages/blobs/asound.state/asound.state.orangepi800-es8316 @@ -0,0 +1,437 @@ +state.rockchipes8316c { + control.1 { + iface MIXER + name 'HP Playback Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 0' + dbmin -4800 + dbmax -4800 + dbvalue.0 -4800 + dbvalue.1 -4800 + } + } + control.2 { + iface MIXER + name 'HPMixer Gain' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 7' + dbmin -1200 + dbmax -150 + dbvalue.0 -1200 + dbvalue.1 -1200 + } + } + control.3 { + iface MIXER + name 'DAC Playback Volume' + value.0 152 + value.1 152 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 192' + dbmin -9999999 + dbmax 0 + dbvalue.0 -2000 + dbvalue.1 -2000 + } + } + control.4 { + iface MIXER + name 'Enable DAC Soft Ramp' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.5 { + iface MIXER + name 'DAC Soft Ramp Rate' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 4' + } + } + control.6 { + iface MIXER + name 'Playback Polarity' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 'R Invert' + item.2 'L Invert' + item.3 'L + R Invert' + } + } + control.7 { + iface MIXER + name 'DAC Notch Filter' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.8 { + iface MIXER + name 'DAC Double Fs Mode' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.9 { + iface MIXER + name 'DAC Volume Control-LeR' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 1' + } + } + control.10 { + iface MIXER + name 'DAC Stereo Enhancement' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 7' + } + } + control.11 { + iface MIXER + name 'MIC Boost' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.12 { + iface MIXER + name 'Input PGA' + value 6 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 8' + } + } + control.13 { + iface MIXER + name 'ADC Capture Volume' + value 10 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 192' + dbmin -9999999 + dbmax 0 + dbvalue.0 -9100 + } + } + control.14 { + iface MIXER + name 'ADC Soft Ramp' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.15 { + iface MIXER + name 'Capture Polarity' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 Invert + } + } + control.16 { + iface MIXER + name 'ADC Double FS Mode' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.17 { + iface MIXER + name 'ALC Capture Target Volume' + value 10 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.18 { + iface MIXER + name 'ALC Capture Max PGA' + value 13 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 28' + } + } + control.19 { + iface MIXER + name 'ALC Capture Min PGA' + value 8 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 28' + } + } + control.20 { + iface MIXER + name 'ALC Capture Function' + value On + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Off + item.1 On + } + } + control.21 { + iface MIXER + name 'ALC Capture Hold Time' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.22 { + iface MIXER + name 'ALC Capture Decay Time' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.23 { + iface MIXER + name 'ALC Capture Attack Time' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 10' + } + } + control.24 { + iface MIXER + name 'ALC Capture NG Threshold' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 31' + } + } + control.25 { + iface MIXER + name 'ALC Capture NG Type' + value 'Mute ADC Output' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'Constant PGA Gain' + item.1 'Mute ADC Output' + } + } + control.26 { + iface MIXER + name 'ALC Capture NG Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.27 { + iface MIXER + name 'Differential Mux' + value lin2-rin2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 lin1-rin1 + item.1 lin2-rin2 + item.2 'lin1-rin1 with 20db Boost' + item.3 'lin2-rin2 with 20db Boost' + } + } + control.28 { + iface MIXER + name 'Digital Mic Mux' + value 'dmic disable' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'dmic disable' + item.1 'dmic data at high level' + item.2 'dmic data at low level' + } + } + control.29 { + iface MIXER + name 'DAC SRC Mux' + value 'LDATA TO LDAC, RDATA TO RDAC' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'LDATA TO LDAC, RDATA TO RDAC' + item.1 'LDATA TO LDAC, LDATA TO RDAC' + item.2 'RDATA TO LDAC, RDATA TO RDAC' + item.3 'RDATA TO LDAC, LDATA TO RDAC' + } + } + control.30 { + iface MIXER + name 'Left Hp mux' + value lin1-rin1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 lin1-rin1 + item.1 lin2-rin2 + item.2 'lin-rin with Boost' + item.3 'lin-rin with Boost and PGA' + } + } + control.31 { + iface MIXER + name 'Right Hp mux' + value lin1-rin1 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 lin1-rin1 + item.1 lin2-rin2 + item.2 'lin-rin with Boost' + item.3 'lin-rin with Boost and PGA' + } + } + control.32 { + iface MIXER + name 'LLIN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.33 { + iface MIXER + name 'Left DAC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.34 { + iface MIXER + name 'RLIN Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.35 { + iface MIXER + name 'Right DAC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } +} +state.rkhdmidpsound { + control.1 { + iface PCM + name ELD + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read volatile' + type BYTES + count 128 + } + } + control.2 { + iface PCM + name 'AUDIO MODE' + value 0 + comment { + access 'read write volatile' + type INTEGER + count 1 + range '0 - 2' + } + } +} diff --git a/external/packages/blobs/asound.state/asound.state.rt5651 b/external/packages/blobs/asound.state/asound.state.rt5651 new file mode 100755 index 0000000..6b8b9c4 --- /dev/null +++ b/external/packages/blobs/asound.state/asound.state.rt5651 @@ -0,0 +1,978 @@ +state.realtekrt5651co { + control.1 { + iface CARD + name 'Headphones Jack' + value false + comment { + access read + type BOOLEAN + count 1 + } + } + control.2 { + iface MIXER + name 'HP Playback Volume' + value.0 31 + value.1 31 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 39' + dbmin -4650 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.3 { + iface MIXER + name 'OUT Playback Volume' + value.0 31 + value.1 31 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 39' + dbmin -4650 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.4 { + iface MIXER + name 'DAC2 Playback Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.5 { + iface MIXER + name 'DAC1 Playback Volume' + value.0 175 + value.1 175 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 175' + dbmin -65625 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.6 { + iface MIXER + name 'Mono DAC Playback Volume' + value.0 175 + value.1 175 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 175' + dbmin -65625 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.7 { + iface MIXER + name 'IN1 Boost' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 8' + dbmin 0 + dbmax 5200 + dbvalue.0 0 + } + } + control.8 { + iface MIXER + name 'IN2 Boost' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 8' + dbmin 0 + dbmax 5200 + dbvalue.0 0 + } + } + control.9 { + iface MIXER + name 'IN3 Boost' + value 0 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 8' + dbmin 0 + dbmax 5200 + dbvalue.0 0 + } + } + control.10 { + iface MIXER + name 'IN Capture Volume' + value.0 23 + value.1 23 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 31' + dbmin -3450 + dbmax 1200 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.11 { + iface MIXER + name 'ADC Capture Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.12 { + iface MIXER + name 'ADC Capture Volume' + value.0 47 + value.1 47 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 127' + dbmin -17625 + dbmax 30000 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.13 { + iface MIXER + name 'Mono ADC Capture Volume' + value.0 47 + value.1 47 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 127' + dbmin -17625 + dbmax 30000 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.14 { + iface MIXER + name 'ADC Boost Gain' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 3' + dbmin 0 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.15 { + iface MIXER + name 'IF1 ASRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.16 { + iface MIXER + name 'IF2 ASRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.17 { + iface MIXER + name 'DMIC ASRC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.18 { + iface MIXER + name 'ADC IF2 Data Switch' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 Swap + item.2 'left copy to right' + item.3 'right copy to left' + } + } + control.19 { + iface MIXER + name 'DAC IF2 Data Switch' + value Normal + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Normal + item.1 Swap + item.2 'left copy to right' + item.3 'right copy to left' + } + } + control.20 { + iface MIXER + name 'RECMIXL INL1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.21 { + iface MIXER + name 'RECMIXL BST3 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.22 { + iface MIXER + name 'RECMIXL BST2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.23 { + iface MIXER + name 'RECMIXL BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.24 { + iface MIXER + name 'RECMIXR INR1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.25 { + iface MIXER + name 'RECMIXR BST3 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.26 { + iface MIXER + name 'RECMIXR BST2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.27 { + iface MIXER + name 'RECMIXR BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.28 { + iface MIXER + name 'Stereo1 ADC L2 Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 DMIC + item.1 'DD MIX' + } + } + control.29 { + iface MIXER + name 'Stereo1 ADC R2 Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 DMIC + item.1 'DD MIX' + } + } + control.30 { + iface MIXER + name 'Stereo1 ADC L1 Mux' + value ADC + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 ADC + } + } + control.31 { + iface MIXER + name 'Stereo1 ADC R1 Mux' + value ADC + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 ADC + } + } + control.32 { + iface MIXER + name 'Stereo2 ADC L2 Mux' + value 'DD MIXL' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DMIC L' + item.1 'DD MIXL' + } + } + control.33 { + iface MIXER + name 'Stereo2 ADC L1 Mux' + value ADCL + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIXL' + item.1 ADCL + } + } + control.34 { + iface MIXER + name 'Stereo2 ADC R1 Mux' + value 'DD MIXR' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIXR' + item.1 ADCR + } + } + control.35 { + iface MIXER + name 'Stereo2 ADC R2 Mux' + value 'DMIC R' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DMIC R' + item.1 'DD MIXR' + } + } + control.36 { + iface MIXER + name 'Stereo1 ADC MIXL ADC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.37 { + iface MIXER + name 'Stereo1 ADC MIXL ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.38 { + iface MIXER + name 'Stereo1 ADC MIXR ADC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.39 { + iface MIXER + name 'Stereo1 ADC MIXR ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.40 { + iface MIXER + name 'Stereo2 ADC MIXL ADC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.41 { + iface MIXER + name 'Stereo2 ADC MIXL ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.42 { + iface MIXER + name 'Stereo2 ADC MIXR ADC1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.43 { + iface MIXER + name 'Stereo2 ADC MIXR ADC2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.44 { + iface MIXER + name 'IF2 ADC' + value 'IF1 ADC1' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'IF1 ADC1' + item.1 'IF1 ADC2' + } + } + control.45 { + iface MIXER + name 'PDM L Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 'Stereo DAC MIX' + } + } + control.46 { + iface MIXER + name 'PDM R Mux' + value 'DD MIX' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 'DD MIX' + item.1 'Stereo DAC MIX' + } + } + control.47 { + iface MIXER + name 'DAC MIXL Stereo ADC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.48 { + iface MIXER + name 'DAC MIXL INF1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.49 { + iface MIXER + name 'DAC MIXR Stereo ADC Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.50 { + iface MIXER + name 'DAC MIXR INF1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.51 { + iface MIXER + name 'DAC L2 Mux' + value IF2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 IF1 + item.1 IF2 + } + } + control.52 { + iface MIXER + name 'DAC R2 Mux' + value IF2 + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 IF1 + item.1 IF2 + } + } + control.53 { + iface MIXER + name 'Stereo DAC MIXL DAC L1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.54 { + iface MIXER + name 'Stereo DAC MIXL DAC L2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.55 { + iface MIXER + name 'Stereo DAC MIXL DAC R1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.56 { + iface MIXER + name 'Stereo DAC MIXR DAC R1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.57 { + iface MIXER + name 'Stereo DAC MIXR DAC R2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.58 { + iface MIXER + name 'Stereo DAC MIXR DAC L1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.59 { + iface MIXER + name 'DD MIXL DAC L1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.60 { + iface MIXER + name 'DD MIXL DAC L2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.61 { + iface MIXER + name 'DD MIXL DAC R2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.62 { + iface MIXER + name 'DD MIXR DAC R1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.63 { + iface MIXER + name 'DD MIXR DAC R2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.64 { + iface MIXER + name 'DD MIXR DAC L2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.65 { + iface MIXER + name 'OUT MIXL BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.66 { + iface MIXER + name 'OUT MIXL BST2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.67 { + iface MIXER + name 'OUT MIXL INL1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.68 { + iface MIXER + name 'OUT MIXL REC MIXL Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.69 { + iface MIXER + name 'OUT MIXL DAC L1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.70 { + iface MIXER + name 'OUT MIXR BST2 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.71 { + iface MIXER + name 'OUT MIXR BST1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.72 { + iface MIXER + name 'OUT MIXR INR1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.73 { + iface MIXER + name 'OUT MIXR REC MIXR Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.74 { + iface MIXER + name 'OUT MIXR DAC R1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.75 { + iface MIXER + name 'OUTVOL L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.76 { + iface MIXER + name 'OUTVOL R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.77 { + iface MIXER + name 'HPOVOL L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.78 { + iface MIXER + name 'HPOVOL R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.79 { + iface MIXER + name 'HPO MIX DAC1 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.80 { + iface MIXER + name 'HPO MIX HPVOL Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.81 { + iface MIXER + name 'LOUT MIX DAC L1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.82 { + iface MIXER + name 'LOUT MIX DAC R1 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.83 { + iface MIXER + name 'LOUT MIX OUTVOL L Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.84 { + iface MIXER + name 'LOUT MIX OUTVOL R Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.85 { + iface MIXER + name 'HPO L Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.86 { + iface MIXER + name 'HPO R Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.87 { + iface MIXER + name 'LOUT L Playback Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.88 { + iface MIXER + name 'LOUT R Playback Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } +} diff --git a/external/packages/blobs/asound.state/asound.state.sun50iw9-current b/external/packages/blobs/asound.state/asound.state.sun50iw9-current old mode 100644 new mode 100755 diff --git a/external/packages/blobs/desktop/chromium.conf b/external/packages/blobs/desktop/chromium.conf index 4db3025..fda2a99 100644 --- a/external/packages/blobs/desktop/chromium.conf +++ b/external/packages/blobs/desktop/chromium.conf @@ -10,5 +10,4 @@ CHROMIUM_FLAGS="--disable-smooth-scrolling \ --disable-composited-antialiasing \ --disk-cache-dir=/tmp/${USER}-cache \ --disk-cache-size=$(findmnt --target /tmp -n -o AVAIL -b | awk '{printf ("%0.0f",$1*0.3); }') \ ---no-sandbox \ --test-type" diff --git a/external/packages/blobs/desktop/desktop-icons/opi_config128x128.png b/external/packages/blobs/desktop/desktop-icons/opi_config128x128.png new file mode 100755 index 0000000..6802543 Binary files /dev/null and b/external/packages/blobs/desktop/desktop-icons/opi_config128x128.png differ diff --git a/external/packages/blobs/desktop/desktop-icons/orangepi-config.png b/external/packages/blobs/desktop/desktop-icons/orangepi-config.png new file mode 100755 index 0000000..a3fc45a Binary files /dev/null and b/external/packages/blobs/desktop/desktop-icons/orangepi-config.png differ diff --git a/external/packages/blobs/desktop/desktop-icons/orangepi_mono.png b/external/packages/blobs/desktop/desktop-icons/orangepi_mono.png new file mode 100755 index 0000000..f037275 Binary files /dev/null and b/external/packages/blobs/desktop/desktop-icons/orangepi_mono.png differ diff --git a/external/packages/blobs/desktop/desktop-icons/scrcpy.svg b/external/packages/blobs/desktop/desktop-icons/scrcpy.svg new file mode 100755 index 0000000..bb0eeb7 --- /dev/null +++ b/external/packages/blobs/desktop/desktop-icons/scrcpy.svg @@ -0,0 +1,885 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/external/packages/blobs/desktop/desktop-wallpapers/orangepi-default.png b/external/packages/blobs/desktop/desktop-wallpapers/orangepi-default.png new file mode 100755 index 0000000..26beb57 Binary files /dev/null and b/external/packages/blobs/desktop/desktop-wallpapers/orangepi-default.png differ diff --git a/external/packages/blobs/desktop/desktop-wallpapers/orangepi-mountain.png b/external/packages/blobs/desktop/desktop-wallpapers/orangepi-mountain.png new file mode 100755 index 0000000..26beb57 Binary files /dev/null and b/external/packages/blobs/desktop/desktop-wallpapers/orangepi-mountain.png differ diff --git a/external/packages/blobs/desktop/desktop-wallpapers/orangepi.png b/external/packages/blobs/desktop/desktop-wallpapers/orangepi.png new file mode 100755 index 0000000..26beb57 Binary files /dev/null and b/external/packages/blobs/desktop/desktop-wallpapers/orangepi.png differ diff --git a/external/packages/blobs/desktop/firefox.conf b/external/packages/blobs/desktop/firefox.conf index 4d0900c..a856b8c 100644 --- a/external/packages/blobs/desktop/firefox.conf +++ b/external/packages/blobs/desktop/firefox.conf @@ -12,4 +12,4 @@ pref("toolkit.telemetry.rejected", true); pref("reader.parse-on-load.enabled", false); pref("browser.cache.disk.enable", false); pref("browser.cache.memory.enable", true); -pref("browser.cache.memory.capacity", "-1"); +// pref("browser.cache.memory.capacity", "-1"); diff --git a/external/packages/blobs/desktop/icons/orangepi.png b/external/packages/blobs/desktop/icons/orangepi.png index 908bb86..f399ccd 100644 Binary files a/external/packages/blobs/desktop/icons/orangepi.png and b/external/packages/blobs/desktop/icons/orangepi.png differ diff --git a/external/packages/blobs/desktop/lightdm-wallpapers/orangepi-default.png b/external/packages/blobs/desktop/lightdm-wallpapers/orangepi-default.png new file mode 100755 index 0000000..26beb57 Binary files /dev/null and b/external/packages/blobs/desktop/lightdm-wallpapers/orangepi-default.png differ diff --git a/external/packages/blobs/desktop/lightdm-wallpapers/orangepi-mountain.png b/external/packages/blobs/desktop/lightdm-wallpapers/orangepi-mountain.png new file mode 100755 index 0000000..26beb57 Binary files /dev/null and b/external/packages/blobs/desktop/lightdm-wallpapers/orangepi-mountain.png differ diff --git a/external/packages/blobs/desktop/lightdm-wallpapers/orangepi.png b/external/packages/blobs/desktop/lightdm-wallpapers/orangepi.png new file mode 100755 index 0000000..26beb57 Binary files /dev/null and b/external/packages/blobs/desktop/lightdm-wallpapers/orangepi.png differ diff --git a/external/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf b/external/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf deleted file mode 100644 index 8d4d871..0000000 --- a/external/packages/blobs/desktop/lightdm/lightdm-gtk-greeter.conf +++ /dev/null @@ -1,10 +0,0 @@ -[greeter] -#background = #888a85 -#theme-name = Numix -#icon-theme-name = Numix -default-user-image=/usr/share/pixmaps/orangepi.png -#indicators = ~language;~power;~a11y -#screensaver-timeout = 0 -#font-name = Sans 11 -#user-background = false -#keyboard = onboard --theme=ModelM diff --git a/external/packages/blobs/desktop/lightdm/lightdm.conf.d/10-slick-greeter.conf b/external/packages/blobs/desktop/lightdm/lightdm.conf.d/10-slick-greeter.conf new file mode 100755 index 0000000..04a47cb --- /dev/null +++ b/external/packages/blobs/desktop/lightdm/lightdm.conf.d/10-slick-greeter.conf @@ -0,0 +1,2 @@ +[Seat:*] +greeter-session=slick-greeter diff --git a/external/packages/blobs/desktop/lightdm/lightdm.conf.d/11-orangepi.conf b/external/packages/blobs/desktop/lightdm/lightdm.conf.d/11-orangepi.conf index 9b14b95..3c1eabb 100644 --- a/external/packages/blobs/desktop/lightdm/lightdm.conf.d/11-orangepi.conf +++ b/external/packages/blobs/desktop/lightdm/lightdm.conf.d/11-orangepi.conf @@ -1,5 +1,5 @@ -[SeatDefaults] -user-session=ubuntu +[Seat:*] +user-session=xfce greeter-show-manual-login=false greeter-hide-users=false allow-guest=false diff --git a/external/packages/blobs/desktop/lightdm/slick-greeter.conf b/external/packages/blobs/desktop/lightdm/slick-greeter.conf new file mode 100755 index 0000000..82d1245 --- /dev/null +++ b/external/packages/blobs/desktop/lightdm/slick-greeter.conf @@ -0,0 +1,10 @@ +[Greeter] +background = /usr/share/backgrounds/orangepi-lightdm/orangepi-default.png +theme-name = Numix +icon-theme-name = Numix +font-name = Sans 11 +draw-user-background = false +show-keyboard = true +onscreen-keyboard = false +screen-reader = true +draw-grid = true diff --git a/external/packages/blobs/desktop/skel/.cinnamon/configs/menu@cinnamon.org/0.json b/external/packages/blobs/desktop/skel/.cinnamon/configs/menu@cinnamon.org/0.json new file mode 100755 index 0000000..e1bfc22 --- /dev/null +++ b/external/packages/blobs/desktop/skel/.cinnamon/configs/menu@cinnamon.org/0.json @@ -0,0 +1,258 @@ +{ + "layout": { + "type": "layout", + "pages": [ + "panel", + "menu" + ], + "panel": { + "type": "page", + "title": "Panel", + "sections": [ + "panel-appear", + "panel-behave" + ] + }, + "menu": { + "type": "page", + "title": "Menu", + "sections": [ + "menu-layout", + "menu-behave" + ] + }, + "panel-appear": { + "type": "section", + "title": "Appearance", + "keys": [ + "menu-custom", + "menu-icon", + "menu-icon-size", + "menu-label" + ] + }, + "panel-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "overlay-key", + "activate-on-hover", + "hover-delay", + "force-show-panel", + "enable-animation" + ] + }, + "menu-layout": { + "type": "section", + "title": "Layout and content", + "keys": [ + "show-category-icons", + "category-icon-size", + "show-application-icons", + "application-icon-size", + "favbox-show", + "fav-icon-size", + "favbox-min-height", + "show-places", + "show-recents", + "menu-editor-button" + ] + }, + "menu-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "enable-autoscroll", + "search-filesystem" + ] + } + }, + "overlay-key": { + "type": "keybinding", + "description": "Keyboard shortcut to open and close the menu", + "default": "Super_L::Super_R", + "value": "Super_L::Super_R" + }, + "menu-custom": { + "type": "switch", + "default": false, + "description": "Use a custom icon and label", + "tooltip": "Check this to specify a custom icon and label", + "value": true + }, + "menu-icon": { + "type": "iconfilechooser", + "default": "cinnamon-symbolic", + "description": "Icon", + "tooltip": "Select an icon to show in the panel.", + "default_icon": "cinnamon-symbolic", + "dependency": "menu-custom", + "indent": true, + "value": "/usr/share/pixmaps/orangepi/orangepi.png" + }, + "menu-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 96, + "step": 1, + "units": "px", + "description": "Icon size", + "dependency": "menu-custom", + "indent": true, + "value": 32 + }, + "menu-label": { + "type": "entry", + "default": "Menu", + "description": "Text", + "tooltip": "Enter custom text to show in the panel.", + "dependency": "menu-custom", + "indent": true, + "value": "Menu" + }, + "favbox-min-height": { + "type": "spinbutton", + "default": 300, + "min": 50, + "max": 1000, + "step": 10, + "units": "px", + "dependency": "favbox-show", + "description": "Minimum height of the favorites section", + "tooltip": "The minimum size allocated for the favorites section (this has an impact on the overall height of the menu).", + "value": 300 + }, + "show-category-icons": { + "type": "switch", + "default": true, + "description": "Show category icons", + "tooltip": "Choose whether or not to show icons on categories.", + "value": true + }, + "category-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Categories icon size", + "dependency": "show-category-icons", + "indent": true, + "value": 22 + }, + "show-application-icons": { + "type": "switch", + "default": true, + "description": "Show application icons", + "tooltip": "Choose whether or not to show icons on applications.", + "value": true + }, + "application-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Applications icon size", + "dependency": "show-application-icons", + "indent": true, + "value": 22 + }, + "favbox-show": { + "type": "switch", + "default": true, + "description": "Show favorites and session buttons", + "tooltip": "Choose whether or not to show the left pane of the menu.", + "value": true + }, + "fav-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 64, + "step": 1, + "units": "px", + "description": "Favorites icon size", + "dependency": "favbox-show", + "indent": true, + "value": 32 + }, + "show-favorites": { + "type": "switch", + "default": true, + "description": "Show favorites", + "tooltip": "Choose whether or not to show favorite files in the menu.", + "value": true + }, + "show-places": { + "type": "switch", + "default": true, + "description": "Show bookmarks and places", + "tooltip": "Choose whether or not to show bookmarks and places in the menu.", + "value": true + }, + "show-recents": { + "type": "switch", + "default": true, + "description": "Show recents", + "tooltip": "Choose whether or not to show recents in the menu.", + "value": true + }, + "enable-autoscroll": { + "type": "switch", + "default": true, + "description": "Enable autoscrolling in application list", + "tooltip": "Choose whether or not to enable smooth autoscrolling in the application list.", + "value": true + }, + "search-filesystem": { + "type": "switch", + "default": false, + "description": "Enable filesystem path entry in search box", + "tooltip": "Allows path entry in the menu search box.", + "value": false + }, + "force-show-panel": { + "type": "switch", + "default": true, + "description": "Force the panel to be visible when opening the menu", + "tooltip": "Opening the menu will also show the main panel (which may be auto-hidden).", + "value": true + }, + "activate-on-hover": { + "type": "switch", + "default": false, + "description": "Open the menu when I move my mouse over it", + "tooltip": "Enable opening the menu when the mouse enters the applet", + "value": false + }, + "hover-delay": { + "type": "spinbutton", + "default": 0, + "min": 0, + "max": 1000, + "step": 50, + "units": "milliseconds", + "dependency": "activate-on-hover", + "description": "Menu hover delay", + "tooltip": "Delay before the menu opens when hovered", + "value": 0 + }, + "enable-animation": { + "type": "switch", + "default": false, + "description": "Use menu animations", + "tooltip": "Allow the menu to animate on open and close", + "value": false + }, + "menu-editor-button": { + "type": "button", + "description": "Open the menu editor", + "callback": "_launch_editor", + "tooltip": "Press this button to customize your menu entries." + }, + "__md5__": "c4b27da93411965126569249b61793d7" +} diff --git a/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml index 4f1c5be..6527109 100644 --- a/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ b/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -4,49 +4,109 @@ - + - - + + - - + + - + - - + + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml index e5e76c1..3b28769 100644 --- a/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ b/external/packages/blobs/desktop/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -23,7 +23,7 @@ - + diff --git a/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-config.desktop b/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-config.desktop old mode 100644 new mode 100755 index 866ea3c..49402c3 --- a/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-config.desktop +++ b/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-config.desktop @@ -1,11 +1,11 @@ [Desktop Entry] Version=1.0 Type=Application -Name=orangepi-config +Name=OrangePi config Comment=Basic system settings Exec=sudo orangepi-config -Icon=preferences-system -Path= +Icon=/usr/share/icons/orangepi/opi_config128x128.png +Path=/usr/share/icons/orangepi/ Terminal=true StartupNotify=false Categories=GTK;GNOME;Settings;HardwareSettings; diff --git a/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-support.desktop b/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-support.desktop new file mode 100755 index 0000000..6d60241 --- /dev/null +++ b/external/packages/blobs/desktop/skel/.local/share/applications/orangepi-support.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Link +Name=Help +Comment=Community forums +URL=http://www.orangepi.org +Icon=help-about +StartupNotify=false +Terminal=false +Categories=GTK;GNOME;X-Xfce-Toplevel; diff --git a/external/packages/blobs/desktop/skel/.local/share/applications/xfce4-about.desktop b/external/packages/blobs/desktop/skel/.local/share/applications/xfce4-about.desktop old mode 100644 new mode 100755 diff --git a/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/appUtils.js b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/appUtils.js new file mode 100755 index 0000000..ff6ffa7 --- /dev/null +++ b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/appUtils.js @@ -0,0 +1,111 @@ +const Cinnamon = imports.gi.Cinnamon; +const CMenu = imports.gi.CMenu; + +const Util = imports.misc.util; + +let appsys = Cinnamon.AppSystem.get_default(); + +// sort apps by their latinised name +function appSort(a, b) { + a = Util.latinise(a[0].get_name().toLowerCase()); + b = Util.latinise(b[0].get_name().toLowerCase()); + return a > b; +} + +// sort cmenu directories with admin and prefs categories last +function dirSort(a, b) { + let menuIdA = a.get_menu_id().toLowerCase(); + let menuIdB = b.get_menu_id().toLowerCase(); + + let prefCats = ["administration", "preferences"]; + let prefIdA = prefCats.indexOf(menuIdA); + let prefIdB = prefCats.indexOf(menuIdB); + + if (prefIdA < 0 && prefIdB >= 0) { + return -1; + } + if (prefIdA >= 0 && prefIdB < 0) { + return 1; + } + + let nameA = a.get_name().toLowerCase(); + let nameB = b.get_name().toLowerCase(); + + if (nameA > nameB) { + return 1; + } + if (nameA < nameB) { + return -1; + } + return 0; +} + +/* returns all apps and the categories they belong to, and all top level categories + * + * [ + * [ + * app 1, + * [ + * top level category 1, + * random category, + * random category + * ] + * ], + * ... + * ], + * [ + * top level category 1, + * top level category 2, + * top level category 3, + * top level category 4, + * ... + * ] */ +function getApps() { + let apps = new Map(); + let dirs = []; + + let tree = appsys.get_tree(); + let root = tree.get_root_directory(); + let iter = root.iter(); + let nextType; + + while ((nextType = iter.next()) != CMenu.TreeItemType.INVALID) { + if (nextType == CMenu.TreeItemType.DIRECTORY) { + let dir = iter.get_directory(); + if (dir.get_is_nodisplay()) + continue; + if (loadDirectory(dir, dir, apps)) + dirs.push(dir); + } + } + + dirs.sort(dirSort); + let sortedApps = Array.from(apps.entries()).sort(appSort); + + return [sortedApps, dirs]; +} + +// load all apps and their categories from a cmenu directory +// into 'apps' Map +function loadDirectory(dir, top_dir, apps) { + let iter = dir.iter(); + let has_entries = false; + let nextType; + while ((nextType = iter.next()) != CMenu.TreeItemType.INVALID) { + if (nextType == CMenu.TreeItemType.ENTRY) { + let desktopId = iter.get_entry().get_desktop_file_id(); + let app = appsys.lookup_app(desktopId); + if (!app || app.get_nodisplay()) + continue; + + has_entries = true; + if (apps.has(app)) + apps.get(app).push(dir.get_menu_id()); + else + apps.set(app, [top_dir.get_menu_id()]); + } else if (nextType == CMenu.TreeItemType.DIRECTORY) { + has_entries = loadDirectory(iter.get_directory(), top_dir, apps); + } + } + return has_entries; +} diff --git a/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/applet.js b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/applet.js new file mode 100755 index 0000000..c92c2d4 --- /dev/null +++ b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/applet.js @@ -0,0 +1,3131 @@ +const Applet = imports.ui.applet; +const Mainloop = imports.mainloop; +const Lang = imports.lang; +const Cinnamon = imports.gi.Cinnamon; +const St = imports.gi.St; +const Clutter = imports.gi.Clutter; +const Main = imports.ui.main; +const MessageTray = imports.ui.messageTray; +const PopupMenu = imports.ui.popupMenu; +const AppFavorites = imports.ui.appFavorites; +const Gtk = imports.gi.Gtk; +const Atk = imports.gi.Atk; +const Gio = imports.gi.Gio; +const XApp = imports.gi.XApp; +const GnomeSession = imports.misc.gnomeSession; +const ScreenSaver = imports.misc.screenSaver; +const FileUtils = imports.misc.fileUtils; +const Util = imports.misc.util; +const DND = imports.ui.dnd; +const Meta = imports.gi.Meta; +const DocInfo = imports.misc.docInfo; +const GLib = imports.gi.GLib; +const Settings = imports.ui.settings; +const Pango = imports.gi.Pango; +const SearchProviderManager = imports.ui.searchProviderManager; +const SignalManager = imports.misc.signalManager; +const Params = imports.misc.params; + +const INITIAL_BUTTON_LOAD = 30; +const NUM_SYSTEM_BUTTONS = 3; +const MAX_BUTTON_WIDTH = "max-width: 20em;"; + +const USER_DESKTOP_PATH = FileUtils.getUserDesktopDir(); + +const PRIVACY_SCHEMA = "org.cinnamon.desktop.privacy"; +const REMEMBER_RECENT_KEY = "remember-recent-files"; + +const AppUtils = require('./appUtils'); + +let appsys = Cinnamon.AppSystem.get_default(); + +const RefreshFlags = Object.freeze({ + APP: 0b000001, + FAV_APP: 0b000010, + FAV_DOC: 0b000100, + PLACE: 0b001000, + RECENT: 0b010000, + SYSTEM: 0b100000 +}); +const REFRESH_ALL_MASK = 0b111111; + +const NO_MATCH = 99999; +const APP_MATCH_ADDERS = [ + 0, // name + 1000, // keywords + 2000, // desc + 3000 // id +]; +const RECENT_PLACES_ADDER = 4000; + +/* VisibleChildIterator takes a container (boxlayout, etc.) + * and creates an array of its visible children and their index + * positions. We can then work through that list without + * mucking about with positions and math, just give a + * child, and it'll give you the next or previous, or first or + * last child in the list. + * + * We could have this object regenerate off a signal + * every time the visibles have changed in our applicationBox, + * but we really only need it when we start keyboard + * navigating, so increase speed, we reload only when we + * want to use it. + */ + +class VisibleChildIterator { + constructor(container) { + this.container = container; + this.reloadVisible(); + } + + reloadVisible() { + this.array = this.container.get_focus_chain() + .filter(x => !(x._delegate instanceof PopupMenu.PopupSeparatorMenuItem)); + } + + getNextVisible(curChild) { + return this.getVisibleItem(this.array.indexOf(curChild) + 1); + } + + getPrevVisible(curChild) { + return this.getVisibleItem(this.array.indexOf(curChild) - 1); + } + + getFirstVisible() { + return this.array[0]; + } + + getLastVisible() { + return this.array[this.array.length - 1]; + } + + getVisibleIndex(curChild) { + return this.array.indexOf(curChild); + } + + getVisibleItem(index) { + let len = this.array.length; + index = ((index % len) + len) % len; + return this.array[index]; + } + + getNumVisibleChildren() { + return this.array.length; + } + + getAbsoluteIndexOfChild(child) { + return this.container.get_children().indexOf(child); + } +} + +/** + * SimpleMenuItem type strings in use: + * ------------------------------------------------- + * app ApplicationButton + * category CategoryButton + * fav FavoritesButton + * no-recent "No recent documents" button + * none Default type + * place PlaceButton + * recent RecentsButton + * recent-clear "Clear recent documents" button + * search-provider SearchProviderResultButton + * system SystemButton + * transient TransientButton + */ + +/** + * SimpleMenuItem default parameters. + */ +const SMI_DEFAULT_PARAMS = Object.freeze({ + name: '', + description: '', + type: 'none', + styleClass: 'popup-menu-item', + reactive: true, + activatable: true, + withMenu: false +}); + +/** + * A simpler alternative to PopupBaseMenuItem - does not implement all interfaces of PopupBaseMenuItem. Any + * additional properties in the params object beyond defaults will also be set on the instance. + * @param {Object} applet - The menu applet instance + * @param {Object} params - Object containing item parameters, all optional. + * @param {string} params.name - The name for the menu item. + * @param {string} params.description - The description for the menu item. + * @param {string} params.type - A string describing the type of item. + * @param {string} params.styleClass - The item's CSS style class. + * @param {boolean} params.reactive - Item recieves events. + * @param {boolean} params.activatable - Activates via primary click. Must provide an 'activate' function on + * the prototype or instance. + * @param {boolean} params.withMenu - Shows menu via secondary click. Must provide a 'populateMenu' function + * on the prototype or instance. + */ +class SimpleMenuItem { + constructor(applet, params) { + params = Params.parse(params, SMI_DEFAULT_PARAMS, true); + this._signals = new SignalManager.SignalManager(); + + this.actor = new St.BoxLayout({ style_class: params.styleClass, + style: MAX_BUTTON_WIDTH, + reactive: params.reactive, + accessible_role: Atk.Role.MENU_ITEM }); + + this._signals.connect(this.actor, 'destroy', () => this.destroy(true)); + + this.actor._delegate = this; + this.applet = applet; + this.label = null; + this.icon = null; + + this.matchIndex = NO_MATCH; + + for (let prop in params) + this[prop] = params[prop]; + + if (params.reactive) { + this._signals.connect(this.actor, 'enter-event', () => applet._buttonEnterEvent(this)); + this._signals.connect(this.actor, 'leave-event', () => applet._buttonLeaveEvent(this)); + if (params.activatable || params.withMenu) { + this._signals.connect(this.actor, 'button-release-event', Lang.bind(this, this._onButtonReleaseEvent)); + this._signals.connect(this.actor, 'key-press-event', Lang.bind(this, this._onKeyPressEvent)); + } + } + } + + _onButtonReleaseEvent(actor, event) { + let button = event.get_button(); + if (this.activate && button === Clutter.BUTTON_PRIMARY) { + this.activate(); + return Clutter.EVENT_STOP; + } else if (this.populateMenu && button === Clutter.BUTTON_SECONDARY) { + this.applet.toggleContextMenu(this); + return Clutter.EVENT_STOP; + } + return Clutter.EVENT_PROPAGATE; + } + + _onKeyPressEvent(actor, event) { + let symbol = event.get_key_symbol(); + if (this.activate && + (symbol === Clutter.KEY_space || + symbol === Clutter.KEY_Return || + symbol === Clutter.KEY_KP_Enter)) { + this.activate(); + return Clutter.EVENT_STOP; + } + return Clutter.EVENT_PROPAGATE; + } + + /** + * Adds an StIcon as the next child, acessible as `this.icon`. + * + * Either an icon name or gicon is required. Only one icon is supported by the + * base SimpleMenuItem. + * + * @param {number} iconSize - The icon size in px. + * @param {string} iconName - (optional) The icon name string. + * @param {object} gicon - (optional) A gicon. + * @param {boolean} symbolic - (optional) Whether the icon should be symbolic. Default: false. + */ + addIcon(iconSize, iconName='', gicon=null, symbolic=false) { + if (this.icon) + return; + + let params = { icon_size: iconSize }; + + if (iconName) + params.icon_name = iconName; + else if (gicon) + params.gicon = gicon; + + params.icon_type = symbolic ? St.IconType.SYMBOLIC : St.IconType.FULLCOLOR; + + this.icon = new St.Icon(params); + this.actor.add_actor(this.icon); + } + + /** + * Removes the icon previously added with addIcon() + */ + removeIcon() { + if (!this.icon) + return; + this.icon.destroy(); + this.icon = null; + } + + /** + * Adds an StLabel as the next child, accessible as `this.label`. + * + * Only one label is supported by the base SimpleMenuItem prototype. + * + * @param {string} label - (optional) An unformatted string. If markup is required, use + * native methods directly: `this.label.clutter_text.set_markup()`. + * @param {string} styleClass - (optional) A style class for the label. + */ + addLabel(label='', styleClass=null) { + if (this.label) + return; + + this.label = new St.Label({ text: label, y_expand: true, y_align: Clutter.ActorAlign.CENTER }); + if (styleClass) + this.label.set_style_class_name(styleClass); + this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END; + this.actor.add_actor(this.label); + } + + /** + * Removes the label previously added with addLabel() + */ + removeLabel() { + if (!this.label) + return; + this.label.destroy(); + this.label = null; + } + + /** + * Adds a ClutterActor as the next child. + * + * @param {ClutterActor} child + */ + addActor(child) { + this.actor.add_actor(child); + } + + /** + * Removes a ClutterActor. + * + * @param {ClutterActor} child + */ + removeActor(child) { + this.actor.remove_actor(child); + } + + destroy(actorDestroySignal=false) { + this._signals.disconnectAllSignals(); + + if (this.label) + this.label.destroy(); + if (this.icon) + this.icon.destroy(); + if (!actorDestroySignal) + this.actor.destroy(); + + delete this.actor._delegate; + delete this.actor; + delete this.label; + delete this.icon; + } +} + +class ApplicationContextMenuItem extends PopupMenu.PopupBaseMenuItem { + constructor(appButton, label, action, iconName) { + super({focusOnHover: false}); + + this._appButton = appButton; + this._action = action; + this.label = new St.Label({ text: label }); + + if (iconName != null) { + this.icon = new St.Icon({ icon_name: iconName, icon_size: 12, icon_type: St.IconType.SYMBOLIC }); + if (this.icon) + this.addActor(this.icon); + } + + this.addActor(this.label); + } + + activate (event) { + switch (this._action) { + case "add_to_panel": + if (!Main.AppletManager.get_role_provider_exists(Main.AppletManager.Roles.PANEL_LAUNCHER)) { + let new_applet_id = global.settings.get_int("next-applet-id"); + global.settings.set_int("next-applet-id", (new_applet_id + 1)); + let enabled_applets = global.settings.get_strv("enabled-applets"); + enabled_applets.push("panel1:right:0:panel-launchers@cinnamon.org:" + new_applet_id); + global.settings.set_strv("enabled-applets", enabled_applets); + } + // wait until the panel launchers instance is actually loaded + // 10 tries, delay 100ms + let retries = 10; + Mainloop.timeout_add(100, () => { + if (retries--) { + let launcherApplet = Main.AppletManager.get_role_provider(Main.AppletManager.Roles.PANEL_LAUNCHER); + if (!launcherApplet) + return true; + launcherApplet.acceptNewLauncher(this._appButton.app.get_id()); + } + return false; + }); + break; + case "add_to_desktop": + let file = Gio.file_new_for_path(this._appButton.app.get_app_info().get_filename()); + let destFile = Gio.file_new_for_path(USER_DESKTOP_PATH+"/"+file.get_basename()); + try{ + file.copy(destFile, 0, null, function(){}); + FileUtils.changeModeGFile(destFile, 755); + }catch(e){ + global.log(e); + } + break; + case "add_to_favorites": + AppFavorites.getAppFavorites().addFavorite(this._appButton.app.get_id()); + break; + case "remove_from_favorites": + AppFavorites.getAppFavorites().removeFavorite(this._appButton.app.get_id()); + break; + case "uninstall": + Util.spawnCommandLine("/usr/bin/cinnamon-remove-application '" + this._appButton.app.get_app_info().get_filename() + "'"); + break; + case "run_with_nvidia_gpu": + Util.spawnCommandLine("optirun gtk-launch " + this._appButton.app.get_id()); + break; + case "offload_launch": + try { + this._appButton.app.launch_offloaded(0, [], -1); + } catch (e) { + logError(e, "Could not launch app with dedicated gpu: "); + } + break; + default: + return true; + } + this._appButton.applet.toggleContextMenu(this._appButton); + this._appButton.applet.menu.close(); + return false; + } + +} + +class GenericApplicationButton extends SimpleMenuItem { + constructor(applet, app, type, withMenu=false, styleClass="") { + let desc = app.get_description() || ""; + super(applet, { name: app.get_name(), + description: desc.split("\n")[0], + type: type, + withMenu: withMenu, + styleClass: styleClass, + app: app }); + } + + highlight() { + if (this.actor.has_style_pseudo_class('highlighted')) + return; + + this.actor.add_style_pseudo_class('highlighted'); + } + + unhighlight() { + if (!this.actor.has_style_pseudo_class('highlighted')) + return; + + let appKey = this.app.get_id() || `${this.name}:${this.description}`; + this.applet._knownApps.add(appKey); + this.actor.remove_style_pseudo_class('highlighted'); + } + + activate() { + this.unhighlight(); + this.app.open_new_window(-1); + this.applet.menu.close(); + } + + populateMenu(menu) { + let menuItem; + if (Main.gpu_offload_supported) { + menuItem = new ApplicationContextMenuItem(this, _("Run with NVIDIA GPU"), "offload_launch", "cpu"); + menu.addMenuItem(menuItem); + } else if (this.applet._isBumblebeeInstalled) { + menuItem = new ApplicationContextMenuItem(this, _("Run with NVIDIA GPU"), "run_with_nvidia_gpu", "cpu"); + menu.addMenuItem(menuItem); + } + + menuItem = new ApplicationContextMenuItem(this, _("Add to panel"), "add_to_panel", "list-add"); + menu.addMenuItem(menuItem); + + if (USER_DESKTOP_PATH){ + menuItem = new ApplicationContextMenuItem(this, _("Add to desktop"), "add_to_desktop", "computer"); + menu.addMenuItem(menuItem); + } + + if (AppFavorites.getAppFavorites().isFavorite(this.app.get_id())){ + menuItem = new ApplicationContextMenuItem(this, _("Remove from favorites"), "remove_from_favorites", "starred"); + menu.addMenuItem(menuItem); + } else { + menuItem = new ApplicationContextMenuItem(this, _("Add to favorites"), "add_to_favorites", "non-starred"); + menu.addMenuItem(menuItem); + } + + if (this.applet._canUninstallApps) { + menuItem = new ApplicationContextMenuItem(this, _("Uninstall"), "uninstall", "edit-delete"); + menu.addMenuItem(menuItem); + } + } +} + +class TransientButton extends SimpleMenuItem { + constructor(applet, pathOrCommand) { + super(applet, { description: pathOrCommand, + type: 'transient', + styleClass: 'menu-application-button' }); + if (pathOrCommand.startsWith('~')) { + pathOrCommand = pathOrCommand.slice(1); + pathOrCommand = GLib.get_home_dir() + pathOrCommand; + } + + this.isPath = pathOrCommand.substr(pathOrCommand.length - 1) == '/'; + if (this.isPath) { + this.path = pathOrCommand; + } else { + let n = pathOrCommand.lastIndexOf('/'); + if (n != 1) { + this.path = pathOrCommand.substr(0, n); + } + } + + this.pathOrCommand = pathOrCommand; + + this.file = Gio.file_new_for_path(this.pathOrCommand); + + if (applet.showApplicationIcons) { + try { + this.handler = this.file.query_default_handler(null); + let contentType = Gio.content_type_guess(this.pathOrCommand, null); + let themedIcon = Gio.content_type_get_icon(contentType[0]); + this.icon = new St.Icon({gicon: themedIcon, icon_size: applet.applicationIconSize, icon_type: St.IconType.FULLCOLOR }); + } catch (e) { + this.handler = null; + let iconName = this.isPath ? 'folder' : 'unknown'; + this.icon = new St.Icon({icon_name: iconName, icon_size: applet.applicationIconSize, icon_type: St.IconType.FULLCOLOR}); + // @todo Would be nice to indicate we don't have a handler for this file. + } + + this.addActor(this.icon); + } + + this.addLabel(this.description, 'menu-application-button-label'); + + this.isDraggableApp = false; + } + + activate() { + if (this.handler != null) { + this.handler.launch([this.file], null); + } else { + // Try anyway, even though we probably shouldn't. + try { + Util.spawn(['gio', 'open', this.file.get_uri()]); + } catch (e) { + global.logError("No handler available to open " + this.file.get_uri()); + } + } + + this.applet.menu.close(); + } +} + +class ApplicationButton extends GenericApplicationButton { + constructor(applet, app) { + super(applet, app, 'app', true, 'menu-application-button'); + this.category = []; + + this.icon = this.app.create_icon_texture(applet.applicationIconSize); + this.addActor(this.icon); + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this._draggable = DND.makeDraggable(this.actor); + this._signals.connect(this._draggable, 'drag-end', Lang.bind(this, this._onDragEnd)); + this.isDraggableApp = true; + + this.searchStrings = [ + Util.latinise(app.get_name().toLowerCase()), + app.get_keywords() ? Util.latinise(app.get_keywords().toLowerCase()) : "", + app.get_description() ? Util.latinise(app.get_description().toLowerCase()) : "", + app.get_id() ? Util.latinise(app.get_id().toLowerCase()) : "" + ]; + } + + get_app_id() { + return this.app.get_id(); + } + + getDragActor() { + return this.app.create_icon_texture(this.applet.favIconSize); + } + + // Returns the original actor that should align with the actor + // we show as the item is being dragged. + getDragActorSource() { + return this.actor; + } + + _onDragEnd() { + this.applet.favoritesBox._delegate._clearDragPlaceholder(); + } + destroy() { + delete this._draggable; + super.destroy(); + } +} + +class SearchProviderResultButton extends SimpleMenuItem { + constructor(applet, provider, result) { + super(applet, { name:result.label, + description: result.description, + type: 'search-provider', + styleClass: 'menu-application-button', + provider: provider, + result: result }); + + if (applet.showApplicationIcons) { + if (result.icon) { + this.icon = result.icon; + } else if (result.icon_app) { + this.icon = result.icon_app.create_icon_texture(applet.applicationIconSize); + } else if (result.icon_filename) { + this.icon = new St.Icon({gicon: new Gio.FileIcon({file: Gio.file_new_for_path(result.icon_filename)}), icon_size: applet.applicationIconSize}); + } + + if (this.icon) + this.addActor(this.icon); + } + + this.addLabel(result.label, 'menu-application-button-label'); + } + + activate() { + try { + this.provider.on_result_selected(this.result); + this.applet.menu.close(); + } catch(e) { + global.logError(e); + } + } + + destroy() { + delete this.provider; + delete this.result; + super.destroy(); + } +} + +class PlaceButton extends SimpleMenuItem { + constructor(applet, place) { + let selectedAppId = place.idDecoded.substr(place.idDecoded.indexOf(':') + 1); + let fileIndex = selectedAppId.indexOf('file:///'); + if (fileIndex !== -1) + selectedAppId = selectedAppId.substr(fileIndex + 7); + + if (selectedAppId === "home" || selectedAppId === "desktop" || selectedAppId === "connect") { + selectedAppId = place.name + } + + super(applet, { name: place.name, + description: selectedAppId, + type: 'place', + styleClass: 'menu-application-button', + place: place }); + + this.icon = place.iconFactory(applet.applicationIconSize); + if (this.icon) + this.addActor(this.icon); + else + this.addIcon(applet.applicationIconSize, 'folder'); + + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this.searchStrings = [ + Util.latinise(place.name.toLowerCase()) + ]; + } + + activate() { + this.place.launch(); + this.applet.menu.close(); + } +} + +class UserfileContextMenuItem extends PopupMenu.PopupBaseMenuItem { + constructor(button, label, is_default, cbParams, callback) { + super({focusOnHover: false}); + + this._button = button; + this._cbParams = cbParams; + this._callback = callback; + this.label = new St.Label({ text: label }); + this.addActor(this.label); + + if (is_default) + this.label.style = "font-weight: bold;"; + } + + activate (event) { + this._callback(...this._cbParams); + return false; + } +} + +class RecentButton extends SimpleMenuItem { + constructor(applet, recent) { + let fileIndex = recent.uriDecoded.indexOf("file:///"); + let selectedAppUri = fileIndex === -1 ? "" : recent.uriDecoded.substr(fileIndex + 7); + + super(applet, { name: recent.name, + description: selectedAppUri, + type: 'recent', + styleClass: 'menu-application-button', + withMenu: true, + mimeType: recent.mimeType, + uri: recent.uri, + uriDecoded: recent.uriDecoded }); + + this.icon = recent.createIcon(applet.applicationIconSize); + this.addActor(this.icon); + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this.searchStrings = [ + Util.latinise(recent.name.toLowerCase()) + ]; + } + + activate() { + try { + Gio.app_info_launch_default_for_uri(this.uri, global.create_app_launch_context()); + this.applet.menu.close(); + } catch (e) { + let source = new MessageTray.SystemNotificationSource(); + Main.messageTray.add(source); + let notification = new MessageTray.Notification(source, + _("This file is no longer available"), + e.message); + notification.setTransient(true); + notification.setUrgency(MessageTray.Urgency.NORMAL); + source.notify(notification); + } + } + + hasLocalPath(file) { + return file.is_native() || file.get_path() != null; + } + + populateMenu(menu) { + let menuItem; + menuItem = new PopupMenu.PopupMenuItem(_("Open with"), { reactive: false }); + menuItem.actor.style = "font-weight: bold"; + menu.addMenuItem(menuItem); + + let file = Gio.File.new_for_uri(this.uri); + + let default_info = Gio.AppInfo.get_default_for_type(this.mimeType, !this.hasLocalPath(file)); + + let infoLaunchFunc = (info, file) => { + info.launch([file], null); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }; + + if (default_info) { + menuItem = new UserfileContextMenuItem(this, + default_info.get_display_name(), + false, + [default_info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + let infos = Gio.AppInfo.get_all_for_type(this.mimeType); + + for (let i = 0; i < infos.length; i++) { + let info = infos[i]; + + file = Gio.File.new_for_uri(this.uri); + + if (!this.hasLocalPath(file) && !info.supports_uris()) + continue; + + if (info.equal(default_info)) + continue; + + menuItem = new UserfileContextMenuItem(this, + info.get_display_name(), + false, + [info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + if (GLib.find_program_in_path ("nemo-open-with") != null) { + menuItem = new UserfileContextMenuItem(this, + _("Other application..."), + false, + [], + () => { + Util.spawnCommandLine("nemo-open-with " + this.uri); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }); + menu.addMenuItem(menuItem); + } + } +} + +class FavoriteButton extends SimpleMenuItem { + constructor(applet, favoriteInfo) { + super(applet, { name: favoriteInfo.display_name, + description: favoriteInfo.uri, + type: 'favorite', + styleClass: 'menu-application-button', + withMenu: true, + mimeType: favoriteInfo.cached_mimetype, + uri: favoriteInfo.uri }); + + this.favoriteInfo = favoriteInfo; + + let gicon = Gio.content_type_get_icon(favoriteInfo.cached_mimetype); + this.icon = new St.Icon({ gicon: gicon, icon_size: applet.applicationIconSize }) + + this.addActor(this.icon); + + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this.searchStrings = [ + Util.latinise(favoriteInfo.display_name.toLowerCase()) + ]; + } + + activate() { + try { + XApp.Favorites.get_default().launch(this.uri, 0); + this.applet.menu.close(); + } catch (e) { + let source = new MessageTray.SystemNotificationSource(); + Main.messageTray.add(source); + let notification = new MessageTray.Notification(source, + _("This file is no longer available"), + e.message); + notification.setTransient(true); + notification.setUrgency(MessageTray.Urgency.NORMAL); + source.notify(notification); + } + } + + hasLocalPath(file) { + return file.is_native() || file.get_path() != null; + } + + populateMenu(menu) { + let menuItem; + menuItem = new PopupMenu.PopupMenuItem(_("Open with"), { reactive: false }); + menuItem.actor.style = "font-weight: bold"; + menu.addMenuItem(menuItem); + + let file = Gio.File.new_for_uri(this.uri); + + let default_info = Gio.AppInfo.get_default_for_type(this.mimeType, !this.hasLocalPath(file)); + + let infoLaunchFunc = (info, file) => { + info.launch([file], null); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }; + + if (default_info) { + menuItem = new UserfileContextMenuItem(this, + default_info.get_display_name(), + false, + [default_info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + let infos = Gio.AppInfo.get_all_for_type(this.mimeType); + + for (let i = 0; i < infos.length; i++) { + let info = infos[i]; + + file = Gio.File.new_for_uri(this.uri); + + if (!this.hasLocalPath(file) && !info.supports_uris()) + continue; + + if (info.equal(default_info)) + continue; + + menuItem = new UserfileContextMenuItem(this, + info.get_display_name(), + false, + [info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + if (GLib.find_program_in_path ("nemo-open-with") != null) { + menuItem = new UserfileContextMenuItem(this, + _("Other application..."), + false, + [], + () => { + Util.spawnCommandLine("nemo-open-with " + this.uri); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }); + menu.addMenuItem(menuItem); + } + } +} + +class CategoryButton extends SimpleMenuItem { + constructor(applet, categoryId, label, icon) { + super(applet, { name: label || _("All Applications"), + type: 'category', + styleClass: 'menu-category-button', + categoryId: categoryId }); + this.actor.accessible_role = Atk.Role.LIST_ITEM; + + if (typeof icon === 'string') + this.addIcon(applet.categoryIconSize, icon); + else if (icon) + this.addIcon(applet.categoryIconSize, null, icon); + + if (this.icon && !applet.showCategoryIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-category-button-label'); + } +} + +class FavoritesButton extends GenericApplicationButton { + constructor(applet, app) { + super(applet, app, 'fav', false, 'menu-favorites-button'); + this.icon = app.create_icon_texture(applet.favIconSize); + this.addActor(this.icon); + + this._draggable = DND.makeDraggable(this.actor); + this._signals.connect(this._draggable, 'drag-end', Lang.bind(this, this._onDragEnd)); + this.isDraggableApp = true; + } + + _onDragEnd() { + this.actor.get_parent()._delegate._clearDragPlaceholder(); + } + + get_app_id() { + return this.app.get_id(); + } + + getDragActor() { + return new Clutter.Clone({ source: this.actor }); + } + + // Returns the original actor that should align with the actor + // we show as the item is being dragged. + getDragActorSource() { + return this.actor; + } + + destroy() { + delete this._draggable; + super.destroy(); + } +} + +class SystemButton extends SimpleMenuItem { + constructor(applet, iconName, name, desc) { + super(applet, { name: name, + description: desc, + type: 'system', + styleClass: 'menu-favorites-button' }); + this.addIcon(applet.favIconSize, iconName); + } +} + +class CategoriesApplicationsBox { + constructor() { + this.actor = new St.BoxLayout(); + this.actor._delegate = this; + } + + acceptDrop (source, actor, x, y, time) { + if (source instanceof FavoritesButton){ + source.actor.destroy(); + actor.destroy(); + AppFavorites.getAppFavorites().removeFavorite(source.app.get_id()); + return true; + } + return false; + } + + handleDragOver (source, actor, x, y, time) { + if (source instanceof FavoritesButton) + return DND.DragMotionResult.POINTING_DROP; + + return DND.DragMotionResult.CONTINUE; + } +} + +class FavoritesBox { + constructor() { + this.actor = new St.BoxLayout({ vertical: true }); + this.actor._delegate = this; + + this._dragPlaceholder = null; + this._dragPlaceholderPos = -1; + this._animatingPlaceholdersCount = 0; + } + + _clearDragPlaceholder() { + if (this._dragPlaceholder) { + this._dragPlaceholder.animateOutAndDestroy(); + this._dragPlaceholder = null; + this._dragPlaceholderPos = -1; + } + } + + handleDragOver (source, actor, x, y, time) { + let app = source.app; + + let favorites = AppFavorites.getAppFavorites().getFavorites(); + let numFavorites = favorites.length; + + let favPos = favorites.indexOf(app); + + let children = this.actor.get_children(); + let numChildren = children.length; + let boxHeight = this.actor.height; + + // Keep the placeholder out of the index calculation; assuming that + // the remove target has the same size as "normal" items, we don't + // need to do the same adjustment there. + if (this._dragPlaceholder) { + boxHeight -= this._dragPlaceholder.actor.height; + numChildren--; + } + + let pos = Math.round(y * numChildren / boxHeight); + + if (pos != this._dragPlaceholderPos && pos <= numFavorites) { + if (this._animatingPlaceholdersCount > 0) { + let appChildren = children.filter(function(actor) { + return (actor._delegate instanceof FavoritesButton); + }); + this._dragPlaceholderPos = children.indexOf(appChildren[pos]); + } else { + this._dragPlaceholderPos = pos; + } + + // Don't allow positioning before or after self + if (favPos != -1 && (pos == favPos || pos == favPos + 1)) { + if (this._dragPlaceholder) { + this._dragPlaceholder.animateOutAndDestroy(); + this._animatingPlaceholdersCount++; + this._dragPlaceholder.actor.connect('destroy', + Lang.bind(this, function() { + this._animatingPlaceholdersCount--; + })); + } + this._dragPlaceholder = null; + + return DND.DragMotionResult.CONTINUE; + } + + // If the placeholder already exists, we just move + // it, but if we are adding it, expand its size in + // an animation + let fadeIn; + if (this._dragPlaceholder) { + this._dragPlaceholder.actor.destroy(); + fadeIn = false; + } else { + fadeIn = true; + } + + this._dragPlaceholder = new DND.GenericDragPlaceholderItem(); + this._dragPlaceholder.child.set_width (source.actor.height); + this._dragPlaceholder.child.set_height (source.actor.height); + this.actor.insert_child_at_index(this._dragPlaceholder.actor, + this._dragPlaceholderPos); + if (fadeIn) + this._dragPlaceholder.animateIn(); + } + + let id = app.get_id(); + let favoritesMap = AppFavorites.getAppFavorites().getFavoriteMap(); + let srcIsFavorite = (id in favoritesMap); + + if (!srcIsFavorite) + return DND.DragMotionResult.COPY_DROP; + + return DND.DragMotionResult.MOVE_DROP; + } + + // Draggable target interface + acceptDrop (source, actor, x, y, time) { + let app = source.app; + + let id = app.get_id(); + + let favorites = AppFavorites.getAppFavorites().getFavoriteMap(); + + let srcIsFavorite = (id in favorites); + + let favPos = 0; + let children = this.actor.get_children(); + for (let i = 0; i < this._dragPlaceholderPos; i++) { + if (this._dragPlaceholder && + children[i] == this._dragPlaceholder.actor) + continue; + + if (!(children[i]._delegate instanceof FavoritesButton)) continue; + + let childId = children[i]._delegate.app.get_id(); + if (childId == id) + continue; + if (childId in favorites) + favPos++; + } + + Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, + function () { + let appFavorites = AppFavorites.getAppFavorites(); + if (srcIsFavorite) + appFavorites.moveFavoriteToPos(id, favPos); + else + appFavorites.addFavoriteAtPos(id, favPos); + return false; + })); + + return true; + } +} + +/* This is so we can override the default key-press-event handler in PopupMenu.PopupMenu + * and prevent animation when the menu via Escape. */ +class Menu extends Applet.AppletPopupMenu { + constructor(launcher, orientation) { + super(launcher, orientation); + } + + _onKeyPressEvent(actor, event) { + if (event.get_key_symbol() === Clutter.KEY_Escape) { + this.close(false); + return true; + } + + return false; + } +} + +class CinnamonMenuApplet extends Applet.TextIconApplet { + constructor(orientation, panel_height, instance_id) { + super(orientation, panel_height, instance_id); + + this.setAllowedLayout(Applet.AllowedLayout.BOTH); + + this.set_applet_tooltip(_("Menu")); + this.menuManager = new PopupMenu.PopupMenuManager(this); + this.menu = new Menu(this, orientation); + this.menuManager.addMenu(this.menu); + + this.settings = new Settings.AppletSettings(this, "menu@cinnamon.org", instance_id); + + this.settings.bind("show-favorites", "showFavorites", () => this.queueRefresh(RefreshFlags.FAV_DOC)); + this.settings.bind("show-places", "showPlaces", () => this.queueRefresh(RefreshFlags.PLACE)); + this.settings.bind("show-recents", "showRecents", () => this.queueRefresh(RefreshFlags.RECENT)); + + this._appletEnterEventId = 0; + this._appletLeaveEventId = 0; + this._appletHoverDelayId = 0; + + this.settings.bind("hover-delay", "hover_delay_ms", this._updateActivateOnHover); + this.settings.bind("activate-on-hover", "activateOnHover", this._updateActivateOnHover); + this._updateActivateOnHover(); + + this.menu.setCustomStyleClass('menu-background'); + this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged)); + + this.settings.bind("menu-custom", "menuCustom", this._updateIconAndLabel); + this.settings.bind("menu-icon", "menuIcon", this._updateIconAndLabel); + this.settings.bind("menu-icon-size", "menuIconSize", this._updateIconAndLabel); + this.settings.bind("menu-label", "menuLabel", this._updateIconAndLabel); + this.settings.bind("overlay-key", "overlayKey", this._updateKeybinding); + this.settings.bind("show-category-icons", "showCategoryIcons", () => this._updateShowIcons(this.categoriesBox, this.showCategoryIcons)); + this.settings.bind("category-icon-size", "categoryIconSize", () => this.queueRefresh(RefreshFlags.PLACE | RefreshFlags.RECENT | RefreshFlags.APP)); + this.settings.bind("show-application-icons", "showApplicationIcons", () => this._updateShowIcons(this.applicationsBox, this.showApplicationIcons)); + this.settings.bind("application-icon-size", "applicationIconSize", () => this.queueRefresh(RefreshFlags.PLACE | RefreshFlags.RECENT | RefreshFlags.APP)); + this.settings.bind("favbox-show", "favBoxShow", this._favboxtoggle); + this.settings.bind("fav-icon-size", "favIconSize", () => this.queueRefresh(RefreshFlags.FAV_APP | RefreshFlags.SYSTEM)); + this.settings.bind("enable-animation", "enableAnimation", null); + this.settings.bind("favbox-min-height", "favBoxMinHeight", this._recalc_height); + + this._updateKeybinding(); + + Main.themeManager.connect("theme-set", Lang.bind(this, this._updateIconAndLabel)); + this._updateIconAndLabel(); + + this._searchInactiveIcon = new St.Icon({ style_class: 'menu-search-entry-icon', + icon_name: 'edit-find', + icon_type: St.IconType.SYMBOLIC }); + this._searchActiveIcon = new St.Icon({ style_class: 'menu-search-entry-icon', + icon_name: 'edit-clear', + icon_type: St.IconType.SYMBOLIC }); + this._searchIconClickedId = 0; + this._applicationsButtons = []; + this._favoriteAppButtons = []; + this._placesButtons = []; + this._transientButtons = []; + this.recentButton = null; + this._recentButtons = []; + this.favoriteDocsButton = null; + this._favoriteDocButtons = []; + this._categoryButtons = []; + this._searchProviderButtons = []; + this._selectedItemIndex = null; + this._previousSelectedActor = null; + this._previousVisibleIndex = null; + this._previousTreeSelectedActor = null; + this._activeContainer = null; + this._activeActor = null; + this._knownApps = new Set(); // Used to keep track of apps that are already installed, so we can highlight newly installed ones + this._appsWereRefreshed = false; + this._canUninstallApps = GLib.file_test("/usr/bin/cinnamon-remove-application", GLib.FileTest.EXISTS); + this._isBumblebeeInstalled = GLib.file_test("/usr/bin/optirun", GLib.FileTest.EXISTS); + this.RecentManager = DocInfo.getDocManager(); + this.privacy_settings = new Gio.Settings( {schema_id: PRIVACY_SCHEMA} ); + this.noRecentDocuments = true; + this._activeContextMenuParent = null; + this._activeContextMenuItem = null; + this._display(); + appsys.connect('installed-changed', () => this.queueRefresh(RefreshFlags.APP | RefreshFlags.FAV_APP)); + AppFavorites.getAppFavorites().connect('changed', () => this.queueRefresh(RefreshFlags.FAV_APP)); + Main.placesManager.connect('places-updated', () => this.queueRefresh(RefreshFlags.PLACE)); + this.RecentManager.connect('changed', () => this.queueRefresh(RefreshFlags.RECENT)); + this.privacy_settings.connect("changed::" + REMEMBER_RECENT_KEY, () => this.queueRefresh(RefreshFlags.RECENT)); + XApp.Favorites.get_default().connect("changed", () => this.queueRefresh(RefreshFlags.FAV_DOC)); + this._fileFolderAccessActive = false; + this._pathCompleter = new Gio.FilenameCompleter(); + this._pathCompleter.set_dirs_only(false); + this.lastAcResults = []; + this.settings.bind("search-filesystem", "searchFilesystem"); + this.contextMenu = null; + this.lastSelectedCategory = null; + this.settings.bind("force-show-panel", "forceShowPanel"); + + this.orderDirty = false; + + // We shouldn't need to call refreshAll() here... since we get a "icon-theme-changed" signal when CSD starts. + // The reason we do is in case the Cinnamon icon theme is the same as the one specificed in GTK itself (in .config) + // In that particular case we get no signal at all. + this.refreshId = 0; + this.refreshMask = REFRESH_ALL_MASK; + this._doRefresh(); + + this.set_show_label_in_vertical_panels(false); + } + + _updateShowIcons(container, show) { + Util.each(container.get_children(), c => { + let b = c._delegate; + if (!(b instanceof SimpleMenuItem)) + return; + if (b.icon) + b.icon.visible = show; + }) + } + + _updateKeybinding() { + Main.keybindingManager.addHotKey("overlay-key-" + this.instance_id, this.overlayKey, Lang.bind(this, function() { + if (!Main.overview.visible && !Main.expo.visible) + this.menu.toggle_with_options(this.enableAnimation); + })); + } + + queueRefresh(refreshFlags) { + if (!refreshFlags) + return; + this.refreshMask |= refreshFlags; + if (this.refreshId) + Mainloop.source_remove(this.refreshId); + this.refreshId = Mainloop.timeout_add(500, () => this._doRefresh(), Mainloop.PRIORITY_LOW); + } + + _doRefresh() { + this.refreshId = 0; + if (this.refreshMask === 0) + return; + + let m = this.refreshMask; + if ((m & RefreshFlags.APP) === RefreshFlags.APP) + this._refreshApps(); + if ((m & RefreshFlags.FAV_APP) === RefreshFlags.FAV_APP) + this._refreshFavApps(); + if ((m & RefreshFlags.SYSTEM) === RefreshFlags.SYSTEM) + this._refreshSystemButtons(); + if ((m & RefreshFlags.FAV_DOC) === RefreshFlags.FAV_DOC) + this._refreshFavDocs(); + if ((m & RefreshFlags.PLACE) === RefreshFlags.PLACE) + this._refreshPlaces(); + if ((m & RefreshFlags.RECENT) === RefreshFlags.RECENT) + this._refreshRecent(); + + this.refreshMask = 0; + + // Repack the three special categories at the bottom of the category list. + if (this.favoriteDocsButton) { + this.categoriesBox.set_child_at_index(this.favoriteDocsButton.actor, -1); + } + + if (this.placesButton) { + this.categoriesBox.set_child_at_index(this.placesButton.actor, -1); + } + + if (this.recentButton) { + this.categoriesBox.set_child_at_index(this.recentButton.actor, -1); + } + + this._resizeApplicationsBox(); + } + + openMenu() { + if (!this._applet_context_menu.isOpen) { + this.menu.open(this.enableAnimation); + } + } + + _clearDelayCallbacks() { + if (this._appletHoverDelayId > 0) { + Mainloop.source_remove(this._appletHoverDelayId); + this._appletHoverDelayId = 0; + } + if (this._appletLeaveEventId > 0) { + this.actor.disconnect(this._appletLeaveEventId); + this._appletLeaveEventId = 0; + } + + return false; + } + + _updateActivateOnHover() { + if (this._appletEnterEventId > 0) { + this.actor.disconnect(this._appletEnterEventId); + this._appletEnterEventId = 0; + } + + this._clearDelayCallbacks(); + + if (!this.activateOnHover) + return; + + this._appletEnterEventId = this.actor.connect('enter-event', () => { + if (this.hover_delay_ms > 0) { + this._appletLeaveEventId = this.actor.connect('leave-event', () => { this._clearDelayCallbacks }); + this._appletHoverDelayId = Mainloop.timeout_add(this.hover_delay_ms, + () => { + this.openMenu(); + this._clearDelayCallbacks(); + }); + } else { + this.openMenu(); + } + }); + } + + _recalc_height() { + let scrollBoxHeight = (this.leftBox.get_allocation_box().y2-this.leftBox.get_allocation_box().y1) - + (this.searchBox.get_allocation_box().y2-this.searchBox.get_allocation_box().y1); + + this.applicationsScrollBox.style = "height: "+scrollBoxHeight / global.ui_scale +"px;"; + let monitor = Main.layoutManager.monitors[this.panel.monitorIndex]; + let minSize = Math.max(this.favBoxMinHeight * global.ui_scale, this.categoriesBox.height - this.systemButtonsBox.height); + let maxSize = monitor.height - (this.systemButtonsBox.height * 2); + let size = Math.min(minSize, maxSize); + this.favoritesScrollBox.set_height(size); + } + + on_orientation_changed (orientation) { + this._updateIconAndLabel(); + } + + on_applet_removed_from_panel () { + Main.keybindingManager.removeHotKey("overlay-key-" + this.instance_id); + } + + // settings button callback + _launch_editor() { + Util.spawnCommandLine("cinnamon-menu-editor"); + } + + on_applet_clicked(event) { + this.menu.toggle_with_options(this.enableAnimation); + } + + _onOpenStateChanged(menu, open) { + if (open) { + this.actor.add_style_pseudo_class('active'); + global.stage.set_key_focus(this.searchEntry); + this._selectedItemIndex = null; + this._activeContainer = null; + this._activeActor = null; + + this.lastSelectedCategory = null; + + /* This is a workaround to prevent selectedAppBox from changing height when no height value is set + * in the .css style and thus causing the menu above to jump up and down. This has no effect when a + * height value is set in the .css style as get_preferred_height() returns this value in this case*/ + this.selectedAppBox.set_height(-1); //unset previously set height + this.selectedAppBox.set_height(this.selectedAppBox.get_preferred_height(-1)[1]); + + let n = Math.min(this._applicationsButtons.length, + INITIAL_BUTTON_LOAD); + for (let i = 0; i < n; i++) { + this._applicationsButtons[i].actor.show(); + } + this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected"; + + Mainloop.idle_add(Lang.bind(this, this._initial_cat_selection, n)); + + if (this.forceShowPanel) { + this.panel.peekPanel(); + } + } else { + this.actor.remove_style_pseudo_class('active'); + if (this.searchActive) { + this.resetSearch(); + } + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + this._previousTreeSelectedActor = null; + this._previousSelectedActor = null; + this.closeContextMenu(false); + + this._clearAllSelections(true); + this._scrollToButton(null, this.favoritesScrollBox); + this.destroyVectorBox(); + } + } + + _initial_cat_selection (start_index) { + if(this.lastSelectedCategory !== null) //if a category is already selected + return; + let n = this._applicationsButtons.length; + for (let i = start_index; i < n; i++) { + this._applicationsButtons[i].actor.show(); + } + } + + destroy() { + this.actor._delegate = null; + this.menu.destroy(); + this.actor.destroy(); + this.emit('destroy'); + } + + _favboxtoggle() { + if (!this.favBoxShow) { + this.leftPane.hide(); + } else { + this.leftPane.show(); + } + } + + // Override js/applet.js so _updateIconAndLabel doesn't have to fight with size changes + // from the panel configuration. This gets called any time set_applet_icon() variants are + // called. + _setStyle() { + let icon_type = this._applet_icon.get_icon_type(); + let size; + + if (this.menuCustom) { + size = Math.min(this.menuIconSize, this.panel.height); + } else { + size = this.getPanelIconSize(icon_type); + } + + if (icon_type === St.IconType.FULLCOLOR) { + this._applet_icon.set_style_class_name('applet-icon'); + } else { + this._applet_icon.set_style_class_name('system-status-icon'); + } + + this._applet_icon.set_icon_size(size); + } + + on_panel_icon_size_changed() { + this._updateIconAndLabel(); + } + + _updateIconAndLabel(){ + try { + if (this.menuCustom) { + if (this.menuIcon == "") { + this.set_applet_icon_name(""); + } else if (GLib.path_is_absolute(this.menuIcon) && GLib.file_test(this.menuIcon, GLib.FileTest.EXISTS)) { + if (this.menuIcon.search("-symbolic") != -1) + this.set_applet_icon_symbolic_path(this.menuIcon); + else + this.set_applet_icon_path(this.menuIcon); + } else if (Gtk.IconTheme.get_default().has_icon(this.menuIcon)) { + if (this.menuIcon.search("-symbolic") != -1) + this.set_applet_icon_symbolic_name(this.menuIcon); + else + this.set_applet_icon_name(this.menuIcon); + } + } else { + let icon_name = global.settings.get_string('app-menu-icon-name'); + if (icon_name.search("-symbolic") != -1) { + this.set_applet_icon_symbolic_name(icon_name); + } + else { + this.set_applet_icon_name(icon_name); + } + } + } catch(e) { + global.logWarning("Could not load icon file \""+this.menuIcon+"\" for menu button"); + } + + // Hide the icon box if the icon name/path is empty + if ((this.menuCustom && this.menuIcon == "") || (!this.menuCustom && global.settings.get_string('app-menu-icon-name') == "")){ + this._applet_icon_box.hide(); + } else { + this._applet_icon_box.show(); + } + + // Hide the menu label in vertical panels + if (this._orientation == St.Side.LEFT || this._orientation == St.Side.RIGHT) + { + this.set_applet_label(""); + } + else { + if (this.menuCustom) { + if (this.menuLabel != "") + this.set_applet_label(_(this.menuLabel)); + else + this.set_applet_label(""); + } + else { + this.set_applet_label(global.settings.get_string('app-menu-label')); + } + } + } + + _contextMenuOpenStateChanged(menu) { + if (menu.isOpen) { + this._activeContextMenuParent = menu.sourceActor._delegate; + this._scrollToButton(menu); + } else { + this._activeContextMenuItem = null; + this._activeContextMenuParent = null; + menu.sourceActor = null; + } + } + + toggleContextMenu(button) { + if (!button.withMenu) + return; + + if (!this.contextMenu) { + let menu = new PopupMenu.PopupSubMenu(null); // hack: creating without actor + menu.actor.set_style_class_name('menu-context-menu'); + menu.connect('open-state-changed', Lang.bind(this, this._contextMenuOpenStateChanged)); + this.contextMenu = menu; + this.applicationsBox.add_actor(menu.actor); + } else if (this.contextMenu.isOpen && + this.contextMenu.sourceActor != button.actor) { + this.contextMenu.close(); + } + + if (!this.contextMenu.isOpen) { + this.contextMenu.box.destroy_all_children(); + this.applicationsBox.set_child_above_sibling(this.contextMenu.actor, button.actor); + this.contextMenu.sourceActor = button.actor; + button.populateMenu(this.contextMenu); + } + + this.contextMenu.toggle(); + } + + _navigateContextMenu(button, symbol, ctrlKey) { + if (symbol === Clutter.KEY_Menu || symbol === Clutter.KEY_Escape || + (ctrlKey && (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter))) { + this.toggleContextMenu(button); + return; + } + + let minIndex = 0; + let goUp = symbol === Clutter.KEY_Up; + let nextActive = null; + let menuItems = this.contextMenu._getMenuItems(); // The context menu items + + // The first context menu item of a RecentButton is used just as a label. + // So remove it from the iteration. + if (button && button instanceof RecentButton) { + minIndex = 1; + } + + let menuItemsLength = menuItems.length; + + switch (symbol) { + case Clutter.KEY_Page_Up: + this._activeContextMenuItem = menuItems[minIndex]; + this._activeContextMenuItem.setActive(true); + return; + case Clutter.KEY_Page_Down: + this._activeContextMenuItem = menuItems[menuItemsLength - 1]; + this._activeContextMenuItem.setActive(true); + return; + } + + if (!this._activeContextMenuItem) { + if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter) { + button.activate(); + } else { + this._activeContextMenuItem = menuItems[goUp ? menuItemsLength - 1 : minIndex]; + this._activeContextMenuItem.setActive(true); + } + return; + } else if (this._activeContextMenuItem && + (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter)) { + this._activeContextMenuItem.activate(); + this._activeContextMenuItem = null; + return; + } + + for (let i = minIndex; i < menuItemsLength; i++) { + if (menuItems[i] === this._activeContextMenuItem) { + let nextActiveIndex = (goUp ? i - 1 : i + 1); + + if (nextActiveIndex < minIndex) { + nextActiveIndex = menuItemsLength - 1; + } else if (nextActiveIndex > menuItemsLength - 1) { + nextActiveIndex = minIndex; + } + + nextActive = menuItems[nextActiveIndex]; + nextActive.setActive(true); + this._activeContextMenuItem = nextActive; + + break; + } + } + } + + _onMenuKeyPress(actor, event) { + let symbol = event.get_key_symbol(); + let item_actor; + let index = 0; + this.appBoxIter.reloadVisible(); + this.catBoxIter.reloadVisible(); + this.favBoxIter.reloadVisible(); + this.sysBoxIter.reloadVisible(); + + let keyCode = event.get_key_code(); + let modifierState = Cinnamon.get_event_state(event); + + /* check for a keybinding and quit early, otherwise we get a double hit + of the keybinding callback */ + let action = global.display.get_keybinding_action(keyCode, modifierState); + + if (action == Meta.KeyBindingAction.CUSTOM) { + return true; + } + + index = this._selectedItemIndex; + + let ctrlKey = modifierState & Clutter.ModifierType.CONTROL_MASK; + + // If a context menu is open, hijack keyboard navigation and concentrate on the context menu. + if (this._activeContextMenuParent && + this._activeContainer === this.applicationsBox) { + let continueNavigation = false; + switch (symbol) { + case Clutter.KEY_Up: + case Clutter.KEY_Down: + case Clutter.KEY_Return: + case Clutter.KEY_KP_Enter: + case Clutter.KEY_Menu: + case Clutter.KEY_Page_Up: + case Clutter.KEY_Page_Down: + case Clutter.KEY_Escape: + this._navigateContextMenu(this._activeContextMenuParent, symbol, ctrlKey); + break; + case Clutter.KEY_Right: + case Clutter.KEY_Left: + case Clutter.KEY_Tab: + case Clutter.KEY_ISO_Left_Tab: + continueNavigation = true; + break; + } + if (!continueNavigation) + return true; + } + + let navigationKey = true; + let whichWay = "none"; + + switch (symbol) { + case Clutter.KEY_Up: + whichWay = "up"; + if (this._activeContainer === this.favoritesBox && ctrlKey && + (this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) + navigationKey = false; + break; + case Clutter.KEY_Down: + whichWay = "down"; + if (this._activeContainer === this.favoritesBox && ctrlKey && + (this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) + navigationKey = false; + break; + case Clutter.KEY_Page_Up: + whichWay = "top"; break; + case Clutter.KEY_Page_Down: + whichWay = "bottom"; break; + case Clutter.KEY_Right: + if (!this.searchActive) + whichWay = "right"; + if (this._activeContainer === this.applicationsBox) + whichWay = "none"; + else if (this._activeContainer === this.categoriesBox && this.noRecentDocuments && + (this.categoriesBox.get_child_at_index(index))._delegate.categoryId === "recent") + whichWay = "none"; + break; + case Clutter.KEY_Left: + if (!this.searchActive) + whichWay = "left"; + if (this._activeContainer === this.favoritesBox || this._activeContainer === this.systemButtonsBox) + whichWay = "none"; + else if (!this.favBoxShow && + (this._activeContainer === this.categoriesBox || this._activeContainer === null)) + whichWay = "none"; + break; + case Clutter.KEY_Tab: + if (!this.searchActive) + whichWay = "right"; + else + navigationKey = false; + break; + case Clutter.KEY_ISO_Left_Tab: + if (!this.searchActive) + whichWay = "left"; + else + navigationKey = false; + break; + default: + navigationKey = false; + } + + if (navigationKey) { + switch (this._activeContainer) { + case null: + switch (whichWay) { + case "up": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getLastVisible(); + this._scrollToButton(); + break; + case "down": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getFirstVisible(); + item_actor = this.catBoxIter.getNextVisible(item_actor); + this._scrollToButton(); + break; + case "right": + this._activeContainer = this.applicationsBox; + item_actor = this.appBoxIter.getFirstVisible(); + this._scrollToButton(); + break; + case "left": + if (this.favBoxShow) { + this._activeContainer = this.favoritesBox; + item_actor = this.favBoxIter.getFirstVisible(); + } else { + this._activeContainer = this.applicationsBox; + item_actor = this.appBoxIter.getFirstVisible(); + this._scrollToButton(); + } + break; + case "top": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getFirstVisible(); + this._scrollToButton(); + break; + case "bottom": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getLastVisible(); + this._scrollToButton(); + break; + } + break; + case this.categoriesBox: + switch (whichWay) { + case "up": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getPrevVisible(this._activeActor); + this._scrollToButton(); + break; + case "down": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getNextVisible(this._activeActor); + this._scrollToButton(); + break; + case "right": + if ((this.categoriesBox.get_child_at_index(index))._delegate.categoryId === "recent" && + this.noRecentDocuments) { + if(this.favBoxShow) { + this._previousSelectedActor = this.categoriesBox.get_child_at_index(index); + item_actor = this.favBoxIter.getFirstVisible(); + } else { + item_actor = this.categoriesBox.get_child_at_index(index); + } + } + else { + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + } + break; + case "left": + if(this.favBoxShow) { + this._previousSelectedActor = this.categoriesBox.get_child_at_index(index); + item_actor = this.favBoxIter.getFirstVisible(); + this._scrollToButton(null, this.favoritesScrollBox); + } else { + if ((this.categoriesBox.get_child_at_index(index))._delegate.categoryId === "recent" && + this.noRecentDocuments) { + item_actor = this.categoriesBox.get_child_at_index(index); + } else { + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + } + } + break; + case "top": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getFirstVisible(); + this._scrollToButton(); + break; + case "bottom": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getLastVisible(); + this._scrollToButton(); + break; + } + break; + case this.applicationsBox: + switch (whichWay) { + case "up": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = this.appBoxIter.getPrevVisible(this._previousSelectedActor); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + case "down": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = this.appBoxIter.getNextVisible(this._previousSelectedActor); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + case "right": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + + if (this.favBoxShow) { + this._buttonEnterEvent(item_actor._delegate); + this._previousSelectedActor = this.categoriesBox.get_child_at_index(index); + item_actor = this.favBoxIter.getFirstVisible(); + } + break; + case "left": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + break; + case "top": + item_actor = this.appBoxIter.getFirstVisible(); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + case "bottom": + item_actor = this.appBoxIter.getLastVisible(); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + } + break; + case this.favoritesBox: + switch (whichWay) { + case "up": + this._previousSelectedActor = this.favoritesBox.get_child_at_index(index); + if (this._previousSelectedActor === this.favBoxIter.getFirstVisible()) { + item_actor = this.sysBoxIter.getLastVisible(); + } else { + item_actor = this.favBoxIter.getPrevVisible(this._previousSelectedActor); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } + break; + case "down": + this._previousSelectedActor = this.favoritesBox.get_child_at_index(index); + if (this._previousSelectedActor === this.favBoxIter.getLastVisible()) { + item_actor = this.sysBoxIter.getFirstVisible(); + } else { + item_actor = this.favBoxIter.getNextVisible(this._previousSelectedActor); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } + break; + case "right": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + break; + case "left": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + + this._buttonEnterEvent(item_actor._delegate); + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + break; + case "top": + item_actor = this.favBoxIter.getFirstVisible(); + break; + case "bottom": + item_actor = this.favBoxIter.getLastVisible(); + break; + } + break; + case this.systemButtonsBox: + switch (whichWay) { + case "up": + this._previousSelectedActor = this.systemButtonsBox.get_child_at_index(index); + if (this._previousSelectedActor === this.sysBoxIter.getFirstVisible()) { + item_actor = this.favBoxIter.getLastVisible(); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } else { + item_actor = this.sysBoxIter.getPrevVisible(this._previousSelectedActor); + } + break; + case "down": + this._previousSelectedActor = this.systemButtonsBox.get_child_at_index(index); + if (this._previousSelectedActor === this.sysBoxIter.getLastVisible()) { + item_actor = this.favBoxIter.getFirstVisible(); + this._scrollToButton(null, this.favoritesScrollBox); + } else { + item_actor = this.sysBoxIter.getNextVisible(this._previousSelectedActor); + } + break; + case "right": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + break; + case "left": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + + this._buttonEnterEvent(item_actor._delegate); + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + break; + case "top": + item_actor = this.sysBoxIter.getFirstVisible(); + break; + case "bottom": + item_actor = this.sysBoxIter.getLastVisible(); + break; + } + break; + default: + break; + } + if (!item_actor) + return false; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + } else { + if ((this._activeContainer && this._activeContainer !== this.categoriesBox) && + (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter)) { + if (!ctrlKey) { + item_actor = this._activeContainer.get_child_at_index(this._selectedItemIndex); + item_actor._delegate.activate(); + } else if (ctrlKey && this._activeContainer === this.applicationsBox) { + item_actor = this.applicationsBox.get_child_at_index(this._selectedItemIndex); + this.toggleContextMenu(item_actor._delegate); + } + return true; + } else if (this._activeContainer === this.applicationsBox && symbol === Clutter.KEY_Menu) { + item_actor = this.applicationsBox.get_child_at_index(this._selectedItemIndex); + this.toggleContextMenu(item_actor._delegate); + return true; + } else if (!this.searchActive && this._activeContainer === this.favoritesBox && symbol === Clutter.KEY_Delete) { + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex); + if (item_actor._delegate instanceof FavoritesButton) { + let favorites = AppFavorites.getAppFavorites().getFavorites(); + let numFavorites = favorites.length; + AppFavorites.getAppFavorites().removeFavorite(item_actor._delegate.app.get_id()); + if (this._selectedItemIndex == (numFavorites-1)) + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex-1); + else + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex); + } + } else if (this._activeContainer === this.favoritesBox && + (symbol === Clutter.KEY_Down || symbol === Clutter.KEY_Up) && ctrlKey && + (this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) { + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex); + let id = item_actor._delegate.app.get_id(); + let appFavorites = AppFavorites.getAppFavorites(); + let favorites = appFavorites.getFavorites(); + let numFavorites = favorites.length; + let favPos = 0; + if (this._selectedItemIndex == (numFavorites-1) && symbol === Clutter.KEY_Down) + favPos = 0; + else if (this._selectedItemIndex == 0 && symbol === Clutter.KEY_Up) + favPos = numFavorites-1; + else if (symbol === Clutter.KEY_Down) + favPos = this._selectedItemIndex + 1; + else + favPos = this._selectedItemIndex - 1; + appFavorites.moveFavoriteToPos(id, favPos); + item_actor = this.favoritesBox.get_child_at_index(favPos); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } else if (this.searchFilesystem && (this._fileFolderAccessActive || symbol === Clutter.KEY_slash)) { + if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter) { + if (this._run(this.searchEntry.get_text())) { + this.menu.close(); + } + return true; + } + if (symbol === Clutter.KEY_Escape) { + this.searchEntry.set_text(''); + this._fileFolderAccessActive = false; + } + if (symbol === Clutter.KEY_slash) { + // Need preload data before get completion. GFilenameCompleter load content of parent directory. + // Parent directory for /usr/include/ is /usr/. So need to add fake name('a'). + let text = this.searchEntry.get_text().concat('/a'); + let prefix; + if (!text.includes(' ')) + prefix = text; + else + prefix = text.substr(text.lastIndexOf(' ') + 1); + this._getCompletion(prefix); + + return false; + } + if (symbol === Clutter.KEY_Tab) { + let text = actor.get_text(); + let prefix; + if (!text.includes(' ')) + prefix = text; + else + prefix = text.substr(text.lastIndexOf(' ') + 1); + let postfix = this._getCompletion(prefix); + if (postfix != null && postfix.length > 0) { + actor.insert_text(postfix, -1); + actor.set_cursor_position(text.length + postfix.length); + if (postfix[postfix.length - 1] == '/') + this._getCompletion(text + postfix + 'a'); + } + return true; + } + if (symbol === Clutter.KEY_ISO_Left_Tab) { + return true; + } + return false; + } else if (symbol === Clutter.KEY_Tab || symbol === Clutter.KEY_ISO_Left_Tab) { + return true; + } else { + return false; + } + } + + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + + this._selectedItemIndex = index; + if (!item_actor || item_actor === this.searchEntry) { + return false; + } + this._buttonEnterEvent(item_actor._delegate); + return true; + } + + _buttonEnterEvent(button) { + let parent = button.actor.get_parent(); + if (this._activeContainer === this.categoriesBox && parent !== this._activeContainer) { + this._previousTreeSelectedActor = this._activeActor; + this._previousSelectedActor = null; + } + if (this._previousTreeSelectedActor && this._activeContainer !== this.categoriesBox && + parent !== this._activeContainer && button !== this._previousTreeSelectedActor && !this.searchActive) { + this._previousTreeSelectedActor.style_class = "menu-category-button"; + } + if (parent != this._activeContainer && parent._vis_iter) { + parent._vis_iter.reloadVisible(); + } + let _maybePreviousActor = this._activeActor; + if (_maybePreviousActor && this._activeContainer !== this.categoriesBox) { + this._previousSelectedActor = _maybePreviousActor; + this._clearPrevSelection(); + } + if (parent === this.categoriesBox && !this.searchActive) { + this._previousSelectedActor = _maybePreviousActor; + this._clearPrevCatSelection(); + } + this._activeContainer = parent; + this._activeActor = button.actor; + + if (this._activeContainer._vis_iter) { + this._selectedItemIndex = this._activeContainer._vis_iter.getAbsoluteIndexOfChild(this._activeActor); + } + + let isFav = false; + if (button instanceof CategoryButton) { + if (this.searchActive) + return; + button.isHovered = true; + this._clearPrevCatSelection(button.actor); + this._select_category(button.categoryId); + this.makeVectorBox(button.actor); + } else { + this._previousVisibleIndex = parent._vis_iter.getVisibleIndex(button.actor); + + isFav = button instanceof FavoritesButton || button instanceof SystemButton; + if (!isFav) + this._clearPrevSelection(button.actor); + this.selectedAppTitle.set_text(button.name); + this.selectedAppDescription.set_text(button.description); + } + + if (isFav) + button.actor.add_style_pseudo_class("hover"); + else + button.actor.set_style_class_name(`${button.styleClass}-selected`); + } + + _buttonLeaveEvent (button) { + if (button instanceof CategoryButton) { + if (this._previousTreeSelectedActor === null) { + this._previousTreeSelectedActor = button.actor; + } else { + let prevIdx = this.catBoxIter.getVisibleIndex(this._previousTreeSelectedActor); + let nextIdx = this.catBoxIter.getVisibleIndex(button.actor); + + if (Math.abs(prevIdx - nextIdx) <= 1) { + this._previousTreeSelectedActor = button.actor; + } + } + button.isHovered = false; + } else { + this._previousSelectedActor = button.actor; + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + + // category unselects are handled when the category actually changes + if (button instanceof FavoritesButton || button instanceof SystemButton) + button.actor.remove_style_pseudo_class("hover"); + else + button.actor.set_style_class_name(button.styleClass); + } + } + + _clearPrevSelection(actor) { + if (this._previousSelectedActor + && !this._previousSelectedActor.is_finalized() + && this._previousSelectedActor != actor) { + if (this._previousSelectedActor._delegate instanceof FavoritesButton || + this._previousSelectedActor._delegate instanceof SystemButton) + this._previousSelectedActor.remove_style_pseudo_class("hover"); + else if (!(this._previousSelectedActor._delegate instanceof CategoryButton)) + this._previousSelectedActor.style_class = "menu-application-button"; + } + } + + _clearPrevCatSelection(actor) { + if (this._previousTreeSelectedActor && this._previousTreeSelectedActor != actor) { + this._previousTreeSelectedActor.style_class = "menu-category-button"; + + if (this._previousTreeSelectedActor._delegate) { + this._buttonLeaveEvent(this._previousTreeSelectedActor._delegate); + } + + if (actor !== undefined) { + this._previousVisibleIndex = null; + this._previousTreeSelectedActor = actor; + } + } else { + this.categoriesBox.get_children().forEach(child => child.style_class = "menu-category-button"); + } + } + + /* + * The vectorBox overlays the the categoriesBox to aid in navigation from categories to apps + * by preventing misselections. It is set to the same size as the categoriesOverlayBox and + * categoriesBox. + * + * The actor is a quadrilateral that we turn into a triangle by setting the A and B vertices to + * the same position. The size and origin of the vectorBox are calculated in _getVectorInfo(). + * Using those properties, the bounding box is sized as (w, h) and the triangle is defined as + * follows: + * _____ + * | /|D + * | / | AB: (mx, my) + * | A/ | C: (w, h) + * | B\ | D: (w, 0) + * | \ | + * |____\|C + */ + + _getVectorInfo() { + let [mx, my, mask] = global.get_pointer(); + let [bx, by] = this.categoriesOverlayBox.get_transformed_position(); + let [bw, bh] = this.categoriesOverlayBox.get_transformed_size(); + + let xformed_mx = mx - bx; + let xformed_my = my - by; + + if (xformed_mx < 0 || xformed_mx > bw || xformed_my < 0 || xformed_my > bh) { + return null; + } + + return { mx: xformed_mx, + my: xformed_my, + w: this.categoriesOverlayBox.width, + h: this.categoriesOverlayBox.height }; + } + + makeVectorBox(actor) { + this.destroyVectorBox(actor); + let vi = this._getVectorInfo(); + if (!vi) + return; + + if (this.vectorBox) { + this.vectorBox.visible = true; + } else { + this.vectorBox = new St.Polygon({ debug: false, reactive: true }); + + this.categoriesOverlayBox.add_actor(this.vectorBox); + + this.vectorBox.connect("leave-event", Lang.bind(this, this.destroyVectorBox)); + this.vectorBox.connect("motion-event", Lang.bind(this, this.maybeUpdateVectorBox)); + } + + Object.assign(this.vectorBox, { width: vi.w, height: vi.h, + ulc_x: vi.mx, ulc_y: vi.my, + llc_x: vi.mx, llc_y: vi.my, + urc_x: vi.w, urc_y: 0, + lrc_x: vi.w, lrc_y: vi.h }); + + this.actor_motion_id = actor.connect("motion-event", Lang.bind(this, this.maybeUpdateVectorBox)); + this.current_motion_actor = actor; + } + + maybeUpdateVectorBox() { + if (this.vector_update_loop) { + Mainloop.source_remove(this.vector_update_loop); + this.vector_update_loop = 0; + } + this.vector_update_loop = Mainloop.timeout_add(50, Lang.bind(this, this.updateVectorBox)); + } + + updateVectorBox(actor) { + if (!this.current_motion_actor) + return; + let vi = this._getVectorInfo(); + if (vi) { + this.vectorBox.ulc_x = vi.mx; + this.vectorBox.llc_x = vi.mx; + this.vectorBox.queue_repaint(); + } else { + this.destroyVectorBox(actor); + } + this.vector_update_loop = 0; + return false; + } + + destroyVectorBox(actor) { + if (!this.vectorBox) + return; + + if (this.vector_update_loop) { + Mainloop.source_remove(this.vector_update_loop); + this.vector_update_loop = 0; + } + + if (this.actor_motion_id > 0 && this.current_motion_actor != null) { + this.current_motion_actor.disconnect(this.actor_motion_id); + this.actor_motion_id = 0; + this.current_motion_actor = null; + this.vectorBox.visible = false; + } + } + + _refreshPlaces () { + for (let i = 0; i < this._placesButtons.length; i ++) { + this._placesButtons[i].actor.destroy(); + } + + this._placesButtons = []; + + for (let i = 0; i < this._categoryButtons.length; i++) { + if (this._categoryButtons[i].categoryId === 'place') { + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + this.placesButton = null; + break; + } + } + + if (!this.showPlaces) { + return; + } + + // Now generate Places category and places buttons and add to the list + if (!this.placesButton) { + this.placesButton = new CategoryButton(this, 'place', _('Places'), 'folder'); + this._categoryButtons.push(this.placesButton); + this.categoriesBox.add_actor(this.placesButton.actor); + } + + // places go after applications. we add them in reverse starting below the last ApplicationButton + let sibling = this._applicationsButtons[this._applicationsButtons.length - 1].actor; + let places = Main.placesManager.getAllPlaces(); + for (let i = places.length - 1; i >= 0; i--) { + let button = new PlaceButton(this, places[i]); + this._placesButtons.push(button); + this.applicationsBox.insert_child_below(button.actor, sibling); + button.actor.visible = this.menu.isOpen; + sibling = button.actor; + } + + this._resizeApplicationsBox(); + } + + _refreshRecent () { + for (let i = 0; i < this._recentButtons.length; i++) { + this._recentButtons[i].destroy(); + } + + this._recentButtons = []; + + for (let i = 0; i < this._categoryButtons.length; i++) { + if (this._categoryButtons[i].categoryId === 'recent') { + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + this.recentButton = null; + break; + } + } + + if (!this.showRecents || !this.privacy_settings.get_boolean(REMEMBER_RECENT_KEY)) { + return; + } + + if (!this.recentButton) { + this.recentButton = new CategoryButton(this, 'recent', _('Recent Files'), 'folder-recent'); + this._categoryButtons.push(this.recentButton); + this.categoriesBox.add_actor(this.recentButton.actor); + } + + let recents = this.RecentManager._infosByTimestamp.filter(info => !info.name.startsWith(".")); + if (recents.length > 0) { + this.noRecentDocuments = false; + Util.each(recents, (info) => { + let button = new RecentButton(this, info); + this._recentButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + }); + + let button = new SimpleMenuItem(this, { name: _("Clear list"), + description: _("Clear all recent documents"), + type: 'recent-clear', + styleClass: 'menu-application-button' }); + button.addIcon(22, 'edit-clear', null, true); + button.addLabel("", 'menu-application-button-label'); + button.label.clutter_text.set_markup(`${button.name}`); + button.activate = () => { + this.menu.close(); + (new Gtk.RecentManager()).purge_items(); + }; + + if (!this.showApplicationIcons) + button.icon.visible = false; + + this._recentButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + } else { + this.noRecentDocuments = true; + let button = new SimpleMenuItem(this, { name: _("No recent documents"), + type: 'no-recent', + styleClass: 'menu-application-button', + reactive: false, + activatable: false }); + button.addLabel(button.name, 'menu-application-button-label'); + this._recentButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + } + + this._resizeApplicationsBox(); + } + + _refreshFavDocs() { + for (let i = 0; i < this._favoriteDocButtons.length; i++) { + this._favoriteDocButtons[i].destroy(); + } + + this._favoriteDocButtons = []; + + for (let i = 0; i < this._categoryButtons.length; i++) { + if (this._categoryButtons[i].categoryId === 'favorite') { + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + this.favoriteDocsButton = null; + break; + } + } + + let favorite_infos = XApp.Favorites.get_default().get_favorites(null); + + if (!this.showFavorites || favorite_infos.length == 0) { + return; + } + + if (!this.favoriteDocsButton) { + this.favoriteDocsButton = new CategoryButton(this, 'favorite', _('Favorites'), 'xapp-user-favorites'); + this._categoryButtons.push(this.favoriteDocsButton); + this.categoriesBox.add_actor(this.favoriteDocsButton.actor); + } + + Util.each(favorite_infos, (info) => { + let button = new FavoriteButton(this, info); + this._favoriteDocButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + }); + + this._resizeApplicationsBox(); + } + + _refreshApps() { + /* iterate in reverse, so multiple splices will not upset + * the remaining elements */ + for (let i = this._categoryButtons.length - 1; i > -1; i--) { + let b = this._categoryButtons[i]; + if (b === this._allAppsCategoryButton || + ['place', 'recent', 'favorite'].includes(b.categoryId)) + continue; + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + } + + this._applicationsButtons.forEach(button => button.destroy()); + this._applicationsButtons = []; + + if (!this._allAppsCategoryButton) { + this._allAppsCategoryButton = new CategoryButton(this); + this.categoriesBox.add_actor(this._allAppsCategoryButton.actor); + this._categoryButtons.push(this._allAppsCategoryButton); + } + + // grab top level directories and all apps in them + let [apps, dirs] = AppUtils.getApps(); + + // generate all category buttons from top-level directories + Util.each(dirs, (d) => { + let categoryButton = new CategoryButton(this, d.get_menu_id(), d.get_name(), d.get_icon()); + this._categoryButtons.push(categoryButton); + this.categoriesBox.add_actor(categoryButton.actor); + }); + + /* we add them in reverse at index 0 so they are always above places and + * recent buttons, and below */ + for (let i = apps.length - 1; i > -1; i--) { + let app = apps[i][0]; + let button = new ApplicationButton(this, app); + button.category = apps[i][1]; + let appKey = app.get_id() || `${app.get_name()}:${app.get_description()}`; + + // appsWereRefreshed if this is not initial load. on initial load every + // app is marked known. + if (this._appsWereRefreshed && !this._knownApps.has(appKey)) + button.highlight(); + else + this._knownApps.add(appKey); + + this._applicationsButtons.push(button); + this.applicationsBox.insert_child_at_index(button.actor, 0); + button.actor.visible = this.menu.isOpen; + } + + // we expect this array to be in the same order as the child list + this._applicationsButtons.reverse(); + this._appsWereRefreshed = true; + } + + _refreshFavApps() { + //Remove all favorites + this.favoritesBox.destroy_all_children(); + + //Load favorites again + this._favoriteAppButtons = []; + let launchers = global.settings.get_strv('favorite-apps'); + for ( let i = 0; i < launchers.length; ++i ) { + let app = appsys.lookup_app(launchers[i]); + if (app) { + let button = new FavoritesButton(this, app); + this._favoriteAppButtons[app] = button; + this.favoritesBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + } + } + } + + _refreshSystemButtons() { + // Remove all system buttons + this.systemButtonsBox.destroy_all_children(); + + // Load system buttons again + let button; + + //Lock screen + button = new SystemButton(this, "system-lock-screen", + _("Lock screen"), + _("Lock the screen")); + + button.activate = () => { + this.menu.close(); + + let screensaver_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.screensaver" }); + let screensaver_dialog = Gio.file_new_for_path("/usr/bin/cinnamon-screensaver-command"); + if (screensaver_dialog.query_exists(null)) { + if (screensaver_settings.get_boolean("ask-for-away-message")) { + Util.spawnCommandLine("cinnamon-screensaver-lock-dialog"); + } + else { + Util.spawnCommandLine("cinnamon-screensaver-command --lock"); + } + } + else { + this._screenSaverProxy.LockRemote(""); + } + }; + + this.systemButtonsBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + + //Logout button + button = new SystemButton(this, "system-log-out", + _("Logout"), + _("Leave the session")); + + button.activate = () => { + this.menu.close(); + this._session.LogoutRemote(0); + }; + + this.systemButtonsBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + + //Shutdown button + button = new SystemButton(this, "system-shutdown", + _("Quit"), + _("Shut down the computer")); + + button.activate = () => { + this.menu.close(); + this._session.ShutdownRemote(); + }; + + this.systemButtonsBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + } + + _scrollToButton(button, scrollBox = null) { + if (!scrollBox) + scrollBox = this.applicationsScrollBox; + + let adj = scrollBox.get_vscroll_bar().get_adjustment(); + if (button) { + let box = scrollBox.get_allocation_box(); + let boxHeight = box.y2 - box.y1; + let actorBox = button.actor.get_allocation_box(); + let currentValue = adj.get_value(); + let newValue = currentValue; + + if (currentValue > actorBox.y1 - 10) + newValue = actorBox.y1 - 10; + if (boxHeight + currentValue < actorBox.y2 + 10) + newValue = actorBox.y2 - boxHeight + 10; + + if (newValue != currentValue) + adj.set_value(newValue); + } else { + adj.set_value(0); + } + } + + _display() { + this._activeContainer = null; + this._activeActor = null; + this.vectorBox = null; + this.actor_motion_id = 0; + this.vector_update_loop = null; + this.current_motion_actor = null; + let section = new PopupMenu.PopupMenuSection(); + this.menu.addMenuItem(section); + + this.leftPane = new St.BoxLayout({ vertical: true }); + + this.leftBox = new St.BoxLayout({ style_class: 'menu-favorites-box', vertical: true }); + + this._session = new GnomeSession.SessionManager(); + this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy(); + + this.leftPane.add(this.leftBox, { y_align: St.Align.END, y_fill: false }); + this._favboxtoggle(); + + let rightPane = new St.BoxLayout({ vertical: true }); + + this.searchBox = new St.BoxLayout({ style_class: 'menu-search-box' }); + + this.searchEntry = new St.Entry({ name: 'menu-search-entry', + hint_text: _("Type to search..."), + track_hover: true, + can_focus: true }); + this.searchEntry.set_secondary_icon(this._searchInactiveIcon); + this.searchBox.add(this.searchEntry, {x_fill: true, x_align: St.Align.START, y_align: St.Align.MIDDLE, y_fill: false, expand: true}); + this.searchActive = false; + this.searchEntryText = this.searchEntry.clutter_text; + this.searchEntryText.connect('text-changed', Lang.bind(this, this._onSearchTextChanged)); + this.searchEntryText.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress)); + this._previousSearchPattern = ""; + + this.categoriesApplicationsBox = new CategoriesApplicationsBox(); + rightPane.add_actor(this.searchBox); + rightPane.add_actor(this.categoriesApplicationsBox.actor); + + this.categoriesOverlayBox = new Clutter.Actor(); + this.categoriesBox = new St.BoxLayout({ style_class: 'menu-categories-box', + vertical: true, + accessible_role: Atk.Role.LIST }); + this.categoriesOverlayBox.add_actor(this.categoriesBox); + + this.applicationsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false, y_align: St.Align.START, style_class: 'vfade menu-applications-scrollbox' }); + this.favoritesScrollBox = new St.ScrollView({ + x_fill: true, + y_fill: false, + y_align: St.Align.START, + style_class: 'vfade menu-favorites-scrollbox' + }); + + this.a11y_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.a11y.applications" }); + this.a11y_settings.connect("changed::screen-magnifier-enabled", Lang.bind(this, this._updateVFade)); + this.a11y_mag_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.a11y.magnifier" }); + this.a11y_mag_settings.connect("changed::mag-factor", Lang.bind(this, this._updateVFade)); + + this._updateVFade(); + + this.settings.bind("enable-autoscroll", "autoscroll_enabled", this._update_autoscroll); + this._update_autoscroll(); + + let vscroll = this.applicationsScrollBox.get_vscroll_bar(); + vscroll.connect('scroll-start', + Lang.bind(this, function() { + this.menu.passEvents = true; + })); + vscroll.connect('scroll-stop', + Lang.bind(this, function() { + this.menu.passEvents = false; + })); + + this.applicationsBox = new St.BoxLayout({ style_class: 'menu-applications-inner-box', vertical:true }); + this.applicationsBox.add_style_class_name('menu-applications-box'); //this is to support old themes + this.applicationsScrollBox.add_actor(this.applicationsBox); + this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); + this.categoriesApplicationsBox.actor.add_actor(this.categoriesOverlayBox); + this.categoriesApplicationsBox.actor.add_actor(this.applicationsScrollBox); + + this.favoritesBox = new FavoritesBox().actor; + this.favoritesScrollBox.add_actor(this.favoritesBox); + this.favoritesScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER); + + this.leftBox.add(this.favoritesScrollBox, { + y_align: St.Align.END, + y_fill: false + }); + + this.systemButtonsBox = new St.BoxLayout({ vertical: true }); + this.leftBox.add(this.systemButtonsBox, { y_align: St.Align.END, y_fill: false }); + + this.mainBox = new St.BoxLayout({ style_class: 'menu-applications-outer-box', vertical:false }); + this.mainBox.add_style_class_name('menu-applications-box'); //this is to support old themes + + this.mainBox.add(this.leftPane, { span: 1 }); + this.mainBox.add(rightPane, { span: 1 }); + this.mainBox._delegate = null; + + this.selectedAppBox = new St.BoxLayout({ style_class: 'menu-selected-app-box', vertical: true }); + this.selectedAppTitle = new St.Label({ style_class: 'menu-selected-app-title', text: "" }); + this.selectedAppBox.add_actor(this.selectedAppTitle); + this.selectedAppDescription = new St.Label({ style_class: 'menu-selected-app-description', text: "" }); + this.selectedAppBox.add_actor(this.selectedAppDescription); + this.selectedAppBox._delegate = null; + + section.actor.add(this.mainBox); + section.actor.add_actor(this.selectedAppBox); + + this.appBoxIter = new VisibleChildIterator(this.applicationsBox); + this.applicationsBox._vis_iter = this.appBoxIter; + this.catBoxIter = new VisibleChildIterator(this.categoriesBox); + this.categoriesBox._vis_iter = this.catBoxIter; + this.favBoxIter = new VisibleChildIterator(this.favoritesBox); + this.favoritesBox._vis_iter = this.favBoxIter; + this.sysBoxIter = new VisibleChildIterator(this.systemButtonsBox); + this.systemButtonsBox._vis_iter = this.sysBoxIter; + + Mainloop.idle_add(Lang.bind(this, function() { + this._clearAllSelections(true); + })); + + this.menu.actor.connect("allocation-changed", Lang.bind(this, this._on_allocation_changed)); + } + + _updateVFade() { + let mag_on = this.a11y_settings.get_boolean("screen-magnifier-enabled") && + this.a11y_mag_settings.get_double("mag-factor") > 1.0; + if (mag_on) { + this.applicationsScrollBox.style_class = "menu-applications-scrollbox"; + this.favoritesScrollBox.style_class = "menu-favorites-scrollbox"; + } else { + this.applicationsScrollBox.style_class = "vfade menu-applications-scrollbox"; + this.favoritesScrollBox.style_class = "vfade menu-favorites-scrollbox"; + } + } + + _update_autoscroll() { + this.applicationsScrollBox.set_auto_scrolling(this.autoscroll_enabled); + this.favoritesScrollBox.set_auto_scrolling(this.autoscroll_enabled); + } + + _on_allocation_changed(box, flags, data) { + this._recalc_height(); + } + + _clearAllSelections(hide_apps) { + let actors = this.applicationsBox.get_children(); + for (let i = 0; i < actors.length; i++) { + let actor = actors[i]; + actor.style_class = "menu-application-button"; + if (hide_apps) { + actor.hide(); + } + } + actors = this.categoriesBox.get_children(); + for (let i = 0; i < actors.length; i++){ + let actor = actors[i]; + actor.style_class = "menu-category-button"; + actor.show(); + } + actors = this.favoritesBox.get_children(); + for (let i = 0; i < actors.length; i++){ + let actor = actors[i]; + actor.remove_style_pseudo_class("hover"); + actor.show(); + } + actors = this.systemButtonsBox.get_children(); + for (let i = 0; i < actors.length; i++){ + let actor = actors[i]; + actor.remove_style_pseudo_class("hover"); + actor.show(); + } + } + + _resetSortOrder() { + let pos = 0; + + for (let i = 0; i < this._applicationsButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._applicationsButtons[i].actor, pos++); + } + + for (let i = 0; i < this._favoriteDocButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._favoriteDocButtons[i].actor, pos++); + } + + for (let i = 0; i < this._placesButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._placesButtons[i].actor, pos++); + } + + for (let i = 0; i < this._recentButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._recentButtons[i].actor, pos++); + } + } + + _select_category (name) { + if (name === this.lastSelectedCategory) + return; + this.lastSelectedCategory = name; + this._displayButtons(name || 'app'); + this.closeContextMenu(false); + } + + closeContextMenu(animate) { + if (!this.contextMenu || !this.contextMenu.isOpen) + return; + + if (animate) + this.contextMenu.toggle(); + else + this.contextMenu.close(); + } + + _resizeApplicationsBox() { + let width = -1; + Util.each(this.applicationsBox.get_children(), c => { + let [min, nat] = c.get_preferred_width(-1.0); + if (nat > width) + width = nat; + }); + this.applicationsBox.set_width(width + 42); // The answer to life... + } + + /** + * Reset the ApplicationsBox to a specific category or list of buttons. + * @param {String} category (optional) The button type or application category to be displayed. + * @param {Array} buttons (optional) A list of existing buttons to show. + * @param {Array} autoCompletes (optional) A list of autocomplete strings to add buttons for and show. + */ + _displayButtons(category, buttons=[], autoCompletes=[]){ + /* We only operate on SimpleMenuItems here. If any other menu item types + * are added, they should be managed independently. */ + if (category) { + if (this.orderDirty) { + this._resetSortOrder(); + this.orderDirty = false; + } + + Util.each(this.applicationsBox.get_children(), c => { + let b = c._delegate; + if (!(b instanceof SimpleMenuItem)) + return; + + // destroy temporary buttons + if (b.type === 'transient' || b.type === 'search-provider') { + b.destroy(); + return; + } + + c.visible = b.type.includes(category) || b.type === 'app' && b.category.includes(category); + }); + } else { + this.orderDirty = true; + + Util.each(this.applicationsBox.get_children(), c => { + let b = c._delegate; + if (!(b instanceof SimpleMenuItem)) + return; + + // destroy temporary buttons + if (b.type === 'transient' || b.type === 'search-provider' || b.type === 'search-result') { + b.destroy(); + return; + } + + c.visible = false; + }); + + buttons.sort((ba, bb) => { + if (ba.matchIndex < bb.matchIndex) { + return -1; + } else + if (bb.matchIndex < ba.matchIndex) { + return 1; + } + + return ba.searchStrings < bb.searchStrings ? -1 : 1; + }); + + for (let i = 0; i < buttons.length; i++) { + this.applicationsBox.set_child_at_index(buttons[i].actor, i); + buttons[i].actor.visible = true; + } + } + + // reset temporary button storage + this._transientButtons = []; + this._searchProviderButtons = []; + + if (autoCompletes) { + Util.each(autoCompletes, item => { + let button = new TransientButton(this, item); + this._transientButtons.push(button); + this.applicationsBox.add_actor(button.actor); + }); + } + } + + _setCategoriesButtonActive(active) { + try { + let categoriesButtons = this.categoriesBox.get_children(); + for (var i in categoriesButtons) { + let button = categoriesButtons[i]; + let icon = button._delegate.icon; + if (active){ + button.set_style_class_name("menu-category-button"); + if (icon) { + icon.set_opacity(255); + } + } else { + button.set_style_class_name("menu-category-button-greyed"); + if (icon) { + let icon_opacity = icon.get_theme_node().get_double('opacity'); + icon_opacity = Math.min(Math.max(0, icon_opacity), 1); + if (icon_opacity) // Don't set opacity to 0 if not defined + icon.set_opacity(icon_opacity * 255); + } + } + } + } catch (e) { + global.log(e); + } + } + + resetSearch(){ + this.searchEntry.set_text(""); + } + + _onSearchTextChanged (se, prop) { + let searchString = this.searchEntry.get_text().trim(); + let searchActive = !(searchString == '' || searchString == this.searchEntry.hint_text); + if (!this.searchActive && !searchActive) + return; + + if (searchString == this._previousSearchPattern) + return; + this._previousSearchPattern = searchString; + + this.searchActive = searchActive; + this._fileFolderAccessActive = searchActive && this.searchFilesystem; + this._clearAllSelections(); + + if (searchActive) { + this.searchEntry.set_secondary_icon(this._searchActiveIcon); + if (!this._searchIconClickedId) { + this._searchIconClickedId = + this.searchEntry.connect('secondary-icon-clicked', () => { + this.resetSearch(); + this._select_category(); + }); + } + this._setCategoriesButtonActive(false); + this.lastSelectedCategory = "search" + + this._doSearch(searchString); + } else { + if (this._searchIconClickedId > 0) + this.searchEntry.disconnect(this._searchIconClickedId); + this._searchIconClickedId = 0; + this.searchEntry.set_secondary_icon(this._searchInactiveIcon); + this._previousSearchPattern = ""; + this._setCategoriesButtonActive(true); + this._select_category(); + this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected"; + this._activeContainer = null; + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + } + } + + _matchNames(buttons, pattern){ + let ret = []; + let regexpPattern = new RegExp(Util.escapeRegExp(pattern)); + + for (let i = 0; i < buttons.length; i++) { + if (buttons[i].type == "recent-clear" || buttons[i].type == "no-recent") { + continue; + } + let res = buttons[i].searchStrings[0].match(regexpPattern); + if (res) { + buttons[i].matchIndex = res.index + RECENT_PLACES_ADDER; + ret.push(buttons[i]); + } else { + buttons[i].matchIndex = NO_MATCH; + } + } + + return ret; + } + + _listApplications(pattern){ + if (!pattern) + return []; + + let apps = []; + let regexpPattern = new RegExp(Util.escapeRegExp(pattern)); + + for (let i in this._applicationsButtons) { + let button = this._applicationsButtons[i]; + + for (let j = 0; j < button.searchStrings.length; j++) { + let res = button.searchStrings[j].match(regexpPattern); + if (res) { + button.matchIndex = res.index + APP_MATCH_ADDERS[j]; + apps.push(button); + break; + } else { + button.matchIndex = NO_MATCH; + } + } + } + + return apps; + } + + _doSearch(rawPattern){ + let pattern = Util.latinise(rawPattern.toLowerCase()); + + this._searchTimeoutId = 0; + this._activeContainer = null; + this._activeActor = null; + this._selectedItemIndex = null; + this._previousTreeSelectedActor = null; + this._previousSelectedActor = null; + + let buttons = this._listApplications(pattern); + + let result = this._matchNames(this._favoriteDocButtons, pattern); + buttons = buttons.concat(result); + + result = this._matchNames(this._placesButtons, pattern); + buttons = buttons.concat(result); + + result = this._matchNames(this._recentButtons, pattern); + buttons = buttons.concat(result); + + var acResults = []; // search box autocompletion results + if (this.searchFilesystem) { + // Don't use the pattern here, as filesystem is case sensitive + acResults = this._getCompletions(rawPattern); + } + + this._displayButtons(null, buttons, acResults); + + if (buttons.length || acResults.length) { + this.appBoxIter.reloadVisible(); + let item_actor = this.appBoxIter.getFirstVisible(); + this._selectedItemIndex = this.appBoxIter.getAbsoluteIndexOfChild(item_actor); + this._activeContainer = this.applicationsBox; + this._scrollToButton(item_actor._delegate); + this._buttonEnterEvent(item_actor._delegate); + } else { + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + } + + SearchProviderManager.launch_all(pattern, Lang.bind(this, function(provider, results) { + try { + for (var i in results) { + if (results[i].type != 'software') + { + let button = new SearchProviderResultButton(this, provider, results[i]); + this._searchProviderButtons.push(button); + this.applicationsBox.add_actor(button.actor); + if (this._selectedItemIndex === null) { + this.appBoxIter.reloadVisible(); + let item_actor = this.appBoxIter.getFirstVisible(); + this._selectedItemIndex = this.appBoxIter.getAbsoluteIndexOfChild(item_actor); + this._activeContainer = this.applicationsBox; + if (item_actor && item_actor != this.searchEntry) { + this._buttonEnterEvent(item_actor._delegate); + } + } + } + } + } catch(e) { + global.log(e); + } + })); + + return false; + } + + _getCompletion (text) { + if (!text.includes('/') || text.endsWith('/')) + return ''; + return this._pathCompleter.get_completion_suffix(text); + } + + _getCompletions (text) { + if (!text.includes('/')) + return []; + return this._pathCompleter.get_completions(text); + } + + _run (input) { + this._commandError = false; + if (input) { + let path = null; + if (input.startsWith('/')) { + path = input; + } else { + if (input.startsWith('~')) + input = input.slice(1); + path = GLib.get_home_dir() + '/' + input; + } + + if (GLib.file_test(path, GLib.FileTest.EXISTS)) { + let file = Gio.file_new_for_path(path); + try { + Gio.app_info_launch_default_for_uri(file.get_uri(), + global.create_app_launch_context()); + } catch (e) { + // The exception from gjs contains an error string like: + // Error invoking Gio.app_info_launch_default_for_uri: No application + // is registered as handling this file + // We are only interested in the part after the first colon. + //let message = e.message.replace(/[^:]*: *(.+)/, '$1'); + return false; + } + } else { + return false; + } + } + + return true; + } +}; + +function main(metadata, orientation, panel_height, instance_id) { + return new CinnamonMenuApplet(orientation, panel_height, instance_id); +} diff --git a/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/metadata.json b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/metadata.json new file mode 100755 index 0000000..7d08340 --- /dev/null +++ b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/metadata.json @@ -0,0 +1,7 @@ +{ + "uuid": "menu@cinnamon.org", + "name": "Menu", + "description": "Main Cinnamon menu", + "icon": "applications-other", + "max-instances": -1 +} diff --git a/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json new file mode 100755 index 0000000..e1bfc22 --- /dev/null +++ b/external/packages/blobs/desktop/skel/.local/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json @@ -0,0 +1,258 @@ +{ + "layout": { + "type": "layout", + "pages": [ + "panel", + "menu" + ], + "panel": { + "type": "page", + "title": "Panel", + "sections": [ + "panel-appear", + "panel-behave" + ] + }, + "menu": { + "type": "page", + "title": "Menu", + "sections": [ + "menu-layout", + "menu-behave" + ] + }, + "panel-appear": { + "type": "section", + "title": "Appearance", + "keys": [ + "menu-custom", + "menu-icon", + "menu-icon-size", + "menu-label" + ] + }, + "panel-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "overlay-key", + "activate-on-hover", + "hover-delay", + "force-show-panel", + "enable-animation" + ] + }, + "menu-layout": { + "type": "section", + "title": "Layout and content", + "keys": [ + "show-category-icons", + "category-icon-size", + "show-application-icons", + "application-icon-size", + "favbox-show", + "fav-icon-size", + "favbox-min-height", + "show-places", + "show-recents", + "menu-editor-button" + ] + }, + "menu-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "enable-autoscroll", + "search-filesystem" + ] + } + }, + "overlay-key": { + "type": "keybinding", + "description": "Keyboard shortcut to open and close the menu", + "default": "Super_L::Super_R", + "value": "Super_L::Super_R" + }, + "menu-custom": { + "type": "switch", + "default": false, + "description": "Use a custom icon and label", + "tooltip": "Check this to specify a custom icon and label", + "value": true + }, + "menu-icon": { + "type": "iconfilechooser", + "default": "cinnamon-symbolic", + "description": "Icon", + "tooltip": "Select an icon to show in the panel.", + "default_icon": "cinnamon-symbolic", + "dependency": "menu-custom", + "indent": true, + "value": "/usr/share/pixmaps/orangepi/orangepi.png" + }, + "menu-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 96, + "step": 1, + "units": "px", + "description": "Icon size", + "dependency": "menu-custom", + "indent": true, + "value": 32 + }, + "menu-label": { + "type": "entry", + "default": "Menu", + "description": "Text", + "tooltip": "Enter custom text to show in the panel.", + "dependency": "menu-custom", + "indent": true, + "value": "Menu" + }, + "favbox-min-height": { + "type": "spinbutton", + "default": 300, + "min": 50, + "max": 1000, + "step": 10, + "units": "px", + "dependency": "favbox-show", + "description": "Minimum height of the favorites section", + "tooltip": "The minimum size allocated for the favorites section (this has an impact on the overall height of the menu).", + "value": 300 + }, + "show-category-icons": { + "type": "switch", + "default": true, + "description": "Show category icons", + "tooltip": "Choose whether or not to show icons on categories.", + "value": true + }, + "category-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Categories icon size", + "dependency": "show-category-icons", + "indent": true, + "value": 22 + }, + "show-application-icons": { + "type": "switch", + "default": true, + "description": "Show application icons", + "tooltip": "Choose whether or not to show icons on applications.", + "value": true + }, + "application-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Applications icon size", + "dependency": "show-application-icons", + "indent": true, + "value": 22 + }, + "favbox-show": { + "type": "switch", + "default": true, + "description": "Show favorites and session buttons", + "tooltip": "Choose whether or not to show the left pane of the menu.", + "value": true + }, + "fav-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 64, + "step": 1, + "units": "px", + "description": "Favorites icon size", + "dependency": "favbox-show", + "indent": true, + "value": 32 + }, + "show-favorites": { + "type": "switch", + "default": true, + "description": "Show favorites", + "tooltip": "Choose whether or not to show favorite files in the menu.", + "value": true + }, + "show-places": { + "type": "switch", + "default": true, + "description": "Show bookmarks and places", + "tooltip": "Choose whether or not to show bookmarks and places in the menu.", + "value": true + }, + "show-recents": { + "type": "switch", + "default": true, + "description": "Show recents", + "tooltip": "Choose whether or not to show recents in the menu.", + "value": true + }, + "enable-autoscroll": { + "type": "switch", + "default": true, + "description": "Enable autoscrolling in application list", + "tooltip": "Choose whether or not to enable smooth autoscrolling in the application list.", + "value": true + }, + "search-filesystem": { + "type": "switch", + "default": false, + "description": "Enable filesystem path entry in search box", + "tooltip": "Allows path entry in the menu search box.", + "value": false + }, + "force-show-panel": { + "type": "switch", + "default": true, + "description": "Force the panel to be visible when opening the menu", + "tooltip": "Opening the menu will also show the main panel (which may be auto-hidden).", + "value": true + }, + "activate-on-hover": { + "type": "switch", + "default": false, + "description": "Open the menu when I move my mouse over it", + "tooltip": "Enable opening the menu when the mouse enters the applet", + "value": false + }, + "hover-delay": { + "type": "spinbutton", + "default": 0, + "min": 0, + "max": 1000, + "step": 50, + "units": "milliseconds", + "dependency": "activate-on-hover", + "description": "Menu hover delay", + "tooltip": "Delay before the menu opens when hovered", + "value": 0 + }, + "enable-animation": { + "type": "switch", + "default": false, + "description": "Use menu animations", + "tooltip": "Allow the menu to animate on open and close", + "value": false + }, + "menu-editor-button": { + "type": "button", + "description": "Open the menu editor", + "callback": "_launch_editor", + "tooltip": "Press this button to customize your menu entries." + }, + "__md5__": "c4b27da93411965126569249b61793d7" +} diff --git a/external/packages/blobs/desktop/skel_new/.cinnamon/configs/menu@cinnamon.org/0.json b/external/packages/blobs/desktop/skel_new/.cinnamon/configs/menu@cinnamon.org/0.json new file mode 100755 index 0000000..e1bfc22 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.cinnamon/configs/menu@cinnamon.org/0.json @@ -0,0 +1,258 @@ +{ + "layout": { + "type": "layout", + "pages": [ + "panel", + "menu" + ], + "panel": { + "type": "page", + "title": "Panel", + "sections": [ + "panel-appear", + "panel-behave" + ] + }, + "menu": { + "type": "page", + "title": "Menu", + "sections": [ + "menu-layout", + "menu-behave" + ] + }, + "panel-appear": { + "type": "section", + "title": "Appearance", + "keys": [ + "menu-custom", + "menu-icon", + "menu-icon-size", + "menu-label" + ] + }, + "panel-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "overlay-key", + "activate-on-hover", + "hover-delay", + "force-show-panel", + "enable-animation" + ] + }, + "menu-layout": { + "type": "section", + "title": "Layout and content", + "keys": [ + "show-category-icons", + "category-icon-size", + "show-application-icons", + "application-icon-size", + "favbox-show", + "fav-icon-size", + "favbox-min-height", + "show-places", + "show-recents", + "menu-editor-button" + ] + }, + "menu-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "enable-autoscroll", + "search-filesystem" + ] + } + }, + "overlay-key": { + "type": "keybinding", + "description": "Keyboard shortcut to open and close the menu", + "default": "Super_L::Super_R", + "value": "Super_L::Super_R" + }, + "menu-custom": { + "type": "switch", + "default": false, + "description": "Use a custom icon and label", + "tooltip": "Check this to specify a custom icon and label", + "value": true + }, + "menu-icon": { + "type": "iconfilechooser", + "default": "cinnamon-symbolic", + "description": "Icon", + "tooltip": "Select an icon to show in the panel.", + "default_icon": "cinnamon-symbolic", + "dependency": "menu-custom", + "indent": true, + "value": "/usr/share/pixmaps/orangepi/orangepi.png" + }, + "menu-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 96, + "step": 1, + "units": "px", + "description": "Icon size", + "dependency": "menu-custom", + "indent": true, + "value": 32 + }, + "menu-label": { + "type": "entry", + "default": "Menu", + "description": "Text", + "tooltip": "Enter custom text to show in the panel.", + "dependency": "menu-custom", + "indent": true, + "value": "Menu" + }, + "favbox-min-height": { + "type": "spinbutton", + "default": 300, + "min": 50, + "max": 1000, + "step": 10, + "units": "px", + "dependency": "favbox-show", + "description": "Minimum height of the favorites section", + "tooltip": "The minimum size allocated for the favorites section (this has an impact on the overall height of the menu).", + "value": 300 + }, + "show-category-icons": { + "type": "switch", + "default": true, + "description": "Show category icons", + "tooltip": "Choose whether or not to show icons on categories.", + "value": true + }, + "category-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Categories icon size", + "dependency": "show-category-icons", + "indent": true, + "value": 22 + }, + "show-application-icons": { + "type": "switch", + "default": true, + "description": "Show application icons", + "tooltip": "Choose whether or not to show icons on applications.", + "value": true + }, + "application-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Applications icon size", + "dependency": "show-application-icons", + "indent": true, + "value": 22 + }, + "favbox-show": { + "type": "switch", + "default": true, + "description": "Show favorites and session buttons", + "tooltip": "Choose whether or not to show the left pane of the menu.", + "value": true + }, + "fav-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 64, + "step": 1, + "units": "px", + "description": "Favorites icon size", + "dependency": "favbox-show", + "indent": true, + "value": 32 + }, + "show-favorites": { + "type": "switch", + "default": true, + "description": "Show favorites", + "tooltip": "Choose whether or not to show favorite files in the menu.", + "value": true + }, + "show-places": { + "type": "switch", + "default": true, + "description": "Show bookmarks and places", + "tooltip": "Choose whether or not to show bookmarks and places in the menu.", + "value": true + }, + "show-recents": { + "type": "switch", + "default": true, + "description": "Show recents", + "tooltip": "Choose whether or not to show recents in the menu.", + "value": true + }, + "enable-autoscroll": { + "type": "switch", + "default": true, + "description": "Enable autoscrolling in application list", + "tooltip": "Choose whether or not to enable smooth autoscrolling in the application list.", + "value": true + }, + "search-filesystem": { + "type": "switch", + "default": false, + "description": "Enable filesystem path entry in search box", + "tooltip": "Allows path entry in the menu search box.", + "value": false + }, + "force-show-panel": { + "type": "switch", + "default": true, + "description": "Force the panel to be visible when opening the menu", + "tooltip": "Opening the menu will also show the main panel (which may be auto-hidden).", + "value": true + }, + "activate-on-hover": { + "type": "switch", + "default": false, + "description": "Open the menu when I move my mouse over it", + "tooltip": "Enable opening the menu when the mouse enters the applet", + "value": false + }, + "hover-delay": { + "type": "spinbutton", + "default": 0, + "min": 0, + "max": 1000, + "step": 50, + "units": "milliseconds", + "dependency": "activate-on-hover", + "description": "Menu hover delay", + "tooltip": "Delay before the menu opens when hovered", + "value": 0 + }, + "enable-animation": { + "type": "switch", + "default": false, + "description": "Use menu animations", + "tooltip": "Allow the menu to animate on open and close", + "value": false + }, + "menu-editor-button": { + "type": "button", + "description": "Open the menu editor", + "callback": "_launch_editor", + "tooltip": "Press this button to customize your menu entries." + }, + "__md5__": "c4b27da93411965126569249b61793d7" +} diff --git a/external/packages/blobs/desktop/skel_new/.config/autostart/org.orangepi.opiwiz.desktop b/external/packages/blobs/desktop/skel_new/.config/autostart/org.orangepi.opiwiz.desktop new file mode 100644 index 0000000..48a6dd8 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/autostart/org.orangepi.opiwiz.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=opiwiz +Exec=sudo opiwiz +Icon=org.orangepi.opiwiz +Terminal=false +Type=Application +Categories=GTK; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.config/autostart/pasystray.desktop b/external/packages/blobs/desktop/skel_new/.config/autostart/pasystray.desktop new file mode 100644 index 0000000..4a9b03d --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/autostart/pasystray.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.9.4 +Type=Application +Name=Pulse audio pasystray +Comment=pasystray +Exec=pasystray +OnlyShowIn=XFCE; +StartupNotify=false +Terminal=false +Hidden=false + diff --git a/external/packages/blobs/desktop/skel_new/.config/dconf/user b/external/packages/blobs/desktop/skel_new/.config/dconf/user new file mode 100644 index 0000000..43e1e43 Binary files /dev/null and b/external/packages/blobs/desktop/skel_new/.config/dconf/user differ diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-accessories.menu b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-accessories.menu new file mode 100644 index 0000000..9b83524 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-accessories.menu @@ -0,0 +1,19 @@ + + + + Applications + + xfce-accessories + xfce-accessories.directory + + thunar-bulk-rename.desktop + dbx_preference.desktop + DockX.desktop + xfce4-appfinder.desktop + mc.desktop + mcedit.desktop + fcitx.desktop + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-multimedia.menu b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-multimedia.menu new file mode 100644 index 0000000..133a740 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-multimedia.menu @@ -0,0 +1,17 @@ + + + + Applications + + xfce-multimedia + xfce-multimedia.directory + + pasystray.desktop + pavucontrol.desktop + pavucontrol-qt.desktop + pavumeter-record.desktop + pavumeter.desktop + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-network.menu b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-network.menu new file mode 100644 index 0000000..8e12d54 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-network.menu @@ -0,0 +1,14 @@ + + + + Applications + + xfce-network + xfce-network.directory + + xfce4-web-browser.desktop + xfce4-mail-reader.desktop + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-settings.menu b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-settings.menu new file mode 100644 index 0000000..8efceb2 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-settings.menu @@ -0,0 +1,13 @@ + + + + Applications + + xfce-settings + xfce-settings.directory + + software-properties-drivers.desktop + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-system.menu b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-system.menu new file mode 100644 index 0000000..892c866 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/applications-merged/user-xfce-system.menu @@ -0,0 +1,15 @@ + + + + Applications + + xfce-system + xfce-system.directory + + debian-xterm.desktop + debian-uxterm.desktop + system-config-printer.desktop + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/gnome-applications-merged b/external/packages/blobs/desktop/skel_new/.config/menus/gnome-applications-merged new file mode 120000 index 0000000..778eb50 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/gnome-applications-merged @@ -0,0 +1 @@ +applications-merged \ No newline at end of file diff --git a/external/packages/blobs/desktop/skel_new/.config/menus/xfce-applications.menu b/external/packages/blobs/desktop/skel_new/.config/menus/xfce-applications.menu new file mode 100644 index 0000000..3e65068 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/menus/xfce-applications.menu @@ -0,0 +1,242 @@ + + + + Xfce + + + + + X-Xfce-Toplevel + + /etc/xdg/menus/xfce-applications.menu + + Settings + xfce-settings.directory + + Screensavers + xfce-screensavers.directory + + + + + + + + xfce-settings-manager.desktop + + xfce4-accessibility-settings.desktop + software-properties-drivers.desktop + nm-connection-editor.desktop + xfce-ui-settings.desktop + blueman-adapters.desktop + blueman-manager.desktop + xfce4-color-settings.desktop + xfce4-mime-settings.desktop + xfce-backdrop-settings.desktop + xfce-display-settings.desktop + thunar-settings.desktop + xfce-keyboard-settings.desktop + menulibre.desktop + xfce-mouse-settings.desktop + xfce4-notifyd-config.desktop + orangepi-config.desktop + panel-preferences.desktop + xfce4-power-manager-settings.desktop + system-config-printer.desktop + thunar-volman-settings.desktop + xscreensaver-properties.desktop + Screensavers + xfce-session-settings.desktop + xfce4-settings-editor.desktop + software-properties-gtk.desktop + xfce-wm-settings.desktop + xfce-wmtweaks-settings.desktop + xfce-workspaces-settings.desktop + xfce4-terminal-settings.desktop + fcitx-configtool.desktop + + + + + Accessories + xfce-accessories.directory + /home/orangepi/.local/share/desktop-directories + + + xfce4-about.desktop + xfce4-appfinder.desktop + thunar-bulk-rename.desktop + dbx_preference.desktop + DockX.desktop + xfce4-file-manager.desktop + org.gnome.font-viewer.desktop + menulibre.desktop + mousepad.desktop + xfce4-run.desktop + xfce4-screenshooter.desktop + xfce4-terminal-emulator.desktop + thunar.desktop + fcitx.desktop + fcitx-skin-installer.desktop + mc.desktop + mcedit.desktop + + + + + Development + xfce-development.directory + + + geany.desktop + python3.9.desktop + + + + + Education + xfce-education.directory + + + + + + + Games + xfce-games.directory + + + + + + + Graphics + xfce-graphics.directory + + + org.gnome.Evince.desktop + gimp.desktop + libreoffice-draw.desktop + org.gnome.Evince-previewer.desktop + viewnior.desktop + + + + + Network + xfce-network.directory + + + firefox-esr.desktop + io.github.Hexchat.desktop + xfce4-mail-reader.desktop + remmina-file.desktop + org.remmina.Remmina.desktop + xfce4-web-browser.desktop + transmission-gtk.desktop + + + + + Multimedia + xfce-multimedia.directory + + + mpv.desktop + pasystray.desktop + pavucontrol.desktop + pavucontrol-qt.desktop + pavumeter-record.desktop + pavumeter.desktop + + + + + Office + xfce-office.directory + + + org.gnome.Evince.desktop + libreoffice-base.desktop + libreoffice-calc.desktop + libreoffice-draw.desktop + libreoffice-impress.desktop + libreoffice-math.desktop + libreoffice-writer.desktop + org.gnome.Evince-previewer.desktop + + + + + Other + xfce-other.directory + + panel-desktop-handler.desktop + + + libreoffice-xsltfilter.desktop + + + nm-applet.desktop + + + remmina-gnome.desktop + + + + system-config-printer.desktop + panel-desktop-handler.desktop + libreoffice-xsltfilter.desktop + nm-applet.desktop + remmina-gnome.desktop + + + + + System + xfce-system.directory + + + thunar-bulk-rename.desktop + gdebi.desktop + gparted.desktop + xfce4-session-logout.desktop + system-config-printer.desktop + lxtask.desktop + thunar.desktop + xfce4-terminal.desktop + fcitx.desktop + htop.desktop + mc.desktop + debian-uxterm.desktop + debian-xterm.desktop + + + + + xfce4-run.desktop + + xfce4-terminal-emulator.desktop + xfce4-file-manager.desktop + xfce4-mail-reader.desktop + xfce4-web-browser.desktop + + Settings + + xfce4-about.desktop + Accessories + Development + Education + Games + Graphics + Network + Multimedia + Office + Other + System + + xfce4-session-logout.desktop + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/terminal/terminalrc b/external/packages/blobs/desktop/skel_new/.config/xfce4/terminal/terminalrc new file mode 100644 index 0000000..2d183f0 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/terminal/terminalrc @@ -0,0 +1,24 @@ +[Configuration] +BackgroundMode=TERMINAL_BACKGROUND_TRANSPARENT +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabCloseMiddleClick=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +MiscScrollAlternateScreen=TRUE +BackgroundDarkness=0.940000 +FontName=Monospace 10 +ColorForeground=#5f5fffff0000 +TitleInitial=OrangePi +ScrollingBar=TERMINAL_SCROLLBAR_NONE diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/thunar-volman.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/thunar-volman.xml new file mode 100644 index 0000000..670b869 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/thunar-volman.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml new file mode 100644 index 0000000..c3d5d2a --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 0000000..3c48b5f --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml new file mode 100644 index 0000000..5419e66 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml new file mode 100644 index 0000000..39f68e8 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..8866961 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml new file mode 100644 index 0000000..48d0d0c --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml new file mode 100644 index 0000000..0305c1f --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml new file mode 100644 index 0000000..f9abf3b --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml new file mode 100644 index 0000000..9851594 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/DockX.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/DockX.desktop new file mode 100644 index 0000000..9c0d1f0 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/DockX.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=DockX +GenericName=Dock for DockbarX +NoDisplay=true +Comment=Stand-alone dock for DockbarX +Icon=dockbarx +Exec=dockx +Actions= +Categories=Utility; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/dbx_preference.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/dbx_preference.desktop new file mode 100644 index 0000000..962c80b --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/dbx_preference.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=DockbarX Preference +GenericName=Preference Dialog +NoDisplay=true +Comment=Preference dialog for DockbarX +Icon=dockbarx +Exec=dbx_preference +Actions= +Categories=Utility; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/debian-uxterm.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/debian-uxterm.desktop new file mode 100644 index 0000000..7e06322 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/debian-uxterm.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=UXTerm +NoDisplay=true +Comment=xterm wrapper for Unicode environments +Icon=mini.xterm +Exec=uxterm +Actions= +Categories=System;TerminalEmulator; +Keywords=shell;prompt;command;commandline;cmd; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/debian-xterm.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/debian-xterm.desktop new file mode 100644 index 0000000..fe236c4 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/debian-xterm.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=XTerm +NoDisplay=true +Comment=standard terminal emulator for the X window system +Icon=mini.xterm +Exec=xterm +Actions= +Categories=System;TerminalEmulator; +Keywords=shell;prompt;command;commandline;cmd; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/fcitx.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/fcitx.desktop new file mode 100644 index 0000000..30dd33f --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/fcitx.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Fcitx +GenericName=Input Method +NoDisplay=true +Comment=Start Input Method +Icon=fcitx +Exec=fcitx +Actions= +Categories=System;Utility; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/mc.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/mc.desktop new file mode 100644 index 0000000..6efa904 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/mc.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Midnight Commander +NoDisplay=true +Comment=File manager +Icon=MidnightCommander +Exec=mc +Terminal=true +Actions= +Categories=ConsoleOnly;FileManager;FileTools;System;Utility; +Keywords=file manager;console; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/mcedit.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/mcedit.desktop new file mode 100644 index 0000000..ec8db41 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/mcedit.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Midnight Commander editor +NoDisplay=true +Comment=Edit text files +Icon=MidnightCommander +Exec=mcedit +Terminal=true +Actions= +Categories=TextEditor;Utility; +Keywords=editor;console;text; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/orangepi-config.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/orangepi-config.desktop new file mode 100755 index 0000000..f5e2d8d --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/orangepi-config.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=orangepi-config +Comment=Basic system settings +Exec=sudo orangepi-config +Icon=/usr/share/icons/orangepi/opi_config128x128.png +Path=/usr/share/icons/orangepi/ +Terminal=true +StartupNotify=false +Categories=GTK;GNOME;Settings;HardwareSettings; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/pasystray.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/pasystray.desktop new file mode 100644 index 0000000..d071e4c --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/pasystray.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=PulseAudio System Tray +NoDisplay=true +Comment=An Applet for PulseAudio +Icon=pasystray +Exec=pasystray +Actions= +Categories=Audio;AudioVideo; +Keywords=pulseaudio;tray;system tray;applet;volume; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/pavucontrol-qt.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavucontrol-qt.desktop new file mode 100644 index 0000000..583c1aa --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavucontrol-qt.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=PulseAudio Volume Control +GenericName=Volume Control +NoDisplay=true +Comment=Adjust the volume level +Icon=multimedia-volume-control +Exec=pavucontrol-qt +Actions= +Categories=Audio;AudioVideo;Mixer;Qt; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/pavucontrol.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavucontrol.desktop new file mode 100644 index 0000000..b3e397b --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavucontrol.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=PulseAudio Volume Control +GenericName=Volume Control +NoDisplay=true +Comment=Adjust the volume level +Icon=multimedia-volume-control +Exec=pavucontrol +Actions= +Categories=Audio;AudioVideo;GTK;Mixer; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/pavumeter-record.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavumeter-record.desktop new file mode 100644 index 0000000..0de14ca --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavumeter-record.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=PulseAudio Volume Meter (Capture) +GenericName=Capture Volume Meter +NoDisplay=true +Comment=Monitor the input volume +Icon=audio-input-microphone +Exec=pavumeter --record +Actions= +Categories=Audio;AudioVideo; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/pavumeter.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavumeter.desktop new file mode 100644 index 0000000..5e2bee6 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/pavumeter.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=PulseAudio Volume Meter (Playback) +GenericName=Playback Volume Meter +NoDisplay=true +Comment=Monitor the output volume +Icon=audio-input-microphone +Exec=pavumeter +Actions= +Categories=Audio;AudioVideo; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/software-properties-drivers.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/software-properties-drivers.desktop new file mode 100644 index 0000000..b247425 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/software-properties-drivers.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Additional Drivers +NoDisplay=true +Comment=Configure third-party and proprietary drivers +Icon=jockey +NotShowIn=GNOME;Unity;KDE; +Exec=/usr/bin/software-properties-gtk --open-tab=4 +Actions= +Categories=GTK;HardwareSettings;Settings;X-XFCE; +Keywords=Drivers; diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/system-config-printer.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/system-config-printer.desktop new file mode 100644 index 0000000..65df01d --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/system-config-printer.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Print Settings +GenericName=Print Settings +Comment=Configure printers +Icon=printer +Exec=system-config-printer +Actions= +Categories=GTK;HardwareSettings;Printing;Settings; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/thunar-bulk-rename.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/thunar-bulk-rename.desktop new file mode 100644 index 0000000..6a3c2b2 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/thunar-bulk-rename.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Bulk Rename +GenericName=Bulk Rename +NoDisplay=true +Comment=Rename Multiple Files +Icon=org.xfce.thunar +Exec=thunar --bulk-rename %F +Actions= +Categories=Core;Filesystem;GTK;System;Utility; +Keywords=bulk;renamer;renaming;thunar;files;folders;directory;directories; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/applications/xfce4-appfinder.desktop b/external/packages/blobs/desktop/skel_new/.local/share/applications/xfce4-appfinder.desktop new file mode 100644 index 0000000..e8c3c1a --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/applications/xfce4-appfinder.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.1 +Type=Application +Name=Application Finder +NoDisplay=true +Comment=Find and launch applications installed on your system +Icon=org.xfce.appfinder +Exec=xfce4-appfinder +Actions= +Categories=Utility;X-XFCE; +Keywords=program;applications;bookmarks; +StartupNotify=true diff --git a/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/appUtils.js b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/appUtils.js new file mode 100755 index 0000000..ff6ffa7 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/appUtils.js @@ -0,0 +1,111 @@ +const Cinnamon = imports.gi.Cinnamon; +const CMenu = imports.gi.CMenu; + +const Util = imports.misc.util; + +let appsys = Cinnamon.AppSystem.get_default(); + +// sort apps by their latinised name +function appSort(a, b) { + a = Util.latinise(a[0].get_name().toLowerCase()); + b = Util.latinise(b[0].get_name().toLowerCase()); + return a > b; +} + +// sort cmenu directories with admin and prefs categories last +function dirSort(a, b) { + let menuIdA = a.get_menu_id().toLowerCase(); + let menuIdB = b.get_menu_id().toLowerCase(); + + let prefCats = ["administration", "preferences"]; + let prefIdA = prefCats.indexOf(menuIdA); + let prefIdB = prefCats.indexOf(menuIdB); + + if (prefIdA < 0 && prefIdB >= 0) { + return -1; + } + if (prefIdA >= 0 && prefIdB < 0) { + return 1; + } + + let nameA = a.get_name().toLowerCase(); + let nameB = b.get_name().toLowerCase(); + + if (nameA > nameB) { + return 1; + } + if (nameA < nameB) { + return -1; + } + return 0; +} + +/* returns all apps and the categories they belong to, and all top level categories + * + * [ + * [ + * app 1, + * [ + * top level category 1, + * random category, + * random category + * ] + * ], + * ... + * ], + * [ + * top level category 1, + * top level category 2, + * top level category 3, + * top level category 4, + * ... + * ] */ +function getApps() { + let apps = new Map(); + let dirs = []; + + let tree = appsys.get_tree(); + let root = tree.get_root_directory(); + let iter = root.iter(); + let nextType; + + while ((nextType = iter.next()) != CMenu.TreeItemType.INVALID) { + if (nextType == CMenu.TreeItemType.DIRECTORY) { + let dir = iter.get_directory(); + if (dir.get_is_nodisplay()) + continue; + if (loadDirectory(dir, dir, apps)) + dirs.push(dir); + } + } + + dirs.sort(dirSort); + let sortedApps = Array.from(apps.entries()).sort(appSort); + + return [sortedApps, dirs]; +} + +// load all apps and their categories from a cmenu directory +// into 'apps' Map +function loadDirectory(dir, top_dir, apps) { + let iter = dir.iter(); + let has_entries = false; + let nextType; + while ((nextType = iter.next()) != CMenu.TreeItemType.INVALID) { + if (nextType == CMenu.TreeItemType.ENTRY) { + let desktopId = iter.get_entry().get_desktop_file_id(); + let app = appsys.lookup_app(desktopId); + if (!app || app.get_nodisplay()) + continue; + + has_entries = true; + if (apps.has(app)) + apps.get(app).push(dir.get_menu_id()); + else + apps.set(app, [top_dir.get_menu_id()]); + } else if (nextType == CMenu.TreeItemType.DIRECTORY) { + has_entries = loadDirectory(iter.get_directory(), top_dir, apps); + } + } + return has_entries; +} diff --git a/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/applet.js b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/applet.js new file mode 100755 index 0000000..c92c2d4 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/applet.js @@ -0,0 +1,3131 @@ +const Applet = imports.ui.applet; +const Mainloop = imports.mainloop; +const Lang = imports.lang; +const Cinnamon = imports.gi.Cinnamon; +const St = imports.gi.St; +const Clutter = imports.gi.Clutter; +const Main = imports.ui.main; +const MessageTray = imports.ui.messageTray; +const PopupMenu = imports.ui.popupMenu; +const AppFavorites = imports.ui.appFavorites; +const Gtk = imports.gi.Gtk; +const Atk = imports.gi.Atk; +const Gio = imports.gi.Gio; +const XApp = imports.gi.XApp; +const GnomeSession = imports.misc.gnomeSession; +const ScreenSaver = imports.misc.screenSaver; +const FileUtils = imports.misc.fileUtils; +const Util = imports.misc.util; +const DND = imports.ui.dnd; +const Meta = imports.gi.Meta; +const DocInfo = imports.misc.docInfo; +const GLib = imports.gi.GLib; +const Settings = imports.ui.settings; +const Pango = imports.gi.Pango; +const SearchProviderManager = imports.ui.searchProviderManager; +const SignalManager = imports.misc.signalManager; +const Params = imports.misc.params; + +const INITIAL_BUTTON_LOAD = 30; +const NUM_SYSTEM_BUTTONS = 3; +const MAX_BUTTON_WIDTH = "max-width: 20em;"; + +const USER_DESKTOP_PATH = FileUtils.getUserDesktopDir(); + +const PRIVACY_SCHEMA = "org.cinnamon.desktop.privacy"; +const REMEMBER_RECENT_KEY = "remember-recent-files"; + +const AppUtils = require('./appUtils'); + +let appsys = Cinnamon.AppSystem.get_default(); + +const RefreshFlags = Object.freeze({ + APP: 0b000001, + FAV_APP: 0b000010, + FAV_DOC: 0b000100, + PLACE: 0b001000, + RECENT: 0b010000, + SYSTEM: 0b100000 +}); +const REFRESH_ALL_MASK = 0b111111; + +const NO_MATCH = 99999; +const APP_MATCH_ADDERS = [ + 0, // name + 1000, // keywords + 2000, // desc + 3000 // id +]; +const RECENT_PLACES_ADDER = 4000; + +/* VisibleChildIterator takes a container (boxlayout, etc.) + * and creates an array of its visible children and their index + * positions. We can then work through that list without + * mucking about with positions and math, just give a + * child, and it'll give you the next or previous, or first or + * last child in the list. + * + * We could have this object regenerate off a signal + * every time the visibles have changed in our applicationBox, + * but we really only need it when we start keyboard + * navigating, so increase speed, we reload only when we + * want to use it. + */ + +class VisibleChildIterator { + constructor(container) { + this.container = container; + this.reloadVisible(); + } + + reloadVisible() { + this.array = this.container.get_focus_chain() + .filter(x => !(x._delegate instanceof PopupMenu.PopupSeparatorMenuItem)); + } + + getNextVisible(curChild) { + return this.getVisibleItem(this.array.indexOf(curChild) + 1); + } + + getPrevVisible(curChild) { + return this.getVisibleItem(this.array.indexOf(curChild) - 1); + } + + getFirstVisible() { + return this.array[0]; + } + + getLastVisible() { + return this.array[this.array.length - 1]; + } + + getVisibleIndex(curChild) { + return this.array.indexOf(curChild); + } + + getVisibleItem(index) { + let len = this.array.length; + index = ((index % len) + len) % len; + return this.array[index]; + } + + getNumVisibleChildren() { + return this.array.length; + } + + getAbsoluteIndexOfChild(child) { + return this.container.get_children().indexOf(child); + } +} + +/** + * SimpleMenuItem type strings in use: + * ------------------------------------------------- + * app ApplicationButton + * category CategoryButton + * fav FavoritesButton + * no-recent "No recent documents" button + * none Default type + * place PlaceButton + * recent RecentsButton + * recent-clear "Clear recent documents" button + * search-provider SearchProviderResultButton + * system SystemButton + * transient TransientButton + */ + +/** + * SimpleMenuItem default parameters. + */ +const SMI_DEFAULT_PARAMS = Object.freeze({ + name: '', + description: '', + type: 'none', + styleClass: 'popup-menu-item', + reactive: true, + activatable: true, + withMenu: false +}); + +/** + * A simpler alternative to PopupBaseMenuItem - does not implement all interfaces of PopupBaseMenuItem. Any + * additional properties in the params object beyond defaults will also be set on the instance. + * @param {Object} applet - The menu applet instance + * @param {Object} params - Object containing item parameters, all optional. + * @param {string} params.name - The name for the menu item. + * @param {string} params.description - The description for the menu item. + * @param {string} params.type - A string describing the type of item. + * @param {string} params.styleClass - The item's CSS style class. + * @param {boolean} params.reactive - Item recieves events. + * @param {boolean} params.activatable - Activates via primary click. Must provide an 'activate' function on + * the prototype or instance. + * @param {boolean} params.withMenu - Shows menu via secondary click. Must provide a 'populateMenu' function + * on the prototype or instance. + */ +class SimpleMenuItem { + constructor(applet, params) { + params = Params.parse(params, SMI_DEFAULT_PARAMS, true); + this._signals = new SignalManager.SignalManager(); + + this.actor = new St.BoxLayout({ style_class: params.styleClass, + style: MAX_BUTTON_WIDTH, + reactive: params.reactive, + accessible_role: Atk.Role.MENU_ITEM }); + + this._signals.connect(this.actor, 'destroy', () => this.destroy(true)); + + this.actor._delegate = this; + this.applet = applet; + this.label = null; + this.icon = null; + + this.matchIndex = NO_MATCH; + + for (let prop in params) + this[prop] = params[prop]; + + if (params.reactive) { + this._signals.connect(this.actor, 'enter-event', () => applet._buttonEnterEvent(this)); + this._signals.connect(this.actor, 'leave-event', () => applet._buttonLeaveEvent(this)); + if (params.activatable || params.withMenu) { + this._signals.connect(this.actor, 'button-release-event', Lang.bind(this, this._onButtonReleaseEvent)); + this._signals.connect(this.actor, 'key-press-event', Lang.bind(this, this._onKeyPressEvent)); + } + } + } + + _onButtonReleaseEvent(actor, event) { + let button = event.get_button(); + if (this.activate && button === Clutter.BUTTON_PRIMARY) { + this.activate(); + return Clutter.EVENT_STOP; + } else if (this.populateMenu && button === Clutter.BUTTON_SECONDARY) { + this.applet.toggleContextMenu(this); + return Clutter.EVENT_STOP; + } + return Clutter.EVENT_PROPAGATE; + } + + _onKeyPressEvent(actor, event) { + let symbol = event.get_key_symbol(); + if (this.activate && + (symbol === Clutter.KEY_space || + symbol === Clutter.KEY_Return || + symbol === Clutter.KEY_KP_Enter)) { + this.activate(); + return Clutter.EVENT_STOP; + } + return Clutter.EVENT_PROPAGATE; + } + + /** + * Adds an StIcon as the next child, acessible as `this.icon`. + * + * Either an icon name or gicon is required. Only one icon is supported by the + * base SimpleMenuItem. + * + * @param {number} iconSize - The icon size in px. + * @param {string} iconName - (optional) The icon name string. + * @param {object} gicon - (optional) A gicon. + * @param {boolean} symbolic - (optional) Whether the icon should be symbolic. Default: false. + */ + addIcon(iconSize, iconName='', gicon=null, symbolic=false) { + if (this.icon) + return; + + let params = { icon_size: iconSize }; + + if (iconName) + params.icon_name = iconName; + else if (gicon) + params.gicon = gicon; + + params.icon_type = symbolic ? St.IconType.SYMBOLIC : St.IconType.FULLCOLOR; + + this.icon = new St.Icon(params); + this.actor.add_actor(this.icon); + } + + /** + * Removes the icon previously added with addIcon() + */ + removeIcon() { + if (!this.icon) + return; + this.icon.destroy(); + this.icon = null; + } + + /** + * Adds an StLabel as the next child, accessible as `this.label`. + * + * Only one label is supported by the base SimpleMenuItem prototype. + * + * @param {string} label - (optional) An unformatted string. If markup is required, use + * native methods directly: `this.label.clutter_text.set_markup()`. + * @param {string} styleClass - (optional) A style class for the label. + */ + addLabel(label='', styleClass=null) { + if (this.label) + return; + + this.label = new St.Label({ text: label, y_expand: true, y_align: Clutter.ActorAlign.CENTER }); + if (styleClass) + this.label.set_style_class_name(styleClass); + this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END; + this.actor.add_actor(this.label); + } + + /** + * Removes the label previously added with addLabel() + */ + removeLabel() { + if (!this.label) + return; + this.label.destroy(); + this.label = null; + } + + /** + * Adds a ClutterActor as the next child. + * + * @param {ClutterActor} child + */ + addActor(child) { + this.actor.add_actor(child); + } + + /** + * Removes a ClutterActor. + * + * @param {ClutterActor} child + */ + removeActor(child) { + this.actor.remove_actor(child); + } + + destroy(actorDestroySignal=false) { + this._signals.disconnectAllSignals(); + + if (this.label) + this.label.destroy(); + if (this.icon) + this.icon.destroy(); + if (!actorDestroySignal) + this.actor.destroy(); + + delete this.actor._delegate; + delete this.actor; + delete this.label; + delete this.icon; + } +} + +class ApplicationContextMenuItem extends PopupMenu.PopupBaseMenuItem { + constructor(appButton, label, action, iconName) { + super({focusOnHover: false}); + + this._appButton = appButton; + this._action = action; + this.label = new St.Label({ text: label }); + + if (iconName != null) { + this.icon = new St.Icon({ icon_name: iconName, icon_size: 12, icon_type: St.IconType.SYMBOLIC }); + if (this.icon) + this.addActor(this.icon); + } + + this.addActor(this.label); + } + + activate (event) { + switch (this._action) { + case "add_to_panel": + if (!Main.AppletManager.get_role_provider_exists(Main.AppletManager.Roles.PANEL_LAUNCHER)) { + let new_applet_id = global.settings.get_int("next-applet-id"); + global.settings.set_int("next-applet-id", (new_applet_id + 1)); + let enabled_applets = global.settings.get_strv("enabled-applets"); + enabled_applets.push("panel1:right:0:panel-launchers@cinnamon.org:" + new_applet_id); + global.settings.set_strv("enabled-applets", enabled_applets); + } + // wait until the panel launchers instance is actually loaded + // 10 tries, delay 100ms + let retries = 10; + Mainloop.timeout_add(100, () => { + if (retries--) { + let launcherApplet = Main.AppletManager.get_role_provider(Main.AppletManager.Roles.PANEL_LAUNCHER); + if (!launcherApplet) + return true; + launcherApplet.acceptNewLauncher(this._appButton.app.get_id()); + } + return false; + }); + break; + case "add_to_desktop": + let file = Gio.file_new_for_path(this._appButton.app.get_app_info().get_filename()); + let destFile = Gio.file_new_for_path(USER_DESKTOP_PATH+"/"+file.get_basename()); + try{ + file.copy(destFile, 0, null, function(){}); + FileUtils.changeModeGFile(destFile, 755); + }catch(e){ + global.log(e); + } + break; + case "add_to_favorites": + AppFavorites.getAppFavorites().addFavorite(this._appButton.app.get_id()); + break; + case "remove_from_favorites": + AppFavorites.getAppFavorites().removeFavorite(this._appButton.app.get_id()); + break; + case "uninstall": + Util.spawnCommandLine("/usr/bin/cinnamon-remove-application '" + this._appButton.app.get_app_info().get_filename() + "'"); + break; + case "run_with_nvidia_gpu": + Util.spawnCommandLine("optirun gtk-launch " + this._appButton.app.get_id()); + break; + case "offload_launch": + try { + this._appButton.app.launch_offloaded(0, [], -1); + } catch (e) { + logError(e, "Could not launch app with dedicated gpu: "); + } + break; + default: + return true; + } + this._appButton.applet.toggleContextMenu(this._appButton); + this._appButton.applet.menu.close(); + return false; + } + +} + +class GenericApplicationButton extends SimpleMenuItem { + constructor(applet, app, type, withMenu=false, styleClass="") { + let desc = app.get_description() || ""; + super(applet, { name: app.get_name(), + description: desc.split("\n")[0], + type: type, + withMenu: withMenu, + styleClass: styleClass, + app: app }); + } + + highlight() { + if (this.actor.has_style_pseudo_class('highlighted')) + return; + + this.actor.add_style_pseudo_class('highlighted'); + } + + unhighlight() { + if (!this.actor.has_style_pseudo_class('highlighted')) + return; + + let appKey = this.app.get_id() || `${this.name}:${this.description}`; + this.applet._knownApps.add(appKey); + this.actor.remove_style_pseudo_class('highlighted'); + } + + activate() { + this.unhighlight(); + this.app.open_new_window(-1); + this.applet.menu.close(); + } + + populateMenu(menu) { + let menuItem; + if (Main.gpu_offload_supported) { + menuItem = new ApplicationContextMenuItem(this, _("Run with NVIDIA GPU"), "offload_launch", "cpu"); + menu.addMenuItem(menuItem); + } else if (this.applet._isBumblebeeInstalled) { + menuItem = new ApplicationContextMenuItem(this, _("Run with NVIDIA GPU"), "run_with_nvidia_gpu", "cpu"); + menu.addMenuItem(menuItem); + } + + menuItem = new ApplicationContextMenuItem(this, _("Add to panel"), "add_to_panel", "list-add"); + menu.addMenuItem(menuItem); + + if (USER_DESKTOP_PATH){ + menuItem = new ApplicationContextMenuItem(this, _("Add to desktop"), "add_to_desktop", "computer"); + menu.addMenuItem(menuItem); + } + + if (AppFavorites.getAppFavorites().isFavorite(this.app.get_id())){ + menuItem = new ApplicationContextMenuItem(this, _("Remove from favorites"), "remove_from_favorites", "starred"); + menu.addMenuItem(menuItem); + } else { + menuItem = new ApplicationContextMenuItem(this, _("Add to favorites"), "add_to_favorites", "non-starred"); + menu.addMenuItem(menuItem); + } + + if (this.applet._canUninstallApps) { + menuItem = new ApplicationContextMenuItem(this, _("Uninstall"), "uninstall", "edit-delete"); + menu.addMenuItem(menuItem); + } + } +} + +class TransientButton extends SimpleMenuItem { + constructor(applet, pathOrCommand) { + super(applet, { description: pathOrCommand, + type: 'transient', + styleClass: 'menu-application-button' }); + if (pathOrCommand.startsWith('~')) { + pathOrCommand = pathOrCommand.slice(1); + pathOrCommand = GLib.get_home_dir() + pathOrCommand; + } + + this.isPath = pathOrCommand.substr(pathOrCommand.length - 1) == '/'; + if (this.isPath) { + this.path = pathOrCommand; + } else { + let n = pathOrCommand.lastIndexOf('/'); + if (n != 1) { + this.path = pathOrCommand.substr(0, n); + } + } + + this.pathOrCommand = pathOrCommand; + + this.file = Gio.file_new_for_path(this.pathOrCommand); + + if (applet.showApplicationIcons) { + try { + this.handler = this.file.query_default_handler(null); + let contentType = Gio.content_type_guess(this.pathOrCommand, null); + let themedIcon = Gio.content_type_get_icon(contentType[0]); + this.icon = new St.Icon({gicon: themedIcon, icon_size: applet.applicationIconSize, icon_type: St.IconType.FULLCOLOR }); + } catch (e) { + this.handler = null; + let iconName = this.isPath ? 'folder' : 'unknown'; + this.icon = new St.Icon({icon_name: iconName, icon_size: applet.applicationIconSize, icon_type: St.IconType.FULLCOLOR}); + // @todo Would be nice to indicate we don't have a handler for this file. + } + + this.addActor(this.icon); + } + + this.addLabel(this.description, 'menu-application-button-label'); + + this.isDraggableApp = false; + } + + activate() { + if (this.handler != null) { + this.handler.launch([this.file], null); + } else { + // Try anyway, even though we probably shouldn't. + try { + Util.spawn(['gio', 'open', this.file.get_uri()]); + } catch (e) { + global.logError("No handler available to open " + this.file.get_uri()); + } + } + + this.applet.menu.close(); + } +} + +class ApplicationButton extends GenericApplicationButton { + constructor(applet, app) { + super(applet, app, 'app', true, 'menu-application-button'); + this.category = []; + + this.icon = this.app.create_icon_texture(applet.applicationIconSize); + this.addActor(this.icon); + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this._draggable = DND.makeDraggable(this.actor); + this._signals.connect(this._draggable, 'drag-end', Lang.bind(this, this._onDragEnd)); + this.isDraggableApp = true; + + this.searchStrings = [ + Util.latinise(app.get_name().toLowerCase()), + app.get_keywords() ? Util.latinise(app.get_keywords().toLowerCase()) : "", + app.get_description() ? Util.latinise(app.get_description().toLowerCase()) : "", + app.get_id() ? Util.latinise(app.get_id().toLowerCase()) : "" + ]; + } + + get_app_id() { + return this.app.get_id(); + } + + getDragActor() { + return this.app.create_icon_texture(this.applet.favIconSize); + } + + // Returns the original actor that should align with the actor + // we show as the item is being dragged. + getDragActorSource() { + return this.actor; + } + + _onDragEnd() { + this.applet.favoritesBox._delegate._clearDragPlaceholder(); + } + destroy() { + delete this._draggable; + super.destroy(); + } +} + +class SearchProviderResultButton extends SimpleMenuItem { + constructor(applet, provider, result) { + super(applet, { name:result.label, + description: result.description, + type: 'search-provider', + styleClass: 'menu-application-button', + provider: provider, + result: result }); + + if (applet.showApplicationIcons) { + if (result.icon) { + this.icon = result.icon; + } else if (result.icon_app) { + this.icon = result.icon_app.create_icon_texture(applet.applicationIconSize); + } else if (result.icon_filename) { + this.icon = new St.Icon({gicon: new Gio.FileIcon({file: Gio.file_new_for_path(result.icon_filename)}), icon_size: applet.applicationIconSize}); + } + + if (this.icon) + this.addActor(this.icon); + } + + this.addLabel(result.label, 'menu-application-button-label'); + } + + activate() { + try { + this.provider.on_result_selected(this.result); + this.applet.menu.close(); + } catch(e) { + global.logError(e); + } + } + + destroy() { + delete this.provider; + delete this.result; + super.destroy(); + } +} + +class PlaceButton extends SimpleMenuItem { + constructor(applet, place) { + let selectedAppId = place.idDecoded.substr(place.idDecoded.indexOf(':') + 1); + let fileIndex = selectedAppId.indexOf('file:///'); + if (fileIndex !== -1) + selectedAppId = selectedAppId.substr(fileIndex + 7); + + if (selectedAppId === "home" || selectedAppId === "desktop" || selectedAppId === "connect") { + selectedAppId = place.name + } + + super(applet, { name: place.name, + description: selectedAppId, + type: 'place', + styleClass: 'menu-application-button', + place: place }); + + this.icon = place.iconFactory(applet.applicationIconSize); + if (this.icon) + this.addActor(this.icon); + else + this.addIcon(applet.applicationIconSize, 'folder'); + + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this.searchStrings = [ + Util.latinise(place.name.toLowerCase()) + ]; + } + + activate() { + this.place.launch(); + this.applet.menu.close(); + } +} + +class UserfileContextMenuItem extends PopupMenu.PopupBaseMenuItem { + constructor(button, label, is_default, cbParams, callback) { + super({focusOnHover: false}); + + this._button = button; + this._cbParams = cbParams; + this._callback = callback; + this.label = new St.Label({ text: label }); + this.addActor(this.label); + + if (is_default) + this.label.style = "font-weight: bold;"; + } + + activate (event) { + this._callback(...this._cbParams); + return false; + } +} + +class RecentButton extends SimpleMenuItem { + constructor(applet, recent) { + let fileIndex = recent.uriDecoded.indexOf("file:///"); + let selectedAppUri = fileIndex === -1 ? "" : recent.uriDecoded.substr(fileIndex + 7); + + super(applet, { name: recent.name, + description: selectedAppUri, + type: 'recent', + styleClass: 'menu-application-button', + withMenu: true, + mimeType: recent.mimeType, + uri: recent.uri, + uriDecoded: recent.uriDecoded }); + + this.icon = recent.createIcon(applet.applicationIconSize); + this.addActor(this.icon); + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this.searchStrings = [ + Util.latinise(recent.name.toLowerCase()) + ]; + } + + activate() { + try { + Gio.app_info_launch_default_for_uri(this.uri, global.create_app_launch_context()); + this.applet.menu.close(); + } catch (e) { + let source = new MessageTray.SystemNotificationSource(); + Main.messageTray.add(source); + let notification = new MessageTray.Notification(source, + _("This file is no longer available"), + e.message); + notification.setTransient(true); + notification.setUrgency(MessageTray.Urgency.NORMAL); + source.notify(notification); + } + } + + hasLocalPath(file) { + return file.is_native() || file.get_path() != null; + } + + populateMenu(menu) { + let menuItem; + menuItem = new PopupMenu.PopupMenuItem(_("Open with"), { reactive: false }); + menuItem.actor.style = "font-weight: bold"; + menu.addMenuItem(menuItem); + + let file = Gio.File.new_for_uri(this.uri); + + let default_info = Gio.AppInfo.get_default_for_type(this.mimeType, !this.hasLocalPath(file)); + + let infoLaunchFunc = (info, file) => { + info.launch([file], null); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }; + + if (default_info) { + menuItem = new UserfileContextMenuItem(this, + default_info.get_display_name(), + false, + [default_info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + let infos = Gio.AppInfo.get_all_for_type(this.mimeType); + + for (let i = 0; i < infos.length; i++) { + let info = infos[i]; + + file = Gio.File.new_for_uri(this.uri); + + if (!this.hasLocalPath(file) && !info.supports_uris()) + continue; + + if (info.equal(default_info)) + continue; + + menuItem = new UserfileContextMenuItem(this, + info.get_display_name(), + false, + [info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + if (GLib.find_program_in_path ("nemo-open-with") != null) { + menuItem = new UserfileContextMenuItem(this, + _("Other application..."), + false, + [], + () => { + Util.spawnCommandLine("nemo-open-with " + this.uri); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }); + menu.addMenuItem(menuItem); + } + } +} + +class FavoriteButton extends SimpleMenuItem { + constructor(applet, favoriteInfo) { + super(applet, { name: favoriteInfo.display_name, + description: favoriteInfo.uri, + type: 'favorite', + styleClass: 'menu-application-button', + withMenu: true, + mimeType: favoriteInfo.cached_mimetype, + uri: favoriteInfo.uri }); + + this.favoriteInfo = favoriteInfo; + + let gicon = Gio.content_type_get_icon(favoriteInfo.cached_mimetype); + this.icon = new St.Icon({ gicon: gicon, icon_size: applet.applicationIconSize }) + + this.addActor(this.icon); + + if (!applet.showApplicationIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-application-button-label'); + + this.searchStrings = [ + Util.latinise(favoriteInfo.display_name.toLowerCase()) + ]; + } + + activate() { + try { + XApp.Favorites.get_default().launch(this.uri, 0); + this.applet.menu.close(); + } catch (e) { + let source = new MessageTray.SystemNotificationSource(); + Main.messageTray.add(source); + let notification = new MessageTray.Notification(source, + _("This file is no longer available"), + e.message); + notification.setTransient(true); + notification.setUrgency(MessageTray.Urgency.NORMAL); + source.notify(notification); + } + } + + hasLocalPath(file) { + return file.is_native() || file.get_path() != null; + } + + populateMenu(menu) { + let menuItem; + menuItem = new PopupMenu.PopupMenuItem(_("Open with"), { reactive: false }); + menuItem.actor.style = "font-weight: bold"; + menu.addMenuItem(menuItem); + + let file = Gio.File.new_for_uri(this.uri); + + let default_info = Gio.AppInfo.get_default_for_type(this.mimeType, !this.hasLocalPath(file)); + + let infoLaunchFunc = (info, file) => { + info.launch([file], null); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }; + + if (default_info) { + menuItem = new UserfileContextMenuItem(this, + default_info.get_display_name(), + false, + [default_info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + let infos = Gio.AppInfo.get_all_for_type(this.mimeType); + + for (let i = 0; i < infos.length; i++) { + let info = infos[i]; + + file = Gio.File.new_for_uri(this.uri); + + if (!this.hasLocalPath(file) && !info.supports_uris()) + continue; + + if (info.equal(default_info)) + continue; + + menuItem = new UserfileContextMenuItem(this, + info.get_display_name(), + false, + [info, file], + infoLaunchFunc); + menu.addMenuItem(menuItem); + } + + if (GLib.find_program_in_path ("nemo-open-with") != null) { + menuItem = new UserfileContextMenuItem(this, + _("Other application..."), + false, + [], + () => { + Util.spawnCommandLine("nemo-open-with " + this.uri); + this.applet.toggleContextMenu(this); + this.applet.menu.close(); + }); + menu.addMenuItem(menuItem); + } + } +} + +class CategoryButton extends SimpleMenuItem { + constructor(applet, categoryId, label, icon) { + super(applet, { name: label || _("All Applications"), + type: 'category', + styleClass: 'menu-category-button', + categoryId: categoryId }); + this.actor.accessible_role = Atk.Role.LIST_ITEM; + + if (typeof icon === 'string') + this.addIcon(applet.categoryIconSize, icon); + else if (icon) + this.addIcon(applet.categoryIconSize, null, icon); + + if (this.icon && !applet.showCategoryIcons) + this.icon.visible = false; + + this.addLabel(this.name, 'menu-category-button-label'); + } +} + +class FavoritesButton extends GenericApplicationButton { + constructor(applet, app) { + super(applet, app, 'fav', false, 'menu-favorites-button'); + this.icon = app.create_icon_texture(applet.favIconSize); + this.addActor(this.icon); + + this._draggable = DND.makeDraggable(this.actor); + this._signals.connect(this._draggable, 'drag-end', Lang.bind(this, this._onDragEnd)); + this.isDraggableApp = true; + } + + _onDragEnd() { + this.actor.get_parent()._delegate._clearDragPlaceholder(); + } + + get_app_id() { + return this.app.get_id(); + } + + getDragActor() { + return new Clutter.Clone({ source: this.actor }); + } + + // Returns the original actor that should align with the actor + // we show as the item is being dragged. + getDragActorSource() { + return this.actor; + } + + destroy() { + delete this._draggable; + super.destroy(); + } +} + +class SystemButton extends SimpleMenuItem { + constructor(applet, iconName, name, desc) { + super(applet, { name: name, + description: desc, + type: 'system', + styleClass: 'menu-favorites-button' }); + this.addIcon(applet.favIconSize, iconName); + } +} + +class CategoriesApplicationsBox { + constructor() { + this.actor = new St.BoxLayout(); + this.actor._delegate = this; + } + + acceptDrop (source, actor, x, y, time) { + if (source instanceof FavoritesButton){ + source.actor.destroy(); + actor.destroy(); + AppFavorites.getAppFavorites().removeFavorite(source.app.get_id()); + return true; + } + return false; + } + + handleDragOver (source, actor, x, y, time) { + if (source instanceof FavoritesButton) + return DND.DragMotionResult.POINTING_DROP; + + return DND.DragMotionResult.CONTINUE; + } +} + +class FavoritesBox { + constructor() { + this.actor = new St.BoxLayout({ vertical: true }); + this.actor._delegate = this; + + this._dragPlaceholder = null; + this._dragPlaceholderPos = -1; + this._animatingPlaceholdersCount = 0; + } + + _clearDragPlaceholder() { + if (this._dragPlaceholder) { + this._dragPlaceholder.animateOutAndDestroy(); + this._dragPlaceholder = null; + this._dragPlaceholderPos = -1; + } + } + + handleDragOver (source, actor, x, y, time) { + let app = source.app; + + let favorites = AppFavorites.getAppFavorites().getFavorites(); + let numFavorites = favorites.length; + + let favPos = favorites.indexOf(app); + + let children = this.actor.get_children(); + let numChildren = children.length; + let boxHeight = this.actor.height; + + // Keep the placeholder out of the index calculation; assuming that + // the remove target has the same size as "normal" items, we don't + // need to do the same adjustment there. + if (this._dragPlaceholder) { + boxHeight -= this._dragPlaceholder.actor.height; + numChildren--; + } + + let pos = Math.round(y * numChildren / boxHeight); + + if (pos != this._dragPlaceholderPos && pos <= numFavorites) { + if (this._animatingPlaceholdersCount > 0) { + let appChildren = children.filter(function(actor) { + return (actor._delegate instanceof FavoritesButton); + }); + this._dragPlaceholderPos = children.indexOf(appChildren[pos]); + } else { + this._dragPlaceholderPos = pos; + } + + // Don't allow positioning before or after self + if (favPos != -1 && (pos == favPos || pos == favPos + 1)) { + if (this._dragPlaceholder) { + this._dragPlaceholder.animateOutAndDestroy(); + this._animatingPlaceholdersCount++; + this._dragPlaceholder.actor.connect('destroy', + Lang.bind(this, function() { + this._animatingPlaceholdersCount--; + })); + } + this._dragPlaceholder = null; + + return DND.DragMotionResult.CONTINUE; + } + + // If the placeholder already exists, we just move + // it, but if we are adding it, expand its size in + // an animation + let fadeIn; + if (this._dragPlaceholder) { + this._dragPlaceholder.actor.destroy(); + fadeIn = false; + } else { + fadeIn = true; + } + + this._dragPlaceholder = new DND.GenericDragPlaceholderItem(); + this._dragPlaceholder.child.set_width (source.actor.height); + this._dragPlaceholder.child.set_height (source.actor.height); + this.actor.insert_child_at_index(this._dragPlaceholder.actor, + this._dragPlaceholderPos); + if (fadeIn) + this._dragPlaceholder.animateIn(); + } + + let id = app.get_id(); + let favoritesMap = AppFavorites.getAppFavorites().getFavoriteMap(); + let srcIsFavorite = (id in favoritesMap); + + if (!srcIsFavorite) + return DND.DragMotionResult.COPY_DROP; + + return DND.DragMotionResult.MOVE_DROP; + } + + // Draggable target interface + acceptDrop (source, actor, x, y, time) { + let app = source.app; + + let id = app.get_id(); + + let favorites = AppFavorites.getAppFavorites().getFavoriteMap(); + + let srcIsFavorite = (id in favorites); + + let favPos = 0; + let children = this.actor.get_children(); + for (let i = 0; i < this._dragPlaceholderPos; i++) { + if (this._dragPlaceholder && + children[i] == this._dragPlaceholder.actor) + continue; + + if (!(children[i]._delegate instanceof FavoritesButton)) continue; + + let childId = children[i]._delegate.app.get_id(); + if (childId == id) + continue; + if (childId in favorites) + favPos++; + } + + Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, + function () { + let appFavorites = AppFavorites.getAppFavorites(); + if (srcIsFavorite) + appFavorites.moveFavoriteToPos(id, favPos); + else + appFavorites.addFavoriteAtPos(id, favPos); + return false; + })); + + return true; + } +} + +/* This is so we can override the default key-press-event handler in PopupMenu.PopupMenu + * and prevent animation when the menu via Escape. */ +class Menu extends Applet.AppletPopupMenu { + constructor(launcher, orientation) { + super(launcher, orientation); + } + + _onKeyPressEvent(actor, event) { + if (event.get_key_symbol() === Clutter.KEY_Escape) { + this.close(false); + return true; + } + + return false; + } +} + +class CinnamonMenuApplet extends Applet.TextIconApplet { + constructor(orientation, panel_height, instance_id) { + super(orientation, panel_height, instance_id); + + this.setAllowedLayout(Applet.AllowedLayout.BOTH); + + this.set_applet_tooltip(_("Menu")); + this.menuManager = new PopupMenu.PopupMenuManager(this); + this.menu = new Menu(this, orientation); + this.menuManager.addMenu(this.menu); + + this.settings = new Settings.AppletSettings(this, "menu@cinnamon.org", instance_id); + + this.settings.bind("show-favorites", "showFavorites", () => this.queueRefresh(RefreshFlags.FAV_DOC)); + this.settings.bind("show-places", "showPlaces", () => this.queueRefresh(RefreshFlags.PLACE)); + this.settings.bind("show-recents", "showRecents", () => this.queueRefresh(RefreshFlags.RECENT)); + + this._appletEnterEventId = 0; + this._appletLeaveEventId = 0; + this._appletHoverDelayId = 0; + + this.settings.bind("hover-delay", "hover_delay_ms", this._updateActivateOnHover); + this.settings.bind("activate-on-hover", "activateOnHover", this._updateActivateOnHover); + this._updateActivateOnHover(); + + this.menu.setCustomStyleClass('menu-background'); + this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged)); + + this.settings.bind("menu-custom", "menuCustom", this._updateIconAndLabel); + this.settings.bind("menu-icon", "menuIcon", this._updateIconAndLabel); + this.settings.bind("menu-icon-size", "menuIconSize", this._updateIconAndLabel); + this.settings.bind("menu-label", "menuLabel", this._updateIconAndLabel); + this.settings.bind("overlay-key", "overlayKey", this._updateKeybinding); + this.settings.bind("show-category-icons", "showCategoryIcons", () => this._updateShowIcons(this.categoriesBox, this.showCategoryIcons)); + this.settings.bind("category-icon-size", "categoryIconSize", () => this.queueRefresh(RefreshFlags.PLACE | RefreshFlags.RECENT | RefreshFlags.APP)); + this.settings.bind("show-application-icons", "showApplicationIcons", () => this._updateShowIcons(this.applicationsBox, this.showApplicationIcons)); + this.settings.bind("application-icon-size", "applicationIconSize", () => this.queueRefresh(RefreshFlags.PLACE | RefreshFlags.RECENT | RefreshFlags.APP)); + this.settings.bind("favbox-show", "favBoxShow", this._favboxtoggle); + this.settings.bind("fav-icon-size", "favIconSize", () => this.queueRefresh(RefreshFlags.FAV_APP | RefreshFlags.SYSTEM)); + this.settings.bind("enable-animation", "enableAnimation", null); + this.settings.bind("favbox-min-height", "favBoxMinHeight", this._recalc_height); + + this._updateKeybinding(); + + Main.themeManager.connect("theme-set", Lang.bind(this, this._updateIconAndLabel)); + this._updateIconAndLabel(); + + this._searchInactiveIcon = new St.Icon({ style_class: 'menu-search-entry-icon', + icon_name: 'edit-find', + icon_type: St.IconType.SYMBOLIC }); + this._searchActiveIcon = new St.Icon({ style_class: 'menu-search-entry-icon', + icon_name: 'edit-clear', + icon_type: St.IconType.SYMBOLIC }); + this._searchIconClickedId = 0; + this._applicationsButtons = []; + this._favoriteAppButtons = []; + this._placesButtons = []; + this._transientButtons = []; + this.recentButton = null; + this._recentButtons = []; + this.favoriteDocsButton = null; + this._favoriteDocButtons = []; + this._categoryButtons = []; + this._searchProviderButtons = []; + this._selectedItemIndex = null; + this._previousSelectedActor = null; + this._previousVisibleIndex = null; + this._previousTreeSelectedActor = null; + this._activeContainer = null; + this._activeActor = null; + this._knownApps = new Set(); // Used to keep track of apps that are already installed, so we can highlight newly installed ones + this._appsWereRefreshed = false; + this._canUninstallApps = GLib.file_test("/usr/bin/cinnamon-remove-application", GLib.FileTest.EXISTS); + this._isBumblebeeInstalled = GLib.file_test("/usr/bin/optirun", GLib.FileTest.EXISTS); + this.RecentManager = DocInfo.getDocManager(); + this.privacy_settings = new Gio.Settings( {schema_id: PRIVACY_SCHEMA} ); + this.noRecentDocuments = true; + this._activeContextMenuParent = null; + this._activeContextMenuItem = null; + this._display(); + appsys.connect('installed-changed', () => this.queueRefresh(RefreshFlags.APP | RefreshFlags.FAV_APP)); + AppFavorites.getAppFavorites().connect('changed', () => this.queueRefresh(RefreshFlags.FAV_APP)); + Main.placesManager.connect('places-updated', () => this.queueRefresh(RefreshFlags.PLACE)); + this.RecentManager.connect('changed', () => this.queueRefresh(RefreshFlags.RECENT)); + this.privacy_settings.connect("changed::" + REMEMBER_RECENT_KEY, () => this.queueRefresh(RefreshFlags.RECENT)); + XApp.Favorites.get_default().connect("changed", () => this.queueRefresh(RefreshFlags.FAV_DOC)); + this._fileFolderAccessActive = false; + this._pathCompleter = new Gio.FilenameCompleter(); + this._pathCompleter.set_dirs_only(false); + this.lastAcResults = []; + this.settings.bind("search-filesystem", "searchFilesystem"); + this.contextMenu = null; + this.lastSelectedCategory = null; + this.settings.bind("force-show-panel", "forceShowPanel"); + + this.orderDirty = false; + + // We shouldn't need to call refreshAll() here... since we get a "icon-theme-changed" signal when CSD starts. + // The reason we do is in case the Cinnamon icon theme is the same as the one specificed in GTK itself (in .config) + // In that particular case we get no signal at all. + this.refreshId = 0; + this.refreshMask = REFRESH_ALL_MASK; + this._doRefresh(); + + this.set_show_label_in_vertical_panels(false); + } + + _updateShowIcons(container, show) { + Util.each(container.get_children(), c => { + let b = c._delegate; + if (!(b instanceof SimpleMenuItem)) + return; + if (b.icon) + b.icon.visible = show; + }) + } + + _updateKeybinding() { + Main.keybindingManager.addHotKey("overlay-key-" + this.instance_id, this.overlayKey, Lang.bind(this, function() { + if (!Main.overview.visible && !Main.expo.visible) + this.menu.toggle_with_options(this.enableAnimation); + })); + } + + queueRefresh(refreshFlags) { + if (!refreshFlags) + return; + this.refreshMask |= refreshFlags; + if (this.refreshId) + Mainloop.source_remove(this.refreshId); + this.refreshId = Mainloop.timeout_add(500, () => this._doRefresh(), Mainloop.PRIORITY_LOW); + } + + _doRefresh() { + this.refreshId = 0; + if (this.refreshMask === 0) + return; + + let m = this.refreshMask; + if ((m & RefreshFlags.APP) === RefreshFlags.APP) + this._refreshApps(); + if ((m & RefreshFlags.FAV_APP) === RefreshFlags.FAV_APP) + this._refreshFavApps(); + if ((m & RefreshFlags.SYSTEM) === RefreshFlags.SYSTEM) + this._refreshSystemButtons(); + if ((m & RefreshFlags.FAV_DOC) === RefreshFlags.FAV_DOC) + this._refreshFavDocs(); + if ((m & RefreshFlags.PLACE) === RefreshFlags.PLACE) + this._refreshPlaces(); + if ((m & RefreshFlags.RECENT) === RefreshFlags.RECENT) + this._refreshRecent(); + + this.refreshMask = 0; + + // Repack the three special categories at the bottom of the category list. + if (this.favoriteDocsButton) { + this.categoriesBox.set_child_at_index(this.favoriteDocsButton.actor, -1); + } + + if (this.placesButton) { + this.categoriesBox.set_child_at_index(this.placesButton.actor, -1); + } + + if (this.recentButton) { + this.categoriesBox.set_child_at_index(this.recentButton.actor, -1); + } + + this._resizeApplicationsBox(); + } + + openMenu() { + if (!this._applet_context_menu.isOpen) { + this.menu.open(this.enableAnimation); + } + } + + _clearDelayCallbacks() { + if (this._appletHoverDelayId > 0) { + Mainloop.source_remove(this._appletHoverDelayId); + this._appletHoverDelayId = 0; + } + if (this._appletLeaveEventId > 0) { + this.actor.disconnect(this._appletLeaveEventId); + this._appletLeaveEventId = 0; + } + + return false; + } + + _updateActivateOnHover() { + if (this._appletEnterEventId > 0) { + this.actor.disconnect(this._appletEnterEventId); + this._appletEnterEventId = 0; + } + + this._clearDelayCallbacks(); + + if (!this.activateOnHover) + return; + + this._appletEnterEventId = this.actor.connect('enter-event', () => { + if (this.hover_delay_ms > 0) { + this._appletLeaveEventId = this.actor.connect('leave-event', () => { this._clearDelayCallbacks }); + this._appletHoverDelayId = Mainloop.timeout_add(this.hover_delay_ms, + () => { + this.openMenu(); + this._clearDelayCallbacks(); + }); + } else { + this.openMenu(); + } + }); + } + + _recalc_height() { + let scrollBoxHeight = (this.leftBox.get_allocation_box().y2-this.leftBox.get_allocation_box().y1) - + (this.searchBox.get_allocation_box().y2-this.searchBox.get_allocation_box().y1); + + this.applicationsScrollBox.style = "height: "+scrollBoxHeight / global.ui_scale +"px;"; + let monitor = Main.layoutManager.monitors[this.panel.monitorIndex]; + let minSize = Math.max(this.favBoxMinHeight * global.ui_scale, this.categoriesBox.height - this.systemButtonsBox.height); + let maxSize = monitor.height - (this.systemButtonsBox.height * 2); + let size = Math.min(minSize, maxSize); + this.favoritesScrollBox.set_height(size); + } + + on_orientation_changed (orientation) { + this._updateIconAndLabel(); + } + + on_applet_removed_from_panel () { + Main.keybindingManager.removeHotKey("overlay-key-" + this.instance_id); + } + + // settings button callback + _launch_editor() { + Util.spawnCommandLine("cinnamon-menu-editor"); + } + + on_applet_clicked(event) { + this.menu.toggle_with_options(this.enableAnimation); + } + + _onOpenStateChanged(menu, open) { + if (open) { + this.actor.add_style_pseudo_class('active'); + global.stage.set_key_focus(this.searchEntry); + this._selectedItemIndex = null; + this._activeContainer = null; + this._activeActor = null; + + this.lastSelectedCategory = null; + + /* This is a workaround to prevent selectedAppBox from changing height when no height value is set + * in the .css style and thus causing the menu above to jump up and down. This has no effect when a + * height value is set in the .css style as get_preferred_height() returns this value in this case*/ + this.selectedAppBox.set_height(-1); //unset previously set height + this.selectedAppBox.set_height(this.selectedAppBox.get_preferred_height(-1)[1]); + + let n = Math.min(this._applicationsButtons.length, + INITIAL_BUTTON_LOAD); + for (let i = 0; i < n; i++) { + this._applicationsButtons[i].actor.show(); + } + this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected"; + + Mainloop.idle_add(Lang.bind(this, this._initial_cat_selection, n)); + + if (this.forceShowPanel) { + this.panel.peekPanel(); + } + } else { + this.actor.remove_style_pseudo_class('active'); + if (this.searchActive) { + this.resetSearch(); + } + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + this._previousTreeSelectedActor = null; + this._previousSelectedActor = null; + this.closeContextMenu(false); + + this._clearAllSelections(true); + this._scrollToButton(null, this.favoritesScrollBox); + this.destroyVectorBox(); + } + } + + _initial_cat_selection (start_index) { + if(this.lastSelectedCategory !== null) //if a category is already selected + return; + let n = this._applicationsButtons.length; + for (let i = start_index; i < n; i++) { + this._applicationsButtons[i].actor.show(); + } + } + + destroy() { + this.actor._delegate = null; + this.menu.destroy(); + this.actor.destroy(); + this.emit('destroy'); + } + + _favboxtoggle() { + if (!this.favBoxShow) { + this.leftPane.hide(); + } else { + this.leftPane.show(); + } + } + + // Override js/applet.js so _updateIconAndLabel doesn't have to fight with size changes + // from the panel configuration. This gets called any time set_applet_icon() variants are + // called. + _setStyle() { + let icon_type = this._applet_icon.get_icon_type(); + let size; + + if (this.menuCustom) { + size = Math.min(this.menuIconSize, this.panel.height); + } else { + size = this.getPanelIconSize(icon_type); + } + + if (icon_type === St.IconType.FULLCOLOR) { + this._applet_icon.set_style_class_name('applet-icon'); + } else { + this._applet_icon.set_style_class_name('system-status-icon'); + } + + this._applet_icon.set_icon_size(size); + } + + on_panel_icon_size_changed() { + this._updateIconAndLabel(); + } + + _updateIconAndLabel(){ + try { + if (this.menuCustom) { + if (this.menuIcon == "") { + this.set_applet_icon_name(""); + } else if (GLib.path_is_absolute(this.menuIcon) && GLib.file_test(this.menuIcon, GLib.FileTest.EXISTS)) { + if (this.menuIcon.search("-symbolic") != -1) + this.set_applet_icon_symbolic_path(this.menuIcon); + else + this.set_applet_icon_path(this.menuIcon); + } else if (Gtk.IconTheme.get_default().has_icon(this.menuIcon)) { + if (this.menuIcon.search("-symbolic") != -1) + this.set_applet_icon_symbolic_name(this.menuIcon); + else + this.set_applet_icon_name(this.menuIcon); + } + } else { + let icon_name = global.settings.get_string('app-menu-icon-name'); + if (icon_name.search("-symbolic") != -1) { + this.set_applet_icon_symbolic_name(icon_name); + } + else { + this.set_applet_icon_name(icon_name); + } + } + } catch(e) { + global.logWarning("Could not load icon file \""+this.menuIcon+"\" for menu button"); + } + + // Hide the icon box if the icon name/path is empty + if ((this.menuCustom && this.menuIcon == "") || (!this.menuCustom && global.settings.get_string('app-menu-icon-name') == "")){ + this._applet_icon_box.hide(); + } else { + this._applet_icon_box.show(); + } + + // Hide the menu label in vertical panels + if (this._orientation == St.Side.LEFT || this._orientation == St.Side.RIGHT) + { + this.set_applet_label(""); + } + else { + if (this.menuCustom) { + if (this.menuLabel != "") + this.set_applet_label(_(this.menuLabel)); + else + this.set_applet_label(""); + } + else { + this.set_applet_label(global.settings.get_string('app-menu-label')); + } + } + } + + _contextMenuOpenStateChanged(menu) { + if (menu.isOpen) { + this._activeContextMenuParent = menu.sourceActor._delegate; + this._scrollToButton(menu); + } else { + this._activeContextMenuItem = null; + this._activeContextMenuParent = null; + menu.sourceActor = null; + } + } + + toggleContextMenu(button) { + if (!button.withMenu) + return; + + if (!this.contextMenu) { + let menu = new PopupMenu.PopupSubMenu(null); // hack: creating without actor + menu.actor.set_style_class_name('menu-context-menu'); + menu.connect('open-state-changed', Lang.bind(this, this._contextMenuOpenStateChanged)); + this.contextMenu = menu; + this.applicationsBox.add_actor(menu.actor); + } else if (this.contextMenu.isOpen && + this.contextMenu.sourceActor != button.actor) { + this.contextMenu.close(); + } + + if (!this.contextMenu.isOpen) { + this.contextMenu.box.destroy_all_children(); + this.applicationsBox.set_child_above_sibling(this.contextMenu.actor, button.actor); + this.contextMenu.sourceActor = button.actor; + button.populateMenu(this.contextMenu); + } + + this.contextMenu.toggle(); + } + + _navigateContextMenu(button, symbol, ctrlKey) { + if (symbol === Clutter.KEY_Menu || symbol === Clutter.KEY_Escape || + (ctrlKey && (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter))) { + this.toggleContextMenu(button); + return; + } + + let minIndex = 0; + let goUp = symbol === Clutter.KEY_Up; + let nextActive = null; + let menuItems = this.contextMenu._getMenuItems(); // The context menu items + + // The first context menu item of a RecentButton is used just as a label. + // So remove it from the iteration. + if (button && button instanceof RecentButton) { + minIndex = 1; + } + + let menuItemsLength = menuItems.length; + + switch (symbol) { + case Clutter.KEY_Page_Up: + this._activeContextMenuItem = menuItems[minIndex]; + this._activeContextMenuItem.setActive(true); + return; + case Clutter.KEY_Page_Down: + this._activeContextMenuItem = menuItems[menuItemsLength - 1]; + this._activeContextMenuItem.setActive(true); + return; + } + + if (!this._activeContextMenuItem) { + if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter) { + button.activate(); + } else { + this._activeContextMenuItem = menuItems[goUp ? menuItemsLength - 1 : minIndex]; + this._activeContextMenuItem.setActive(true); + } + return; + } else if (this._activeContextMenuItem && + (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter)) { + this._activeContextMenuItem.activate(); + this._activeContextMenuItem = null; + return; + } + + for (let i = minIndex; i < menuItemsLength; i++) { + if (menuItems[i] === this._activeContextMenuItem) { + let nextActiveIndex = (goUp ? i - 1 : i + 1); + + if (nextActiveIndex < minIndex) { + nextActiveIndex = menuItemsLength - 1; + } else if (nextActiveIndex > menuItemsLength - 1) { + nextActiveIndex = minIndex; + } + + nextActive = menuItems[nextActiveIndex]; + nextActive.setActive(true); + this._activeContextMenuItem = nextActive; + + break; + } + } + } + + _onMenuKeyPress(actor, event) { + let symbol = event.get_key_symbol(); + let item_actor; + let index = 0; + this.appBoxIter.reloadVisible(); + this.catBoxIter.reloadVisible(); + this.favBoxIter.reloadVisible(); + this.sysBoxIter.reloadVisible(); + + let keyCode = event.get_key_code(); + let modifierState = Cinnamon.get_event_state(event); + + /* check for a keybinding and quit early, otherwise we get a double hit + of the keybinding callback */ + let action = global.display.get_keybinding_action(keyCode, modifierState); + + if (action == Meta.KeyBindingAction.CUSTOM) { + return true; + } + + index = this._selectedItemIndex; + + let ctrlKey = modifierState & Clutter.ModifierType.CONTROL_MASK; + + // If a context menu is open, hijack keyboard navigation and concentrate on the context menu. + if (this._activeContextMenuParent && + this._activeContainer === this.applicationsBox) { + let continueNavigation = false; + switch (symbol) { + case Clutter.KEY_Up: + case Clutter.KEY_Down: + case Clutter.KEY_Return: + case Clutter.KEY_KP_Enter: + case Clutter.KEY_Menu: + case Clutter.KEY_Page_Up: + case Clutter.KEY_Page_Down: + case Clutter.KEY_Escape: + this._navigateContextMenu(this._activeContextMenuParent, symbol, ctrlKey); + break; + case Clutter.KEY_Right: + case Clutter.KEY_Left: + case Clutter.KEY_Tab: + case Clutter.KEY_ISO_Left_Tab: + continueNavigation = true; + break; + } + if (!continueNavigation) + return true; + } + + let navigationKey = true; + let whichWay = "none"; + + switch (symbol) { + case Clutter.KEY_Up: + whichWay = "up"; + if (this._activeContainer === this.favoritesBox && ctrlKey && + (this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) + navigationKey = false; + break; + case Clutter.KEY_Down: + whichWay = "down"; + if (this._activeContainer === this.favoritesBox && ctrlKey && + (this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) + navigationKey = false; + break; + case Clutter.KEY_Page_Up: + whichWay = "top"; break; + case Clutter.KEY_Page_Down: + whichWay = "bottom"; break; + case Clutter.KEY_Right: + if (!this.searchActive) + whichWay = "right"; + if (this._activeContainer === this.applicationsBox) + whichWay = "none"; + else if (this._activeContainer === this.categoriesBox && this.noRecentDocuments && + (this.categoriesBox.get_child_at_index(index))._delegate.categoryId === "recent") + whichWay = "none"; + break; + case Clutter.KEY_Left: + if (!this.searchActive) + whichWay = "left"; + if (this._activeContainer === this.favoritesBox || this._activeContainer === this.systemButtonsBox) + whichWay = "none"; + else if (!this.favBoxShow && + (this._activeContainer === this.categoriesBox || this._activeContainer === null)) + whichWay = "none"; + break; + case Clutter.KEY_Tab: + if (!this.searchActive) + whichWay = "right"; + else + navigationKey = false; + break; + case Clutter.KEY_ISO_Left_Tab: + if (!this.searchActive) + whichWay = "left"; + else + navigationKey = false; + break; + default: + navigationKey = false; + } + + if (navigationKey) { + switch (this._activeContainer) { + case null: + switch (whichWay) { + case "up": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getLastVisible(); + this._scrollToButton(); + break; + case "down": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getFirstVisible(); + item_actor = this.catBoxIter.getNextVisible(item_actor); + this._scrollToButton(); + break; + case "right": + this._activeContainer = this.applicationsBox; + item_actor = this.appBoxIter.getFirstVisible(); + this._scrollToButton(); + break; + case "left": + if (this.favBoxShow) { + this._activeContainer = this.favoritesBox; + item_actor = this.favBoxIter.getFirstVisible(); + } else { + this._activeContainer = this.applicationsBox; + item_actor = this.appBoxIter.getFirstVisible(); + this._scrollToButton(); + } + break; + case "top": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getFirstVisible(); + this._scrollToButton(); + break; + case "bottom": + this._activeContainer = this.categoriesBox; + item_actor = this.catBoxIter.getLastVisible(); + this._scrollToButton(); + break; + } + break; + case this.categoriesBox: + switch (whichWay) { + case "up": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getPrevVisible(this._activeActor); + this._scrollToButton(); + break; + case "down": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getNextVisible(this._activeActor); + this._scrollToButton(); + break; + case "right": + if ((this.categoriesBox.get_child_at_index(index))._delegate.categoryId === "recent" && + this.noRecentDocuments) { + if(this.favBoxShow) { + this._previousSelectedActor = this.categoriesBox.get_child_at_index(index); + item_actor = this.favBoxIter.getFirstVisible(); + } else { + item_actor = this.categoriesBox.get_child_at_index(index); + } + } + else { + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + } + break; + case "left": + if(this.favBoxShow) { + this._previousSelectedActor = this.categoriesBox.get_child_at_index(index); + item_actor = this.favBoxIter.getFirstVisible(); + this._scrollToButton(null, this.favoritesScrollBox); + } else { + if ((this.categoriesBox.get_child_at_index(index))._delegate.categoryId === "recent" && + this.noRecentDocuments) { + item_actor = this.categoriesBox.get_child_at_index(index); + } else { + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + } + } + break; + case "top": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getFirstVisible(); + this._scrollToButton(); + break; + case "bottom": + this._previousTreeSelectedActor = this.categoriesBox.get_child_at_index(index); + this._previousTreeSelectedActor._delegate.isHovered = false; + item_actor = this.catBoxIter.getLastVisible(); + this._scrollToButton(); + break; + } + break; + case this.applicationsBox: + switch (whichWay) { + case "up": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = this.appBoxIter.getPrevVisible(this._previousSelectedActor); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + case "down": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = this.appBoxIter.getNextVisible(this._previousSelectedActor); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + case "right": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + + if (this.favBoxShow) { + this._buttonEnterEvent(item_actor._delegate); + this._previousSelectedActor = this.categoriesBox.get_child_at_index(index); + item_actor = this.favBoxIter.getFirstVisible(); + } + break; + case "left": + this._previousSelectedActor = this.applicationsBox.get_child_at_index(index); + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + break; + case "top": + item_actor = this.appBoxIter.getFirstVisible(); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + case "bottom": + item_actor = this.appBoxIter.getLastVisible(); + this._previousVisibleIndex = this.appBoxIter.getVisibleIndex(item_actor); + this._scrollToButton(item_actor._delegate); + break; + } + break; + case this.favoritesBox: + switch (whichWay) { + case "up": + this._previousSelectedActor = this.favoritesBox.get_child_at_index(index); + if (this._previousSelectedActor === this.favBoxIter.getFirstVisible()) { + item_actor = this.sysBoxIter.getLastVisible(); + } else { + item_actor = this.favBoxIter.getPrevVisible(this._previousSelectedActor); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } + break; + case "down": + this._previousSelectedActor = this.favoritesBox.get_child_at_index(index); + if (this._previousSelectedActor === this.favBoxIter.getLastVisible()) { + item_actor = this.sysBoxIter.getFirstVisible(); + } else { + item_actor = this.favBoxIter.getNextVisible(this._previousSelectedActor); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } + break; + case "right": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + break; + case "left": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + + this._buttonEnterEvent(item_actor._delegate); + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + break; + case "top": + item_actor = this.favBoxIter.getFirstVisible(); + break; + case "bottom": + item_actor = this.favBoxIter.getLastVisible(); + break; + } + break; + case this.systemButtonsBox: + switch (whichWay) { + case "up": + this._previousSelectedActor = this.systemButtonsBox.get_child_at_index(index); + if (this._previousSelectedActor === this.sysBoxIter.getFirstVisible()) { + item_actor = this.favBoxIter.getLastVisible(); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } else { + item_actor = this.sysBoxIter.getPrevVisible(this._previousSelectedActor); + } + break; + case "down": + this._previousSelectedActor = this.systemButtonsBox.get_child_at_index(index); + if (this._previousSelectedActor === this.sysBoxIter.getLastVisible()) { + item_actor = this.favBoxIter.getFirstVisible(); + this._scrollToButton(null, this.favoritesScrollBox); + } else { + item_actor = this.sysBoxIter.getNextVisible(this._previousSelectedActor); + } + break; + case "right": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + break; + case "left": + item_actor = (this._previousTreeSelectedActor != null) ? + this._previousTreeSelectedActor : + this.catBoxIter.getFirstVisible(); + this._previousTreeSelectedActor = item_actor; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + + this._buttonEnterEvent(item_actor._delegate); + item_actor = (this._previousVisibleIndex != null) ? + this.appBoxIter.getVisibleItem(this._previousVisibleIndex) : + this.appBoxIter.getFirstVisible(); + break; + case "top": + item_actor = this.sysBoxIter.getFirstVisible(); + break; + case "bottom": + item_actor = this.sysBoxIter.getLastVisible(); + break; + } + break; + default: + break; + } + if (!item_actor) + return false; + index = item_actor.get_parent()._vis_iter.getAbsoluteIndexOfChild(item_actor); + } else { + if ((this._activeContainer && this._activeContainer !== this.categoriesBox) && + (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter)) { + if (!ctrlKey) { + item_actor = this._activeContainer.get_child_at_index(this._selectedItemIndex); + item_actor._delegate.activate(); + } else if (ctrlKey && this._activeContainer === this.applicationsBox) { + item_actor = this.applicationsBox.get_child_at_index(this._selectedItemIndex); + this.toggleContextMenu(item_actor._delegate); + } + return true; + } else if (this._activeContainer === this.applicationsBox && symbol === Clutter.KEY_Menu) { + item_actor = this.applicationsBox.get_child_at_index(this._selectedItemIndex); + this.toggleContextMenu(item_actor._delegate); + return true; + } else if (!this.searchActive && this._activeContainer === this.favoritesBox && symbol === Clutter.KEY_Delete) { + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex); + if (item_actor._delegate instanceof FavoritesButton) { + let favorites = AppFavorites.getAppFavorites().getFavorites(); + let numFavorites = favorites.length; + AppFavorites.getAppFavorites().removeFavorite(item_actor._delegate.app.get_id()); + if (this._selectedItemIndex == (numFavorites-1)) + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex-1); + else + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex); + } + } else if (this._activeContainer === this.favoritesBox && + (symbol === Clutter.KEY_Down || symbol === Clutter.KEY_Up) && ctrlKey && + (this.favoritesBox.get_child_at_index(index))._delegate instanceof FavoritesButton) { + item_actor = this.favoritesBox.get_child_at_index(this._selectedItemIndex); + let id = item_actor._delegate.app.get_id(); + let appFavorites = AppFavorites.getAppFavorites(); + let favorites = appFavorites.getFavorites(); + let numFavorites = favorites.length; + let favPos = 0; + if (this._selectedItemIndex == (numFavorites-1) && symbol === Clutter.KEY_Down) + favPos = 0; + else if (this._selectedItemIndex == 0 && symbol === Clutter.KEY_Up) + favPos = numFavorites-1; + else if (symbol === Clutter.KEY_Down) + favPos = this._selectedItemIndex + 1; + else + favPos = this._selectedItemIndex - 1; + appFavorites.moveFavoriteToPos(id, favPos); + item_actor = this.favoritesBox.get_child_at_index(favPos); + this._scrollToButton(item_actor._delegate, this.favoritesScrollBox); + } else if (this.searchFilesystem && (this._fileFolderAccessActive || symbol === Clutter.KEY_slash)) { + if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter) { + if (this._run(this.searchEntry.get_text())) { + this.menu.close(); + } + return true; + } + if (symbol === Clutter.KEY_Escape) { + this.searchEntry.set_text(''); + this._fileFolderAccessActive = false; + } + if (symbol === Clutter.KEY_slash) { + // Need preload data before get completion. GFilenameCompleter load content of parent directory. + // Parent directory for /usr/include/ is /usr/. So need to add fake name('a'). + let text = this.searchEntry.get_text().concat('/a'); + let prefix; + if (!text.includes(' ')) + prefix = text; + else + prefix = text.substr(text.lastIndexOf(' ') + 1); + this._getCompletion(prefix); + + return false; + } + if (symbol === Clutter.KEY_Tab) { + let text = actor.get_text(); + let prefix; + if (!text.includes(' ')) + prefix = text; + else + prefix = text.substr(text.lastIndexOf(' ') + 1); + let postfix = this._getCompletion(prefix); + if (postfix != null && postfix.length > 0) { + actor.insert_text(postfix, -1); + actor.set_cursor_position(text.length + postfix.length); + if (postfix[postfix.length - 1] == '/') + this._getCompletion(text + postfix + 'a'); + } + return true; + } + if (symbol === Clutter.KEY_ISO_Left_Tab) { + return true; + } + return false; + } else if (symbol === Clutter.KEY_Tab || symbol === Clutter.KEY_ISO_Left_Tab) { + return true; + } else { + return false; + } + } + + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + + this._selectedItemIndex = index; + if (!item_actor || item_actor === this.searchEntry) { + return false; + } + this._buttonEnterEvent(item_actor._delegate); + return true; + } + + _buttonEnterEvent(button) { + let parent = button.actor.get_parent(); + if (this._activeContainer === this.categoriesBox && parent !== this._activeContainer) { + this._previousTreeSelectedActor = this._activeActor; + this._previousSelectedActor = null; + } + if (this._previousTreeSelectedActor && this._activeContainer !== this.categoriesBox && + parent !== this._activeContainer && button !== this._previousTreeSelectedActor && !this.searchActive) { + this._previousTreeSelectedActor.style_class = "menu-category-button"; + } + if (parent != this._activeContainer && parent._vis_iter) { + parent._vis_iter.reloadVisible(); + } + let _maybePreviousActor = this._activeActor; + if (_maybePreviousActor && this._activeContainer !== this.categoriesBox) { + this._previousSelectedActor = _maybePreviousActor; + this._clearPrevSelection(); + } + if (parent === this.categoriesBox && !this.searchActive) { + this._previousSelectedActor = _maybePreviousActor; + this._clearPrevCatSelection(); + } + this._activeContainer = parent; + this._activeActor = button.actor; + + if (this._activeContainer._vis_iter) { + this._selectedItemIndex = this._activeContainer._vis_iter.getAbsoluteIndexOfChild(this._activeActor); + } + + let isFav = false; + if (button instanceof CategoryButton) { + if (this.searchActive) + return; + button.isHovered = true; + this._clearPrevCatSelection(button.actor); + this._select_category(button.categoryId); + this.makeVectorBox(button.actor); + } else { + this._previousVisibleIndex = parent._vis_iter.getVisibleIndex(button.actor); + + isFav = button instanceof FavoritesButton || button instanceof SystemButton; + if (!isFav) + this._clearPrevSelection(button.actor); + this.selectedAppTitle.set_text(button.name); + this.selectedAppDescription.set_text(button.description); + } + + if (isFav) + button.actor.add_style_pseudo_class("hover"); + else + button.actor.set_style_class_name(`${button.styleClass}-selected`); + } + + _buttonLeaveEvent (button) { + if (button instanceof CategoryButton) { + if (this._previousTreeSelectedActor === null) { + this._previousTreeSelectedActor = button.actor; + } else { + let prevIdx = this.catBoxIter.getVisibleIndex(this._previousTreeSelectedActor); + let nextIdx = this.catBoxIter.getVisibleIndex(button.actor); + + if (Math.abs(prevIdx - nextIdx) <= 1) { + this._previousTreeSelectedActor = button.actor; + } + } + button.isHovered = false; + } else { + this._previousSelectedActor = button.actor; + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + + // category unselects are handled when the category actually changes + if (button instanceof FavoritesButton || button instanceof SystemButton) + button.actor.remove_style_pseudo_class("hover"); + else + button.actor.set_style_class_name(button.styleClass); + } + } + + _clearPrevSelection(actor) { + if (this._previousSelectedActor + && !this._previousSelectedActor.is_finalized() + && this._previousSelectedActor != actor) { + if (this._previousSelectedActor._delegate instanceof FavoritesButton || + this._previousSelectedActor._delegate instanceof SystemButton) + this._previousSelectedActor.remove_style_pseudo_class("hover"); + else if (!(this._previousSelectedActor._delegate instanceof CategoryButton)) + this._previousSelectedActor.style_class = "menu-application-button"; + } + } + + _clearPrevCatSelection(actor) { + if (this._previousTreeSelectedActor && this._previousTreeSelectedActor != actor) { + this._previousTreeSelectedActor.style_class = "menu-category-button"; + + if (this._previousTreeSelectedActor._delegate) { + this._buttonLeaveEvent(this._previousTreeSelectedActor._delegate); + } + + if (actor !== undefined) { + this._previousVisibleIndex = null; + this._previousTreeSelectedActor = actor; + } + } else { + this.categoriesBox.get_children().forEach(child => child.style_class = "menu-category-button"); + } + } + + /* + * The vectorBox overlays the the categoriesBox to aid in navigation from categories to apps + * by preventing misselections. It is set to the same size as the categoriesOverlayBox and + * categoriesBox. + * + * The actor is a quadrilateral that we turn into a triangle by setting the A and B vertices to + * the same position. The size and origin of the vectorBox are calculated in _getVectorInfo(). + * Using those properties, the bounding box is sized as (w, h) and the triangle is defined as + * follows: + * _____ + * | /|D + * | / | AB: (mx, my) + * | A/ | C: (w, h) + * | B\ | D: (w, 0) + * | \ | + * |____\|C + */ + + _getVectorInfo() { + let [mx, my, mask] = global.get_pointer(); + let [bx, by] = this.categoriesOverlayBox.get_transformed_position(); + let [bw, bh] = this.categoriesOverlayBox.get_transformed_size(); + + let xformed_mx = mx - bx; + let xformed_my = my - by; + + if (xformed_mx < 0 || xformed_mx > bw || xformed_my < 0 || xformed_my > bh) { + return null; + } + + return { mx: xformed_mx, + my: xformed_my, + w: this.categoriesOverlayBox.width, + h: this.categoriesOverlayBox.height }; + } + + makeVectorBox(actor) { + this.destroyVectorBox(actor); + let vi = this._getVectorInfo(); + if (!vi) + return; + + if (this.vectorBox) { + this.vectorBox.visible = true; + } else { + this.vectorBox = new St.Polygon({ debug: false, reactive: true }); + + this.categoriesOverlayBox.add_actor(this.vectorBox); + + this.vectorBox.connect("leave-event", Lang.bind(this, this.destroyVectorBox)); + this.vectorBox.connect("motion-event", Lang.bind(this, this.maybeUpdateVectorBox)); + } + + Object.assign(this.vectorBox, { width: vi.w, height: vi.h, + ulc_x: vi.mx, ulc_y: vi.my, + llc_x: vi.mx, llc_y: vi.my, + urc_x: vi.w, urc_y: 0, + lrc_x: vi.w, lrc_y: vi.h }); + + this.actor_motion_id = actor.connect("motion-event", Lang.bind(this, this.maybeUpdateVectorBox)); + this.current_motion_actor = actor; + } + + maybeUpdateVectorBox() { + if (this.vector_update_loop) { + Mainloop.source_remove(this.vector_update_loop); + this.vector_update_loop = 0; + } + this.vector_update_loop = Mainloop.timeout_add(50, Lang.bind(this, this.updateVectorBox)); + } + + updateVectorBox(actor) { + if (!this.current_motion_actor) + return; + let vi = this._getVectorInfo(); + if (vi) { + this.vectorBox.ulc_x = vi.mx; + this.vectorBox.llc_x = vi.mx; + this.vectorBox.queue_repaint(); + } else { + this.destroyVectorBox(actor); + } + this.vector_update_loop = 0; + return false; + } + + destroyVectorBox(actor) { + if (!this.vectorBox) + return; + + if (this.vector_update_loop) { + Mainloop.source_remove(this.vector_update_loop); + this.vector_update_loop = 0; + } + + if (this.actor_motion_id > 0 && this.current_motion_actor != null) { + this.current_motion_actor.disconnect(this.actor_motion_id); + this.actor_motion_id = 0; + this.current_motion_actor = null; + this.vectorBox.visible = false; + } + } + + _refreshPlaces () { + for (let i = 0; i < this._placesButtons.length; i ++) { + this._placesButtons[i].actor.destroy(); + } + + this._placesButtons = []; + + for (let i = 0; i < this._categoryButtons.length; i++) { + if (this._categoryButtons[i].categoryId === 'place') { + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + this.placesButton = null; + break; + } + } + + if (!this.showPlaces) { + return; + } + + // Now generate Places category and places buttons and add to the list + if (!this.placesButton) { + this.placesButton = new CategoryButton(this, 'place', _('Places'), 'folder'); + this._categoryButtons.push(this.placesButton); + this.categoriesBox.add_actor(this.placesButton.actor); + } + + // places go after applications. we add them in reverse starting below the last ApplicationButton + let sibling = this._applicationsButtons[this._applicationsButtons.length - 1].actor; + let places = Main.placesManager.getAllPlaces(); + for (let i = places.length - 1; i >= 0; i--) { + let button = new PlaceButton(this, places[i]); + this._placesButtons.push(button); + this.applicationsBox.insert_child_below(button.actor, sibling); + button.actor.visible = this.menu.isOpen; + sibling = button.actor; + } + + this._resizeApplicationsBox(); + } + + _refreshRecent () { + for (let i = 0; i < this._recentButtons.length; i++) { + this._recentButtons[i].destroy(); + } + + this._recentButtons = []; + + for (let i = 0; i < this._categoryButtons.length; i++) { + if (this._categoryButtons[i].categoryId === 'recent') { + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + this.recentButton = null; + break; + } + } + + if (!this.showRecents || !this.privacy_settings.get_boolean(REMEMBER_RECENT_KEY)) { + return; + } + + if (!this.recentButton) { + this.recentButton = new CategoryButton(this, 'recent', _('Recent Files'), 'folder-recent'); + this._categoryButtons.push(this.recentButton); + this.categoriesBox.add_actor(this.recentButton.actor); + } + + let recents = this.RecentManager._infosByTimestamp.filter(info => !info.name.startsWith(".")); + if (recents.length > 0) { + this.noRecentDocuments = false; + Util.each(recents, (info) => { + let button = new RecentButton(this, info); + this._recentButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + }); + + let button = new SimpleMenuItem(this, { name: _("Clear list"), + description: _("Clear all recent documents"), + type: 'recent-clear', + styleClass: 'menu-application-button' }); + button.addIcon(22, 'edit-clear', null, true); + button.addLabel("", 'menu-application-button-label'); + button.label.clutter_text.set_markup(`${button.name}`); + button.activate = () => { + this.menu.close(); + (new Gtk.RecentManager()).purge_items(); + }; + + if (!this.showApplicationIcons) + button.icon.visible = false; + + this._recentButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + } else { + this.noRecentDocuments = true; + let button = new SimpleMenuItem(this, { name: _("No recent documents"), + type: 'no-recent', + styleClass: 'menu-application-button', + reactive: false, + activatable: false }); + button.addLabel(button.name, 'menu-application-button-label'); + this._recentButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + } + + this._resizeApplicationsBox(); + } + + _refreshFavDocs() { + for (let i = 0; i < this._favoriteDocButtons.length; i++) { + this._favoriteDocButtons[i].destroy(); + } + + this._favoriteDocButtons = []; + + for (let i = 0; i < this._categoryButtons.length; i++) { + if (this._categoryButtons[i].categoryId === 'favorite') { + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + this.favoriteDocsButton = null; + break; + } + } + + let favorite_infos = XApp.Favorites.get_default().get_favorites(null); + + if (!this.showFavorites || favorite_infos.length == 0) { + return; + } + + if (!this.favoriteDocsButton) { + this.favoriteDocsButton = new CategoryButton(this, 'favorite', _('Favorites'), 'xapp-user-favorites'); + this._categoryButtons.push(this.favoriteDocsButton); + this.categoriesBox.add_actor(this.favoriteDocsButton.actor); + } + + Util.each(favorite_infos, (info) => { + let button = new FavoriteButton(this, info); + this._favoriteDocButtons.push(button); + this.applicationsBox.add_actor(button.actor); + button.actor.visible = this.menu.isOpen; + }); + + this._resizeApplicationsBox(); + } + + _refreshApps() { + /* iterate in reverse, so multiple splices will not upset + * the remaining elements */ + for (let i = this._categoryButtons.length - 1; i > -1; i--) { + let b = this._categoryButtons[i]; + if (b === this._allAppsCategoryButton || + ['place', 'recent', 'favorite'].includes(b.categoryId)) + continue; + this._categoryButtons[i].destroy(); + this._categoryButtons.splice(i, 1); + } + + this._applicationsButtons.forEach(button => button.destroy()); + this._applicationsButtons = []; + + if (!this._allAppsCategoryButton) { + this._allAppsCategoryButton = new CategoryButton(this); + this.categoriesBox.add_actor(this._allAppsCategoryButton.actor); + this._categoryButtons.push(this._allAppsCategoryButton); + } + + // grab top level directories and all apps in them + let [apps, dirs] = AppUtils.getApps(); + + // generate all category buttons from top-level directories + Util.each(dirs, (d) => { + let categoryButton = new CategoryButton(this, d.get_menu_id(), d.get_name(), d.get_icon()); + this._categoryButtons.push(categoryButton); + this.categoriesBox.add_actor(categoryButton.actor); + }); + + /* we add them in reverse at index 0 so they are always above places and + * recent buttons, and below */ + for (let i = apps.length - 1; i > -1; i--) { + let app = apps[i][0]; + let button = new ApplicationButton(this, app); + button.category = apps[i][1]; + let appKey = app.get_id() || `${app.get_name()}:${app.get_description()}`; + + // appsWereRefreshed if this is not initial load. on initial load every + // app is marked known. + if (this._appsWereRefreshed && !this._knownApps.has(appKey)) + button.highlight(); + else + this._knownApps.add(appKey); + + this._applicationsButtons.push(button); + this.applicationsBox.insert_child_at_index(button.actor, 0); + button.actor.visible = this.menu.isOpen; + } + + // we expect this array to be in the same order as the child list + this._applicationsButtons.reverse(); + this._appsWereRefreshed = true; + } + + _refreshFavApps() { + //Remove all favorites + this.favoritesBox.destroy_all_children(); + + //Load favorites again + this._favoriteAppButtons = []; + let launchers = global.settings.get_strv('favorite-apps'); + for ( let i = 0; i < launchers.length; ++i ) { + let app = appsys.lookup_app(launchers[i]); + if (app) { + let button = new FavoritesButton(this, app); + this._favoriteAppButtons[app] = button; + this.favoritesBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + } + } + } + + _refreshSystemButtons() { + // Remove all system buttons + this.systemButtonsBox.destroy_all_children(); + + // Load system buttons again + let button; + + //Lock screen + button = new SystemButton(this, "system-lock-screen", + _("Lock screen"), + _("Lock the screen")); + + button.activate = () => { + this.menu.close(); + + let screensaver_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.screensaver" }); + let screensaver_dialog = Gio.file_new_for_path("/usr/bin/cinnamon-screensaver-command"); + if (screensaver_dialog.query_exists(null)) { + if (screensaver_settings.get_boolean("ask-for-away-message")) { + Util.spawnCommandLine("cinnamon-screensaver-lock-dialog"); + } + else { + Util.spawnCommandLine("cinnamon-screensaver-command --lock"); + } + } + else { + this._screenSaverProxy.LockRemote(""); + } + }; + + this.systemButtonsBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + + //Logout button + button = new SystemButton(this, "system-log-out", + _("Logout"), + _("Leave the session")); + + button.activate = () => { + this.menu.close(); + this._session.LogoutRemote(0); + }; + + this.systemButtonsBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + + //Shutdown button + button = new SystemButton(this, "system-shutdown", + _("Quit"), + _("Shut down the computer")); + + button.activate = () => { + this.menu.close(); + this._session.ShutdownRemote(); + }; + + this.systemButtonsBox.add(button.actor, { y_align: St.Align.END, y_fill: false }); + } + + _scrollToButton(button, scrollBox = null) { + if (!scrollBox) + scrollBox = this.applicationsScrollBox; + + let adj = scrollBox.get_vscroll_bar().get_adjustment(); + if (button) { + let box = scrollBox.get_allocation_box(); + let boxHeight = box.y2 - box.y1; + let actorBox = button.actor.get_allocation_box(); + let currentValue = adj.get_value(); + let newValue = currentValue; + + if (currentValue > actorBox.y1 - 10) + newValue = actorBox.y1 - 10; + if (boxHeight + currentValue < actorBox.y2 + 10) + newValue = actorBox.y2 - boxHeight + 10; + + if (newValue != currentValue) + adj.set_value(newValue); + } else { + adj.set_value(0); + } + } + + _display() { + this._activeContainer = null; + this._activeActor = null; + this.vectorBox = null; + this.actor_motion_id = 0; + this.vector_update_loop = null; + this.current_motion_actor = null; + let section = new PopupMenu.PopupMenuSection(); + this.menu.addMenuItem(section); + + this.leftPane = new St.BoxLayout({ vertical: true }); + + this.leftBox = new St.BoxLayout({ style_class: 'menu-favorites-box', vertical: true }); + + this._session = new GnomeSession.SessionManager(); + this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy(); + + this.leftPane.add(this.leftBox, { y_align: St.Align.END, y_fill: false }); + this._favboxtoggle(); + + let rightPane = new St.BoxLayout({ vertical: true }); + + this.searchBox = new St.BoxLayout({ style_class: 'menu-search-box' }); + + this.searchEntry = new St.Entry({ name: 'menu-search-entry', + hint_text: _("Type to search..."), + track_hover: true, + can_focus: true }); + this.searchEntry.set_secondary_icon(this._searchInactiveIcon); + this.searchBox.add(this.searchEntry, {x_fill: true, x_align: St.Align.START, y_align: St.Align.MIDDLE, y_fill: false, expand: true}); + this.searchActive = false; + this.searchEntryText = this.searchEntry.clutter_text; + this.searchEntryText.connect('text-changed', Lang.bind(this, this._onSearchTextChanged)); + this.searchEntryText.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress)); + this._previousSearchPattern = ""; + + this.categoriesApplicationsBox = new CategoriesApplicationsBox(); + rightPane.add_actor(this.searchBox); + rightPane.add_actor(this.categoriesApplicationsBox.actor); + + this.categoriesOverlayBox = new Clutter.Actor(); + this.categoriesBox = new St.BoxLayout({ style_class: 'menu-categories-box', + vertical: true, + accessible_role: Atk.Role.LIST }); + this.categoriesOverlayBox.add_actor(this.categoriesBox); + + this.applicationsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false, y_align: St.Align.START, style_class: 'vfade menu-applications-scrollbox' }); + this.favoritesScrollBox = new St.ScrollView({ + x_fill: true, + y_fill: false, + y_align: St.Align.START, + style_class: 'vfade menu-favorites-scrollbox' + }); + + this.a11y_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.a11y.applications" }); + this.a11y_settings.connect("changed::screen-magnifier-enabled", Lang.bind(this, this._updateVFade)); + this.a11y_mag_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.a11y.magnifier" }); + this.a11y_mag_settings.connect("changed::mag-factor", Lang.bind(this, this._updateVFade)); + + this._updateVFade(); + + this.settings.bind("enable-autoscroll", "autoscroll_enabled", this._update_autoscroll); + this._update_autoscroll(); + + let vscroll = this.applicationsScrollBox.get_vscroll_bar(); + vscroll.connect('scroll-start', + Lang.bind(this, function() { + this.menu.passEvents = true; + })); + vscroll.connect('scroll-stop', + Lang.bind(this, function() { + this.menu.passEvents = false; + })); + + this.applicationsBox = new St.BoxLayout({ style_class: 'menu-applications-inner-box', vertical:true }); + this.applicationsBox.add_style_class_name('menu-applications-box'); //this is to support old themes + this.applicationsScrollBox.add_actor(this.applicationsBox); + this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); + this.categoriesApplicationsBox.actor.add_actor(this.categoriesOverlayBox); + this.categoriesApplicationsBox.actor.add_actor(this.applicationsScrollBox); + + this.favoritesBox = new FavoritesBox().actor; + this.favoritesScrollBox.add_actor(this.favoritesBox); + this.favoritesScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER); + + this.leftBox.add(this.favoritesScrollBox, { + y_align: St.Align.END, + y_fill: false + }); + + this.systemButtonsBox = new St.BoxLayout({ vertical: true }); + this.leftBox.add(this.systemButtonsBox, { y_align: St.Align.END, y_fill: false }); + + this.mainBox = new St.BoxLayout({ style_class: 'menu-applications-outer-box', vertical:false }); + this.mainBox.add_style_class_name('menu-applications-box'); //this is to support old themes + + this.mainBox.add(this.leftPane, { span: 1 }); + this.mainBox.add(rightPane, { span: 1 }); + this.mainBox._delegate = null; + + this.selectedAppBox = new St.BoxLayout({ style_class: 'menu-selected-app-box', vertical: true }); + this.selectedAppTitle = new St.Label({ style_class: 'menu-selected-app-title', text: "" }); + this.selectedAppBox.add_actor(this.selectedAppTitle); + this.selectedAppDescription = new St.Label({ style_class: 'menu-selected-app-description', text: "" }); + this.selectedAppBox.add_actor(this.selectedAppDescription); + this.selectedAppBox._delegate = null; + + section.actor.add(this.mainBox); + section.actor.add_actor(this.selectedAppBox); + + this.appBoxIter = new VisibleChildIterator(this.applicationsBox); + this.applicationsBox._vis_iter = this.appBoxIter; + this.catBoxIter = new VisibleChildIterator(this.categoriesBox); + this.categoriesBox._vis_iter = this.catBoxIter; + this.favBoxIter = new VisibleChildIterator(this.favoritesBox); + this.favoritesBox._vis_iter = this.favBoxIter; + this.sysBoxIter = new VisibleChildIterator(this.systemButtonsBox); + this.systemButtonsBox._vis_iter = this.sysBoxIter; + + Mainloop.idle_add(Lang.bind(this, function() { + this._clearAllSelections(true); + })); + + this.menu.actor.connect("allocation-changed", Lang.bind(this, this._on_allocation_changed)); + } + + _updateVFade() { + let mag_on = this.a11y_settings.get_boolean("screen-magnifier-enabled") && + this.a11y_mag_settings.get_double("mag-factor") > 1.0; + if (mag_on) { + this.applicationsScrollBox.style_class = "menu-applications-scrollbox"; + this.favoritesScrollBox.style_class = "menu-favorites-scrollbox"; + } else { + this.applicationsScrollBox.style_class = "vfade menu-applications-scrollbox"; + this.favoritesScrollBox.style_class = "vfade menu-favorites-scrollbox"; + } + } + + _update_autoscroll() { + this.applicationsScrollBox.set_auto_scrolling(this.autoscroll_enabled); + this.favoritesScrollBox.set_auto_scrolling(this.autoscroll_enabled); + } + + _on_allocation_changed(box, flags, data) { + this._recalc_height(); + } + + _clearAllSelections(hide_apps) { + let actors = this.applicationsBox.get_children(); + for (let i = 0; i < actors.length; i++) { + let actor = actors[i]; + actor.style_class = "menu-application-button"; + if (hide_apps) { + actor.hide(); + } + } + actors = this.categoriesBox.get_children(); + for (let i = 0; i < actors.length; i++){ + let actor = actors[i]; + actor.style_class = "menu-category-button"; + actor.show(); + } + actors = this.favoritesBox.get_children(); + for (let i = 0; i < actors.length; i++){ + let actor = actors[i]; + actor.remove_style_pseudo_class("hover"); + actor.show(); + } + actors = this.systemButtonsBox.get_children(); + for (let i = 0; i < actors.length; i++){ + let actor = actors[i]; + actor.remove_style_pseudo_class("hover"); + actor.show(); + } + } + + _resetSortOrder() { + let pos = 0; + + for (let i = 0; i < this._applicationsButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._applicationsButtons[i].actor, pos++); + } + + for (let i = 0; i < this._favoriteDocButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._favoriteDocButtons[i].actor, pos++); + } + + for (let i = 0; i < this._placesButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._placesButtons[i].actor, pos++); + } + + for (let i = 0; i < this._recentButtons.length; i++) { + this.applicationsBox.set_child_at_index(this._recentButtons[i].actor, pos++); + } + } + + _select_category (name) { + if (name === this.lastSelectedCategory) + return; + this.lastSelectedCategory = name; + this._displayButtons(name || 'app'); + this.closeContextMenu(false); + } + + closeContextMenu(animate) { + if (!this.contextMenu || !this.contextMenu.isOpen) + return; + + if (animate) + this.contextMenu.toggle(); + else + this.contextMenu.close(); + } + + _resizeApplicationsBox() { + let width = -1; + Util.each(this.applicationsBox.get_children(), c => { + let [min, nat] = c.get_preferred_width(-1.0); + if (nat > width) + width = nat; + }); + this.applicationsBox.set_width(width + 42); // The answer to life... + } + + /** + * Reset the ApplicationsBox to a specific category or list of buttons. + * @param {String} category (optional) The button type or application category to be displayed. + * @param {Array} buttons (optional) A list of existing buttons to show. + * @param {Array} autoCompletes (optional) A list of autocomplete strings to add buttons for and show. + */ + _displayButtons(category, buttons=[], autoCompletes=[]){ + /* We only operate on SimpleMenuItems here. If any other menu item types + * are added, they should be managed independently. */ + if (category) { + if (this.orderDirty) { + this._resetSortOrder(); + this.orderDirty = false; + } + + Util.each(this.applicationsBox.get_children(), c => { + let b = c._delegate; + if (!(b instanceof SimpleMenuItem)) + return; + + // destroy temporary buttons + if (b.type === 'transient' || b.type === 'search-provider') { + b.destroy(); + return; + } + + c.visible = b.type.includes(category) || b.type === 'app' && b.category.includes(category); + }); + } else { + this.orderDirty = true; + + Util.each(this.applicationsBox.get_children(), c => { + let b = c._delegate; + if (!(b instanceof SimpleMenuItem)) + return; + + // destroy temporary buttons + if (b.type === 'transient' || b.type === 'search-provider' || b.type === 'search-result') { + b.destroy(); + return; + } + + c.visible = false; + }); + + buttons.sort((ba, bb) => { + if (ba.matchIndex < bb.matchIndex) { + return -1; + } else + if (bb.matchIndex < ba.matchIndex) { + return 1; + } + + return ba.searchStrings < bb.searchStrings ? -1 : 1; + }); + + for (let i = 0; i < buttons.length; i++) { + this.applicationsBox.set_child_at_index(buttons[i].actor, i); + buttons[i].actor.visible = true; + } + } + + // reset temporary button storage + this._transientButtons = []; + this._searchProviderButtons = []; + + if (autoCompletes) { + Util.each(autoCompletes, item => { + let button = new TransientButton(this, item); + this._transientButtons.push(button); + this.applicationsBox.add_actor(button.actor); + }); + } + } + + _setCategoriesButtonActive(active) { + try { + let categoriesButtons = this.categoriesBox.get_children(); + for (var i in categoriesButtons) { + let button = categoriesButtons[i]; + let icon = button._delegate.icon; + if (active){ + button.set_style_class_name("menu-category-button"); + if (icon) { + icon.set_opacity(255); + } + } else { + button.set_style_class_name("menu-category-button-greyed"); + if (icon) { + let icon_opacity = icon.get_theme_node().get_double('opacity'); + icon_opacity = Math.min(Math.max(0, icon_opacity), 1); + if (icon_opacity) // Don't set opacity to 0 if not defined + icon.set_opacity(icon_opacity * 255); + } + } + } + } catch (e) { + global.log(e); + } + } + + resetSearch(){ + this.searchEntry.set_text(""); + } + + _onSearchTextChanged (se, prop) { + let searchString = this.searchEntry.get_text().trim(); + let searchActive = !(searchString == '' || searchString == this.searchEntry.hint_text); + if (!this.searchActive && !searchActive) + return; + + if (searchString == this._previousSearchPattern) + return; + this._previousSearchPattern = searchString; + + this.searchActive = searchActive; + this._fileFolderAccessActive = searchActive && this.searchFilesystem; + this._clearAllSelections(); + + if (searchActive) { + this.searchEntry.set_secondary_icon(this._searchActiveIcon); + if (!this._searchIconClickedId) { + this._searchIconClickedId = + this.searchEntry.connect('secondary-icon-clicked', () => { + this.resetSearch(); + this._select_category(); + }); + } + this._setCategoriesButtonActive(false); + this.lastSelectedCategory = "search" + + this._doSearch(searchString); + } else { + if (this._searchIconClickedId > 0) + this.searchEntry.disconnect(this._searchIconClickedId); + this._searchIconClickedId = 0; + this.searchEntry.set_secondary_icon(this._searchInactiveIcon); + this._previousSearchPattern = ""; + this._setCategoriesButtonActive(true); + this._select_category(); + this._allAppsCategoryButton.actor.style_class = "menu-category-button-selected"; + this._activeContainer = null; + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + } + } + + _matchNames(buttons, pattern){ + let ret = []; + let regexpPattern = new RegExp(Util.escapeRegExp(pattern)); + + for (let i = 0; i < buttons.length; i++) { + if (buttons[i].type == "recent-clear" || buttons[i].type == "no-recent") { + continue; + } + let res = buttons[i].searchStrings[0].match(regexpPattern); + if (res) { + buttons[i].matchIndex = res.index + RECENT_PLACES_ADDER; + ret.push(buttons[i]); + } else { + buttons[i].matchIndex = NO_MATCH; + } + } + + return ret; + } + + _listApplications(pattern){ + if (!pattern) + return []; + + let apps = []; + let regexpPattern = new RegExp(Util.escapeRegExp(pattern)); + + for (let i in this._applicationsButtons) { + let button = this._applicationsButtons[i]; + + for (let j = 0; j < button.searchStrings.length; j++) { + let res = button.searchStrings[j].match(regexpPattern); + if (res) { + button.matchIndex = res.index + APP_MATCH_ADDERS[j]; + apps.push(button); + break; + } else { + button.matchIndex = NO_MATCH; + } + } + } + + return apps; + } + + _doSearch(rawPattern){ + let pattern = Util.latinise(rawPattern.toLowerCase()); + + this._searchTimeoutId = 0; + this._activeContainer = null; + this._activeActor = null; + this._selectedItemIndex = null; + this._previousTreeSelectedActor = null; + this._previousSelectedActor = null; + + let buttons = this._listApplications(pattern); + + let result = this._matchNames(this._favoriteDocButtons, pattern); + buttons = buttons.concat(result); + + result = this._matchNames(this._placesButtons, pattern); + buttons = buttons.concat(result); + + result = this._matchNames(this._recentButtons, pattern); + buttons = buttons.concat(result); + + var acResults = []; // search box autocompletion results + if (this.searchFilesystem) { + // Don't use the pattern here, as filesystem is case sensitive + acResults = this._getCompletions(rawPattern); + } + + this._displayButtons(null, buttons, acResults); + + if (buttons.length || acResults.length) { + this.appBoxIter.reloadVisible(); + let item_actor = this.appBoxIter.getFirstVisible(); + this._selectedItemIndex = this.appBoxIter.getAbsoluteIndexOfChild(item_actor); + this._activeContainer = this.applicationsBox; + this._scrollToButton(item_actor._delegate); + this._buttonEnterEvent(item_actor._delegate); + } else { + this.selectedAppTitle.set_text(""); + this.selectedAppDescription.set_text(""); + } + + SearchProviderManager.launch_all(pattern, Lang.bind(this, function(provider, results) { + try { + for (var i in results) { + if (results[i].type != 'software') + { + let button = new SearchProviderResultButton(this, provider, results[i]); + this._searchProviderButtons.push(button); + this.applicationsBox.add_actor(button.actor); + if (this._selectedItemIndex === null) { + this.appBoxIter.reloadVisible(); + let item_actor = this.appBoxIter.getFirstVisible(); + this._selectedItemIndex = this.appBoxIter.getAbsoluteIndexOfChild(item_actor); + this._activeContainer = this.applicationsBox; + if (item_actor && item_actor != this.searchEntry) { + this._buttonEnterEvent(item_actor._delegate); + } + } + } + } + } catch(e) { + global.log(e); + } + })); + + return false; + } + + _getCompletion (text) { + if (!text.includes('/') || text.endsWith('/')) + return ''; + return this._pathCompleter.get_completion_suffix(text); + } + + _getCompletions (text) { + if (!text.includes('/')) + return []; + return this._pathCompleter.get_completions(text); + } + + _run (input) { + this._commandError = false; + if (input) { + let path = null; + if (input.startsWith('/')) { + path = input; + } else { + if (input.startsWith('~')) + input = input.slice(1); + path = GLib.get_home_dir() + '/' + input; + } + + if (GLib.file_test(path, GLib.FileTest.EXISTS)) { + let file = Gio.file_new_for_path(path); + try { + Gio.app_info_launch_default_for_uri(file.get_uri(), + global.create_app_launch_context()); + } catch (e) { + // The exception from gjs contains an error string like: + // Error invoking Gio.app_info_launch_default_for_uri: No application + // is registered as handling this file + // We are only interested in the part after the first colon. + //let message = e.message.replace(/[^:]*: *(.+)/, '$1'); + return false; + } + } else { + return false; + } + } + + return true; + } +}; + +function main(metadata, orientation, panel_height, instance_id) { + return new CinnamonMenuApplet(orientation, panel_height, instance_id); +} diff --git a/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/metadata.json b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/metadata.json new file mode 100755 index 0000000..7d08340 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/metadata.json @@ -0,0 +1,7 @@ +{ + "uuid": "menu@cinnamon.org", + "name": "Menu", + "description": "Main Cinnamon menu", + "icon": "applications-other", + "max-instances": -1 +} diff --git a/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json new file mode 100755 index 0000000..e1bfc22 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/cinnamon/applets/menu@cinnamon.org/settings-schema.json @@ -0,0 +1,258 @@ +{ + "layout": { + "type": "layout", + "pages": [ + "panel", + "menu" + ], + "panel": { + "type": "page", + "title": "Panel", + "sections": [ + "panel-appear", + "panel-behave" + ] + }, + "menu": { + "type": "page", + "title": "Menu", + "sections": [ + "menu-layout", + "menu-behave" + ] + }, + "panel-appear": { + "type": "section", + "title": "Appearance", + "keys": [ + "menu-custom", + "menu-icon", + "menu-icon-size", + "menu-label" + ] + }, + "panel-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "overlay-key", + "activate-on-hover", + "hover-delay", + "force-show-panel", + "enable-animation" + ] + }, + "menu-layout": { + "type": "section", + "title": "Layout and content", + "keys": [ + "show-category-icons", + "category-icon-size", + "show-application-icons", + "application-icon-size", + "favbox-show", + "fav-icon-size", + "favbox-min-height", + "show-places", + "show-recents", + "menu-editor-button" + ] + }, + "menu-behave": { + "type": "section", + "title": "Behavior", + "keys": [ + "enable-autoscroll", + "search-filesystem" + ] + } + }, + "overlay-key": { + "type": "keybinding", + "description": "Keyboard shortcut to open and close the menu", + "default": "Super_L::Super_R", + "value": "Super_L::Super_R" + }, + "menu-custom": { + "type": "switch", + "default": false, + "description": "Use a custom icon and label", + "tooltip": "Check this to specify a custom icon and label", + "value": true + }, + "menu-icon": { + "type": "iconfilechooser", + "default": "cinnamon-symbolic", + "description": "Icon", + "tooltip": "Select an icon to show in the panel.", + "default_icon": "cinnamon-symbolic", + "dependency": "menu-custom", + "indent": true, + "value": "/usr/share/pixmaps/orangepi/orangepi.png" + }, + "menu-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 96, + "step": 1, + "units": "px", + "description": "Icon size", + "dependency": "menu-custom", + "indent": true, + "value": 32 + }, + "menu-label": { + "type": "entry", + "default": "Menu", + "description": "Text", + "tooltip": "Enter custom text to show in the panel.", + "dependency": "menu-custom", + "indent": true, + "value": "Menu" + }, + "favbox-min-height": { + "type": "spinbutton", + "default": 300, + "min": 50, + "max": 1000, + "step": 10, + "units": "px", + "dependency": "favbox-show", + "description": "Minimum height of the favorites section", + "tooltip": "The minimum size allocated for the favorites section (this has an impact on the overall height of the menu).", + "value": 300 + }, + "show-category-icons": { + "type": "switch", + "default": true, + "description": "Show category icons", + "tooltip": "Choose whether or not to show icons on categories.", + "value": true + }, + "category-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Categories icon size", + "dependency": "show-category-icons", + "indent": true, + "value": 22 + }, + "show-application-icons": { + "type": "switch", + "default": true, + "description": "Show application icons", + "tooltip": "Choose whether or not to show icons on applications.", + "value": true + }, + "application-icon-size": { + "type": "spinbutton", + "default": 22, + "min": 16, + "max": 48, + "step": 1, + "units": "px", + "description": "Applications icon size", + "dependency": "show-application-icons", + "indent": true, + "value": 22 + }, + "favbox-show": { + "type": "switch", + "default": true, + "description": "Show favorites and session buttons", + "tooltip": "Choose whether or not to show the left pane of the menu.", + "value": true + }, + "fav-icon-size": { + "type": "spinbutton", + "default": 32, + "min": 16, + "max": 64, + "step": 1, + "units": "px", + "description": "Favorites icon size", + "dependency": "favbox-show", + "indent": true, + "value": 32 + }, + "show-favorites": { + "type": "switch", + "default": true, + "description": "Show favorites", + "tooltip": "Choose whether or not to show favorite files in the menu.", + "value": true + }, + "show-places": { + "type": "switch", + "default": true, + "description": "Show bookmarks and places", + "tooltip": "Choose whether or not to show bookmarks and places in the menu.", + "value": true + }, + "show-recents": { + "type": "switch", + "default": true, + "description": "Show recents", + "tooltip": "Choose whether or not to show recents in the menu.", + "value": true + }, + "enable-autoscroll": { + "type": "switch", + "default": true, + "description": "Enable autoscrolling in application list", + "tooltip": "Choose whether or not to enable smooth autoscrolling in the application list.", + "value": true + }, + "search-filesystem": { + "type": "switch", + "default": false, + "description": "Enable filesystem path entry in search box", + "tooltip": "Allows path entry in the menu search box.", + "value": false + }, + "force-show-panel": { + "type": "switch", + "default": true, + "description": "Force the panel to be visible when opening the menu", + "tooltip": "Opening the menu will also show the main panel (which may be auto-hidden).", + "value": true + }, + "activate-on-hover": { + "type": "switch", + "default": false, + "description": "Open the menu when I move my mouse over it", + "tooltip": "Enable opening the menu when the mouse enters the applet", + "value": false + }, + "hover-delay": { + "type": "spinbutton", + "default": 0, + "min": 0, + "max": 1000, + "step": 50, + "units": "milliseconds", + "dependency": "activate-on-hover", + "description": "Menu hover delay", + "tooltip": "Delay before the menu opens when hovered", + "value": 0 + }, + "enable-animation": { + "type": "switch", + "default": false, + "description": "Use menu animations", + "tooltip": "Allow the menu to animate on open and close", + "value": false + }, + "menu-editor-button": { + "type": "button", + "description": "Open the menu editor", + "callback": "_launch_editor", + "tooltip": "Press this button to customize your menu entries." + }, + "__md5__": "c4b27da93411965126569249b61793d7" +} diff --git a/external/packages/blobs/desktop/skel_new/.local/share/desktop-directories/xfce-accessories.directory b/external/packages/blobs/desktop/skel_new/.local/share/desktop-directories/xfce-accessories.directory new file mode 100644 index 0000000..d1f3a75 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/desktop-directories/xfce-accessories.directory @@ -0,0 +1,132 @@ +[Desktop Entry] +Version=1.0 +Type=Directory +Icon=applications-accessories +Name=Accessories +Name[am]=ተጨማሪዎች +Name[ar]=ملحقات +Name[ast]=Accesorios +Name[be]=Інструменты +Name[bg]=Помощни програми +Name[bn]=আনুষঙ্গিক +Name[ca]=Accessoris +Name[cs]=Příslušenství +Name[cy]=Ategolion +Name[da]=Tilbehør +Name[de]=Zubehör +Name[el]=Βοηθήματα +Name[en_AU]=Accessories +Name[en_GB]=Accessories +Name[eo]=Akcesoraĵoj +Name[es]=Accesorios +Name[et]=Tarvikud +Name[eu]=Gehigarriak +Name[fi]=Apuohjelmat +Name[fr]=Accessoires +Name[gl]=Accesorios +Name[he]=עזרים +Name[hi]=सहायक सॉफ्टवेयर +Name[hr]=Pomagala +Name[hu]=Kellékek +Name[hy]=Պիտույք +Name[hy_AM]=Պիտոյք +Name[hye]=Պիտոյք +Name[id]=Aksesoris +Name[ie]=Accessories +Name[is]=Aukahlutir +Name[it]=Accessori +Name[ja]=アクセサリ +Name[ka]=აქსესუარები +Name[kab]=Imerniyen +Name[kk]=Қалыпты +Name[ko]=보조프로그램 +Name[lt]=Reikmenys +Name[ms]=Aksesori +Name[nb]=Tilbehør +Name[nl]=Hulpmiddelen +Name[nn]=Ymse +Name[oc]=Accessòris +Name[pl]=Akcesoria +Name[pt]=Acessórios +Name[pt_BR]=Acessórios +Name[ro]=Accesorii +Name[ru]=Инструменты +Name[sk]=Príslušenstvo +Name[sl]=Pripomočki +Name[sq]=Aksesorë +Name[sr]=Прибор +Name[sv]=Tillbehör +Name[te]=సహాయకాలు +Name[th]=เครื่องใช้ไม้สอย +Name[tr]=Donatılar +Name[ug]=قوشۇمچە دېتاللار +Name[uk]=Інструменти +Name[uz]=Tizim vositalari +Name[uz@Latn]=Tizim vositalari +Name[zh_CN]=附件 +Name[zh_HK]=附屬應用 +Name[zh_TW]=附屬應用 +Comment=Common desktop tools and applications +Comment[am]=የ ተለመዱ የ ዴስክቶፕ መሳሪያዎች እና መተግበሪያዎች +Comment[ar]=تطبيقات وأدوات سطح المكتب الشائعة +Comment[ast]=Ferramientes d'escritoriu y aplicaciones comunes +Comment[be]=Стандартныя інструменты і праграмы +Comment[bg]=Основни инструменти и програми за работния плот +Comment[bn]=সাধারণ ডেস্কটপ সরঞ্জাম এবং অ্যাপ্লিকেশন +Comment[ca]=Eines comunes d'escriptori i d'aplicacions +Comment[cs]=Běžné nástroje pracovní plochy a aplikace +Comment[cy]=Offer penfwrdd a rhaglenni cyffredin +Comment[da]=Almene skrivebordsværktøjer og -programmer +Comment[de]=Gemeinsame Schreibtischwerkzeuge und -anwendungen +Comment[el]=Εφαρμογές και εργαλεία διαμοιραζόμενου υπολογιστή +Comment[en_AU]=Common desktop tools and applications +Comment[en_GB]=Common desktop tools and applications +Comment[eo]=Kutimaj Labortablaj iloj kaj aplikaĵoj +Comment[es]=Herramientas y aplicaciones de escritorio comunes +Comment[et]=Tavalised töölaua tööriistad ja rakendused +Comment[eu]=Mahaigain lanabes eta aplikazio arruntak +Comment[fi]=Yleiset työpöydän työkalut ja sovellukset +Comment[fr]=Outils et applications bureautiques courantes +Comment[gl]=Aplicacións e ferramentas de escritorio comúns +Comment[he]=כלי שולחן עבודה ויישומים כלליים +Comment[hi]=डेस्कटॉप हेतु सामान्य साधन व अनुप्रयोग +Comment[hr]=Uobičajeni alati i pogrami radne površine +Comment[hu]=Általános asztali eszközök és alkalmazások +Comment[hy]=Աշխատասեղանի գործիքներ և հավելվածներ +Comment[hy_AM]=Աշխատասեղանի գործիքներ եւ յաւելուածներ +Comment[hye]=Աշխատասեղանի գործիքներ եւ յաւելուածներ +Comment[id]=Peralatan dan aplikasi desktop umum +Comment[ie]=Trivial utensiles e applicationes +Comment[is]=Algeng forrit og skjáborðstól +Comment[it]=Applicazioni e strumenti comuni per la scrivania +Comment[ja]=一般的なデスクトップツールやアプリケーションです +Comment[ka]=გავრცელებული სამუშაო მაგიდის ხელსაწყოები და პროგრამები +Comment[kab]=Ifecka d yisnasen yettwassnen n uselkim +Comment[kk]=Жұмыс үстелінің қалыпты құралдары +Comment[ko]=공통 데스크톱 도구와 프로그램 +Comment[lt]=Eiliniai darbalaukio įrankiai ir programos +Comment[ms]=Peralatan dan aplikasi destop biasa +Comment[nb]=Vanlige skrivebordsverktøy og programmer +Comment[nl]=Algemene gereedschappen en toepassingen +Comment[nn]=Vanlege program og verktøy for skrivebordet +Comment[oc]=Aisinas e aplicacions buroticas correntas +Comment[pl]=Obejmuje narzędzia i programy użytkowe +Comment[pt]=Ferramentas e aplicações do ambiente de trabalho +Comment[pt_BR]=Ferramentas comuns de área de trabalho e aplicativos +Comment[ro]=Programe și unelte comune pentru desktop +Comment[ru]=Стандартные утилиты и приложения +Comment[sk]=Spoločné nástroje prostredia a aplikácie +Comment[sl]=Skupna namizna orodja in programi +Comment[sq]=Mjete dhe aplikacione të zakonshme desktopi +Comment[sr]=Општи прибор и програми радног окружења +Comment[sv]=Vanliga skrivbordsverktyg och -program +Comment[te]=సాధారణ డెస్క్‌టాప్ సాధనాలు మరియు అనువర్తనాలు +Comment[th]=เครื่องมือและโปรแกรมเดสก์ท็อปทั่วไป +Comment[tr]=Genel masaüstü araçları ve uygulamaları +Comment[ug]=ئورتاق ئىشلىتىلىدىغان ئۈستەلئۈستى قوراللىرى ۋە پروگراممىلىرى +Comment[uk]=Загальні інструменти для стільниці та програм +Comment[uz]=Umumiy ishchi stol vositalari va dasturlari +Comment[uz@Latn]=Umumiy ishchi stol vositalari va dasturlari +Comment[zh_CN]=常用桌面工具和应用程序 +Comment[zh_HK]=常見的桌面工具與應用程式 +Comment[zh_TW]=常用的桌面工具與應用程式 diff --git a/external/packages/blobs/desktop/skel_new/.local/share/dockbarx/log/dockbarx.log b/external/packages/blobs/desktop/skel_new/.local/share/dockbarx/log/dockbarx.log new file mode 100644 index 0000000..79c07bb --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/dockbarx/log/dockbarx.log @@ -0,0 +1,4 @@ +INFO | 2021-10-12 07:06:39,789 | DockbarX 1.0-beta +INFO | 2021-10-12 07:06:39,789 | DockbarX init +INFO | 2021-10-12 07:06:40,142 | DockbarX reload +INFO | 2021-10-12 07:08:17,486 | Executing: thunar diff --git a/external/packages/blobs/desktop/skel_new/.local/share/dockbarx/log/dockbarx.log.1 b/external/packages/blobs/desktop/skel_new/.local/share/dockbarx/log/dockbarx.log.1 new file mode 100644 index 0000000..e69de29 diff --git a/external/packages/blobs/desktop/skel_new/.local/share/keyrings/Default_keyring.keyring b/external/packages/blobs/desktop/skel_new/.local/share/keyrings/Default_keyring.keyring new file mode 100644 index 0000000..81bf348 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/keyrings/Default_keyring.keyring @@ -0,0 +1,6 @@ +[keyring] +display-name=Default keyring +ctime=1473189692 +mtime=0 +lock-on-idle=false +lock-after=false diff --git a/external/packages/blobs/desktop/skel_new/.local/share/keyrings/default b/external/packages/blobs/desktop/skel_new/.local/share/keyrings/default new file mode 100644 index 0000000..5b10037 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/keyrings/default @@ -0,0 +1 @@ +Default_keyring diff --git a/external/packages/blobs/desktop/skel_new/.local/share/recently-used.xbel b/external/packages/blobs/desktop/skel_new/.local/share/recently-used.xbel new file mode 100644 index 0000000..87ddb48 --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.local/share/recently-used.xbel @@ -0,0 +1,20 @@ + + + + Charset: UTF-8 + + + + + Mousepad + + + + + + + + \ No newline at end of file diff --git a/external/packages/blobs/desktop/skel_new/.xscreensaver b/external/packages/blobs/desktop/skel_new/.xscreensaver new file mode 100644 index 0000000..313b13b --- /dev/null +++ b/external/packages/blobs/desktop/skel_new/.xscreensaver @@ -0,0 +1 @@ +mode: off diff --git a/external/packages/blobs/desktop/wallpapers/orangepi-3840x2160.jpg b/external/packages/blobs/desktop/wallpapers/orangepi-3840x2160.jpg deleted file mode 100644 index d972c0a..0000000 Binary files a/external/packages/blobs/desktop/wallpapers/orangepi-3840x2160.jpg and /dev/null differ diff --git a/external/packages/blobs/rockchip/rk322x_ddr3_660MHz_ddr2_330MHz_v1.10.bin b/external/packages/blobs/rockchip/rk322x_ddr3_660MHz_ddr2_330MHz_v1.10.bin new file mode 100755 index 0000000..8cc3850 Binary files /dev/null and b/external/packages/blobs/rockchip/rk322x_ddr3_660MHz_ddr2_330MHz_v1.10.bin differ diff --git a/external/packages/blobs/rockchip/rk322x_ddr_330MHz_v1.10_no2t.bin b/external/packages/blobs/rockchip/rk322x_ddr_330MHz_v1.10_no2t.bin new file mode 100755 index 0000000..65d1f0c Binary files /dev/null and b/external/packages/blobs/rockchip/rk322x_ddr_330MHz_v1.10_no2t.bin differ diff --git a/external/packages/blobs/rockchip/rk322x_tee.bin b/external/packages/blobs/rockchip/rk322x_tee.bin new file mode 100755 index 0000000..ac22c64 Binary files /dev/null and b/external/packages/blobs/rockchip/rk322x_tee.bin differ diff --git a/external/packages/blobs/rockchip/rk3288_boot.bin b/external/packages/blobs/rockchip/rk3288_boot.bin new file mode 100755 index 0000000..af3b711 Binary files /dev/null and b/external/packages/blobs/rockchip/rk3288_boot.bin differ diff --git a/external/packages/blobs/rtl8723bt_fw/rtl8723bs_config-pine64.bin b/external/packages/blobs/rtl8723bt_fw/rtl8723bs_config-pine64.bin new file mode 100755 index 0000000..ad2bc26 Binary files /dev/null and b/external/packages/blobs/rtl8723bt_fw/rtl8723bs_config-pine64.bin differ diff --git a/external/packages/blobs/rtl8723bt_fw/rtl8723bs_config.bin b/external/packages/blobs/rtl8723bt_fw/rtl8723bs_config.bin new file mode 100755 index 0000000..ad2bc26 Binary files /dev/null and b/external/packages/blobs/rtl8723bt_fw/rtl8723bs_config.bin differ diff --git a/external/packages/blobs/rtl8723bt_fw/rtl8723cs_xx_config-pinebook.bin b/external/packages/blobs/rtl8723bt_fw/rtl8723cs_xx_config-pinebook.bin new file mode 100755 index 0000000..0f507ed Binary files /dev/null and b/external/packages/blobs/rtl8723bt_fw/rtl8723cs_xx_config-pinebook.bin differ diff --git a/external/packages/blobs/rtl8723bt_fw/rtl8723cs_xx_fw.bin b/external/packages/blobs/rtl8723bt_fw/rtl8723cs_xx_fw.bin new file mode 100755 index 0000000..d4bebfe Binary files /dev/null and b/external/packages/blobs/rtl8723bt_fw/rtl8723cs_xx_fw.bin differ diff --git a/external/packages/blobs/rtl8723bt_fw/rtl8723d_config.bin b/external/packages/blobs/rtl8723bt_fw/rtl8723d_config.bin new file mode 100755 index 0000000..bb15fcd Binary files /dev/null and b/external/packages/blobs/rtl8723bt_fw/rtl8723d_config.bin differ diff --git a/external/packages/blobs/rtl8723bt_fw/rtl8723d_fw.bin b/external/packages/blobs/rtl8723bt_fw/rtl8723d_fw.bin new file mode 100755 index 0000000..0997fd7 Binary files /dev/null and b/external/packages/blobs/rtl8723bt_fw/rtl8723d_fw.bin differ diff --git a/external/packages/blobs/splash/bootsplash-packer b/external/packages/blobs/splash/bootsplash-packer old mode 100644 new mode 100755 diff --git a/external/packages/blobs/splash/logo-armbian.png b/external/packages/blobs/splash/logo-armbian.png new file mode 100644 index 0000000..23051d7 Binary files /dev/null and b/external/packages/blobs/splash/logo-armbian.png differ diff --git a/external/packages/blobs/splash/logo.png b/external/packages/blobs/splash/logo.png index 23051d7..a41b8b6 100644 Binary files a/external/packages/blobs/splash/logo.png and b/external/packages/blobs/splash/logo.png differ diff --git a/external/packages/blobs/splash/orangepi-wallpaper1.jpeg.jpg b/external/packages/blobs/splash/orangepi-wallpaper1.jpeg.jpg new file mode 100755 index 0000000..fd44f9d Binary files /dev/null and b/external/packages/blobs/splash/orangepi-wallpaper1.jpeg.jpg differ diff --git a/external/packages/blobs/splash/orangepi-wallpaper2.jpeg.jpg b/external/packages/blobs/splash/orangepi-wallpaper2.jpeg.jpg new file mode 100755 index 0000000..a433b84 Binary files /dev/null and b/external/packages/blobs/splash/orangepi-wallpaper2.jpeg.jpg differ diff --git a/external/packages/blobs/sunxi/h616/pulseaudio/default.conf b/external/packages/blobs/sunxi/h616/pulseaudio/default.conf old mode 100644 new mode 100755 diff --git a/external/packages/blobs/sunxi/h616/pulseaudio/default.pa-orangepizero2 b/external/packages/blobs/sunxi/h616/pulseaudio/default.pa-orangepizero2 old mode 100644 new mode 100755 diff --git a/external/packages/blobs/sunxi/h616/pulseaudio/default.pa-orangepizero2-lts b/external/packages/blobs/sunxi/h616/pulseaudio/default.pa-orangepizero2-lts old mode 100644 new mode 100755 diff --git a/external/packages/bsp/common/etc/NetworkManager/dispatcher.d/30-offload b/external/packages/bsp/common/etc/NetworkManager/dispatcher.d/30-offload deleted file mode 100644 index b79d5a6..0000000 --- a/external/packages/bsp/common/etc/NetworkManager/dispatcher.d/30-offload +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -# With offloading enabled, Samba becomes completely useless - transfers to a Windows PC freezes randomly -# Disabling offloading should solve this - all RK3399 - -IFACE=$1 -EVENT=$2 - -if [[ "$EVENT" != "up" ]]; then - exit 1 -fi - -if linux-version compare $(uname -r | cut -d '.' -f1,2) gt 4.4; then - exit 1 -fi - - -ETHTOOL=/sbin/ethtool - -[ -f $ETHTOOL ] || exit 2 -[ -d /sys/devices/platform/fe300000.ethernet/net/$IFACE ] || exit 3 - -$ETHTOOL -K $IFACE rx off tx off -exit 0 diff --git a/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-compress-indexes b/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-compress-indexes index 9dd10cc..ca1c4b0 100644 --- a/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-compress-indexes +++ b/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-compress-indexes @@ -1,2 +1,3 @@ Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz"; +APT::Compressor::gzip::Cost "10"; diff --git a/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-periodic b/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-periodic index 090705e..9bc5214 100644 --- a/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-periodic +++ b/external/packages/bsp/common/etc/apt/apt.conf.d/02-orangepi-periodic @@ -19,4 +19,5 @@ APT::Periodic::AutocleanInterval "120"; // Define basic patterns Unattended-Upgrade::Origins-Pattern { "origin=${distro_id},codename=${distro_codename}"; + "origin=OrangePi"; }; diff --git a/external/packages/bsp/common/etc/cron.daily/orangepi-ram-logging b/external/packages/bsp/common/etc/cron.daily/orangepi-ram-logging index 6ac9116..4dce29e 100644 --- a/external/packages/bsp/common/etc/cron.daily/orangepi-ram-logging +++ b/external/packages/bsp/common/etc/cron.daily/orangepi-ram-logging @@ -1,2 +1,4 @@ #!/bin/sh +# Only run on systems where logrotate is a cron job +systemctl is-active --quiet logrotate.timer && exit 0 /usr/lib/orangepi/orangepi-ramlog write >/dev/null 2>&1 diff --git a/external/packages/bsp/common/etc/default/orangepi-motd.dpkg-dist b/external/packages/bsp/common/etc/default/orangepi-motd.dpkg-dist index 98f3fca..665c698 100644 --- a/external/packages/bsp/common/etc/default/orangepi-motd.dpkg-dist +++ b/external/packages/bsp/common/etc/default/orangepi-motd.dpkg-dist @@ -1,6 +1,20 @@ # add space-separated list of MOTD script names (without number) to exclude them from MOTD # Example: # MOTD_DISABLE="header tips updates" +# ONE_WIRE="yes" show 1-wire temperature sensor if attached +# PRIMARY_DIRECTION="rx" show daily traffic stats, options: "rx", "tx", "both", "off", vnstat needs to be installed MOTD_DISABLE="" -ONE_WIRE="" # yes = show 1-wire temperature sensor if attached +ONE_WIRE="" +HIDE_IP_PATTERN="^dummy0|^lo" +PRIMARY_INTERFACE="$(ls -1 /sys/class/net/ | grep -v lo | egrep "enp|eth" | head -1)" +PRIMARY_DIRECTION="rx" +STORAGE=/dev/sda1 + +# Temperature offset in Celcius degrees +CPU_TEMP_OFFSET=0 + +# Define where red color is used +CPU_TEMP_LIMIT=60 +HDD_TEMP_LIMIT=60 +AMB_TEMP_LIMIT=40 diff --git a/external/packages/bsp/common/etc/default/orangepi-ramlog.dpkg-dist b/external/packages/bsp/common/etc/default/orangepi-ramlog.dpkg-dist index 8711a5f..0c53fdc 100644 --- a/external/packages/bsp/common/etc/default/orangepi-ramlog.dpkg-dist +++ b/external/packages/bsp/common/etc/default/orangepi-ramlog.dpkg-dist @@ -1,7 +1,7 @@ # configuration values for the orangepi-ram-logging service # # enable the orangepi-ram-logging service? -ENABLED=true +ENABLED=false # # size of the tmpfs mount -- please keep in mind to adjust /etc/default/orangepi-zram-config too when increasing SIZE=50M @@ -10,3 +10,15 @@ SIZE=50M # requires rsync installed, may provide better performance # due to copying only new and changed files USE_RSYNC=true + +# If USE_RSYNC is true, additional options may be specified for the rsync +# commands used to synchronize logs to disk from RAM (XTRA_RSYNC_TO) or from +# disk to RAM (XTRA_RSYNC_FROM). These are bash arrays to make specifying +# multiple arguments easy even in the presence of whitespace. +XTRA_RSYNC_TO=( + ## If you use log rotation programs that datestamp their logs (e.g., runit's + ## svlogd or daemontools' multilog), deleting log files while synchronizing is + ## likely a good idea. + # --delete +) +XTRA_RSYNC_FROM=() diff --git a/external/packages/bsp/common/etc/default/orangepi-zram-config.dpkg-dist b/external/packages/bsp/common/etc/default/orangepi-zram-config.dpkg-dist index 1575443..aab2fa6 100644 --- a/external/packages/bsp/common/etc/default/orangepi-zram-config.dpkg-dist +++ b/external/packages/bsp/common/etc/default/orangepi-zram-config.dpkg-dist @@ -1,7 +1,10 @@ # configuration values for the orangepi-zram-config service # # enable the orangepi-zram-config service? -ENABLED=true +ENABLED=false + +# Zram swap enabled by default, unless set to disabled +# SWAP=false # percentage of zram used as swap compared to physically available DRAM. # Huge overcommitment (300) is possible and sometimes desirable. See @@ -28,6 +31,9 @@ ENABLED=true # Which algorithm to choose for zram based /tmp # TMP_ALGORITHM=zstd +# Size for zram based /tmp, total memory / 2 by default +# TMP_SIZE=500M + # If defined a separate partition will be used as zram backing device. Be CAREFUL # which partition you assign and read starting from CONFIG_ZRAM_WRITEBACK in # https://www.kernel.org/doc/Documentation/blockdev/zram.txt diff --git a/external/packages/bsp/common/etc/initramfs-tools/hooks/bootsplash.sh b/external/packages/bsp/common/etc/initramfs-tools/hooks/bootsplash.sh new file mode 100755 index 0000000..04ed2ee --- /dev/null +++ b/external/packages/bsp/common/etc/initramfs-tools/hooks/bootsplash.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Copy splash file to initrd +# +mkdir -p "${DESTDIR}"/lib/firmware +splashfile=/lib/firmware/bootsplash.orangepi + +if [ -f "${splashfile}" ]; then + cp "${splashfile}" "${DESTDIR}"/lib/firmware +fi + +exit 0 diff --git a/external/packages/bsp/common/etc/initramfs/post-update.d/99-uboot b/external/packages/bsp/common/etc/initramfs/post-update.d/99-uboot index 6612531..6a0396f 100755 --- a/external/packages/bsp/common/etc/initramfs/post-update.d/99-uboot +++ b/external/packages/bsp/common/etc/initramfs/post-update.d/99-uboot @@ -7,5 +7,4 @@ tempname="/boot/uInitrd-$1" mkimage -A $INITRD_ARCH -O linux -T ramdisk -C gzip -n uInitrd -d $2 $tempname > /dev/null ln -sf $(basename $tempname) /boot/uInitrd > /dev/null 2>&1 || mv $tempname /boot/uInitrd - exit 0 diff --git a/external/packages/bsp/common/etc/modprobe.d/8189fs.conf b/external/packages/bsp/common/etc/modprobe.d/8189fs.conf new file mode 100755 index 0000000..0456e9b --- /dev/null +++ b/external/packages/bsp/common/etc/modprobe.d/8189fs.conf @@ -0,0 +1 @@ +options 8189fs rtw_power_mgnt=0 rtw_enusbss=0 diff --git a/external/packages/bsp/common/etc/profile.d/orangepi-activate-profile-sync-daemon.sh b/external/packages/bsp/common/etc/profile.d/orangepi-activate-profile-sync-daemon.sh index 50e0dde..9f0b865 100644 --- a/external/packages/bsp/common/etc/profile.d/orangepi-activate-profile-sync-daemon.sh +++ b/external/packages/bsp/common/etc/profile.d/orangepi-activate-profile-sync-daemon.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any diff --git a/external/packages/bsp/common/etc/profile.d/orangepi-check-first-login-reboot.sh b/external/packages/bsp/common/etc/profile.d/orangepi-check-first-login-reboot.sh index 00da0f5..e40b624 100644 --- a/external/packages/bsp/common/etc/profile.d/orangepi-check-first-login-reboot.sh +++ b/external/packages/bsp/common/etc/profile.d/orangepi-check-first-login-reboot.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,8 +8,17 @@ # only do this for interactive shells if [ "$-" != "${-#*i}" ]; then - printf "\n" + OutstandingPackages="$(egrep -v "linux-base|linux-image" /var/run/reboot-required.pkgs 2>/dev/null)" if [ -f "/var/run/.reboot_required" ]; then - printf "[\e[0;91m Kernel was updated, please reboot\x1B[0m ]\n\n" + printf "\n[\e[0;91m Kernel was updated, please reboot\x1B[0m ]\n\n" + elif [ "X${OutstandingPackages}" != "X" ]; then + # No kernel update involved, just regular packages like e.g. dbus require a reboot + Packages="$(egrep -v "linux-base|linux-image" /var/run/reboot-required.pkgs | sort | uniq | tr '\n' ',' | sed -e 's/,/, /g' -e 's/,\ $//')" + OlderThanOneDay=$(find /var/run/reboot-required -mtime +1) + if [ "X${OlderThanOneDay}" = "X" ]; then + printf "\n[\e[0;92m some packages require a reboot (${Packages})\x1B[0m ]\n\n" + else + printf "\n[\e[0;91m some packages require a reboot since more than 1 day (${Packages})\x1B[0m ]\n\n" + fi fi fi \ No newline at end of file diff --git a/external/packages/bsp/common/etc/profile.d/orangepi-ssh-title.sh b/external/packages/bsp/common/etc/profile.d/orangepi-ssh-title.sh index 5fb0350..c3b1822 100644 --- a/external/packages/bsp/common/etc/profile.d/orangepi-ssh-title.sh +++ b/external/packages/bsp/common/etc/profile.d/orangepi-ssh-title.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any diff --git a/external/packages/bsp/common/etc/skel/.config/htop/htoprc b/external/packages/bsp/common/etc/skel/.config/htop/htoprc index 4aa673f..3622c61 100644 --- a/external/packages/bsp/common/etc/skel/.config/htop/htoprc +++ b/external/packages/bsp/common/etc/skel/.config/htop/htoprc @@ -20,10 +20,10 @@ update_process_names=0 account_guest_in_cpu_meter=0 color_scheme=0 delay=15 -left_meters=AllCPUs Memory Swap CpuTemp -left_meter_modes=1 1 1 2 -right_meters=OrangePiversion Hostname Tasks LoadAverage Uptime CpuFreq Eth0 Eth0stat -right_meter_modes=2 2 2 2 2 2 2 2 +left_meters=AllCPUs Memory Swap CpuFreq CpuTemp +left_meter_modes=1 1 1 2 2 +right_meters=OSversion Hostname Tasks LoadAverage Uptime +right_meter_modes=2 2 2 2 2 # SBC hardware and Kernel specific path. # Editable manually. BoardName= diff --git a/external/packages/bsp/common/etc/udev/rules.d/50-usb-realtek-net.rules b/external/packages/bsp/common/etc/udev/rules.d/50-usb-realtek-net.rules new file mode 100755 index 0000000..5c8840e --- /dev/null +++ b/external/packages/bsp/common/etc/udev/rules.d/50-usb-realtek-net.rules @@ -0,0 +1,42 @@ +# This is used to change the default configuration of Realtek USB ethernet adapters + +ACTION!="add", GOTO="usb_realtek_net_end" +SUBSYSTEM!="usb", GOTO="usb_realtek_net_end" +ENV{DEVTYPE}!="usb_device", GOTO="usb_realtek_net_end" + +# Modify this to change the default value +ENV{REALTEK_NIC_MODE}="1" + +# Realtek +ATTR{idVendor}=="0bda", ATTR{idProduct}=="8156", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="0bda", ATTR{idProduct}=="8155", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="0bda", ATTR{idProduct}=="8153", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="0bda", ATTR{idProduct}=="8152", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" + +# Samsung +ATTR{idVendor}=="04e8", ATTR{idProduct}=="a101", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" + +# Lenovo +ATTR{idVendor}=="17ef", ATTR{idProduct}=="304f", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="3052", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="3054", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="3057", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="3082", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="7205", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="720a", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="720b", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="720c", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="721e", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="a359", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" +ATTR{idVendor}=="17ef", ATTR{idProduct}=="a387", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" + +# TP-LINK +ATTR{idVendor}=="2357", ATTR{idProduct}=="0601", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" + +# Nvidia +ATTR{idVendor}=="0955", ATTR{idProduct}=="09ff", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" + +# LINKSYS +ATTR{idVendor}=="13b1", ATTR{idProduct}=="0041", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}" + +LABEL="usb_realtek_net_end" diff --git a/external/packages/bsp/common/etc/update-motd.d/10-orangepi-header b/external/packages/bsp/common/etc/update-motd.d/10-orangepi-header index 3ba16a4..49f10ed 100755 --- a/external/packages/bsp/common/etc/update-motd.d/10-orangepi-header +++ b/external/packages/bsp/common/etc/update-motd.d/10-orangepi-header @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -23,4 +23,4 @@ done KERNELID=$(uname -r) TERM=linux toilet -f standard -F metal $(echo $BOARD_NAME | sed 's/Orange Pi/OPi/') -echo -e "Welcome to \e[0;91mOrange Pi \x1B[0m$(if [[ $ID == debian ]]; then echo ${PRETTY_NAME##*\(} | sed -e 's/^.*Linux //' | sed "s/\/.*//" | sed 's|)||'; else echo -n ${VERSION_CODENAME^};fi) with \e[0;91mLinux $KERNELID\x1B[0m\n" +echo -e "Welcome to \e[0;91mOrange Pi ${VERSION} ${DISTRIBUTION_CODENAME^}\x1B[0m with $([[ $BRANCH == edge ]] && echo -e "\e[0;91mbleeding\x1B[0m edge " )\e[0;91mLinux $KERNELID\x1B[0m\n" diff --git a/external/packages/bsp/common/etc/update-motd.d/30-orangepi-sysinfo b/external/packages/bsp/common/etc/update-motd.d/30-orangepi-sysinfo index c2e55f9..c70d83c 100755 --- a/external/packages/bsp/common/etc/update-motd.d/30-orangepi-sysinfo +++ b/external/packages/bsp/common/etc/update-motd.d/30-orangepi-sysinfo @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -11,13 +11,19 @@ # generate system information export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - THIS_SCRIPT="sysinfo" -MOTD_DISABLE="" -STORAGE=/dev/sda1 -SHOW_IP_PATTERN="^bond.*|^[ewr].*|^br.*|^lt.*|^umts.*|^lan.*" -CPU_TEMP_LIMIT=45 +# don't change default values - they are lost on upgrades. Use /etc/default/orangepi-motd for your values + +MOTD_DISABLE="" +PRIMARY_INTERFACE="eth0" +PRIMARY_DIRECTION="rx" +STORAGE=/dev/sda1 +HIDE_IP_PATTERN="^dummy0|^lo" +CPU_TEMP_LIMIT=60 +# Temperature offset in Celcius degrees +CPU_TEMP_OFFSET=0 +HDD_TEMP_LIMIT=60 AMB_TEMP_LIMIT=40 [[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd @@ -33,10 +39,10 @@ function display() { # battery red color is opposite, lower number if [[ "$1" == "Battery" ]]; then local great="<"; else local great=">"; fi if [[ -n "$2" && "$2" > "0" && (( "${2%.*}" -ge "$4" )) ]]; then - printf "%-14s%s" "$1:" + printf "%-14s" "$1:" if awk "BEGIN{exit ! ($2 $great $3)}"; then echo -ne "\e[0;91m $2"; else echo -ne "\e[0;92m $2"; fi - printf "%-1s%s\x1B[0m" "$5" - printf "%-11s%s\t" "$6" + printf "%-1s\x1B[0m" "$5" + printf "%-11s\t" "$6" return 1 fi } # display @@ -54,6 +60,8 @@ function getboardtemp() { # fallback to PMIC temperature board_temp=$(awk '{printf("%d",$1/1000)}' /dev/null + read raw_temp < ${W1_DIR}${device}/hwmon/$(ls -1 ${W1_DIR}${device}/hwmon)/temp1_input 2>/dev/null amb_temp=$(awk '{printf("%d",$1/1000)}' <<<${raw_temp}) echo $amb_temp fi @@ -123,20 +130,15 @@ function ambienttemp() { fi } # ambienttemp -#function get_ip_addresses() { -# # return up to 2 IPv4 address(es) comma separated -# hostname -I | tr " " "\n" | \ -# grep -E "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" | \ -# tail -n2 | sed ':a;N;$!ba;s/\n/,/g' -#} # get_ip_addresses - function get_ip_addresses() { local ips=() for f in /sys/class/net/*; do local intf=$(basename $f) - # match only interface names starting with e (Ethernet), br (bridge), w (wireless), r (some Ralink drivers use ra format) - if [[ $intf =~ $SHOW_IP_PATTERN ]]; then - local tmp=$(ip -4 addr show dev $intf | awk '/inet/ {print $2}' | cut -d'/' -f1) + # match only interface names "dummy0" and "lo" + if [[ $intf =~ $HIDE_IP_PATTERN ]]; then + continue + else + local tmp=$(ip -4 addr show dev $intf | grep -v "$intf:avahi" | awk '/inet/ {print $2}' | cut -d'/' -f1) # add both name and IP - can be informative but becomes ugly with long persistent/predictable device names #[[ -n $tmp ]] && ips+=("$intf: $tmp") # add IP only @@ -155,9 +157,15 @@ function storage_info() { if [[ -n "${StorageInfo}" && ${RootInfo} != *$STORAGE* ]]; then storage_usage=$(awk '/\// {print $(NF-1)}' <<<${StorageInfo} | sed 's/%//g') storage_total=$(awk '/\// {print $(NF-4)}' <<<${StorageInfo}) + if [[ -n "$(command -v smartctl)" ]]; then + DISK="${STORAGE::-1}" + storage_temp+=$(smartctl -l scttempsts $DISK 2> /dev/null | grep -i 'Current Temperature:' | awk '{print $(NF-1)}') + fi fi } # storage_info + + # query various systems and send some stuff to the background for overall faster execution. # Works only with ambienttemp and batteryinfo since A20 is slow enough :) amb_temp=$(ambienttemp &) @@ -165,7 +173,7 @@ ip_address=$(get_ip_addresses &) batteryinfo storage_info getboardtemp -critical_load=$(( 1 + $(grep -c processor /proc/cpuinfo) / 2 )) +critical_load=80 # get uptime, logged in users and load in one take UPTIME=$(LC_ALL=C uptime) @@ -175,33 +183,102 @@ users=${UPT2//*','} users=${users//' '} time=${UPT2%','*} time=${time//','} +time=$(echo $time | xargs) load=${UPTIME#*'load average: '} load=${load//','} +load=$(echo $load | cut -d" " -f1) +[[ $load == 0.0* ]] && load=0.10 +cpucount=$(grep -c processor /proc/cpuinfo) + +load=$(awk '{printf("%.0f",($1/$2) * 100)}' <<< "$load $cpucount") # memory and swap mem_info=$(LC_ALL=C free -w 2>/dev/null | grep "^Mem" || LC_ALL=C free | grep "^Mem") memory_usage=$(awk '{printf("%.0f",(($2-($4+$6+$7))/$2) * 100)}' <<<${mem_info}) -memory_total=$(awk '{printf("%d",$2/1024)}' <<<${mem_info}) +mem_info=$(echo $mem_info | awk '{print $2}') +memory_total=$(( mem_info / 1024 )) swap_info=$(LC_ALL=C free -m | grep "^Swap") swap_usage=$( (awk '/Swap/ { printf("%3.0f", $3/$2*100) }' <<<${swap_info} 2>/dev/null || echo 0) | tr -c -d '[:digit:]') swap_total=$(awk '{print $(2)}' <<<${swap_info}) # display info -display "System load" "${load%% *}" "${critical_load}" "0" "" "${load#* }" -printf "Up time: \x1B[92m%s\x1B[0m\t\t" "$time" +display "System load" "${load%% *}" "${critical_load}" "0" "%" "" + +printf "Up time: \x1B[92m%s\x1B[0m\t" "$time" display "Local users" "${users##* }" "3" "2" "" echo "" # fixed newline -display "Memory usage" "$memory_usage" "70" "0" " %" " of ${memory_total}MB" -display "Zram usage" "$swap_usage" "75" "0" " %" " of $swap_total""Mb" -printf "IP: " +if [[ ${memory_total} -gt 1000 ]]; then + memory_total=$(awk '{printf("%.2f",$1/1024)}' <<<${memory_total})"G" +else + memory_total+="M" +fi + +if [[ ${swap_total} -gt 500 ]]; then + swap_total=$(awk '{printf("%.2f",$1/1024)}' <<<${swap_total})"G" +else + swap_total+="M" +fi + +display "Memory usage" "$memory_usage" "70" "0" "%" " of ${memory_total}" +display "Zram usage" "$swap_usage" "75" "0" "%" " of ${swap_total}" +printf "IP: " printf "\x1B[92m%s\x1B[0m" "$ip_address" echo "" # fixed newline -a=0;b=0;c=0 -display "CPU temp" "$board_temp" $CPU_TEMP_LIMIT "0" "°C" "" ; a=$? -display "Ambient temp" "$amb_temp" $AMB_TEMP_LIMIT "0" "°C" "" ; b=$? -(( ($a+$b) >0 )) && echo "" # new line only if some value is displayed +display "CPU temp" "$board_temp" $CPU_TEMP_LIMIT "0" "°C" "" +display "Ambient temp" "$amb_temp" $AMB_TEMP_LIMIT "0" "°C" "" display "Usage of /" "$root_usage" "90" "1" "%" " of $root_total" -display "storage/" "$storage_usage" "90" "1" "%" " of $storage_total" -display "Battery" "$battery_percent" "20" "1" "%" "$status_battery_text" -echo "" +echo "" # fixed newline +a=0 +display "storage/" "$storage_usage" "90" "1" "%" " of $storage_total" ; a=$((a+$?)) +display "storage temp" "$storage_temp" $HDD_TEMP_LIMIT "0" "°C" "" ; a=$((a+$?)) +display "Battery" "$battery_percent" "20" "1" "%" "$status_battery_text" ; a=$((a+$?)) +(( $a > 0 )) && echo "" # new line only if some value is displayed + +# Check whether PRIMARY_INTERFACE exist in /var/lib/vnstat/ +PRIMARY_INTERFACE=$(comm -12 <(ls -1 /var/lib/vnstat/ 2> /dev/null) <(echo "$PRIMARY_INTERFACE" | sed 's/+/\n/g') | sed -n -e 'H;${x;s/\n/+/g;s/^+//;p;}') + +line=0 +if [[ $(command -v vnstat) && -n $PRIMARY_INTERFACE ]]; then + traffic=$(vnstat -i $PRIMARY_INTERFACE --oneline | cut -d";" -f4,5) + traffic_rx=$(echo $traffic | cut -d";" -f1,1 | sed -r 's/([0-9]+\.[0-9]{1})[0-9]*/\1/') + traffic_tx=$(echo $traffic | cut -d";" -f2,2 | sed -r 's/([0-9]+\.[0-9]{1})[0-9]*/\1/') + [[ "$traffic" == *"Not enough"* ]] && { traffic_tx="n/a "; traffic_rx="n/a "; } + case $PRIMARY_DIRECTION in + tx) + printf "TX today: \x1B[92m%s\x1B[0m \t" "$traffic_tx" + line=$((line+1)) + ;; + rx) + printf "RX today: \x1B[92m%s\x1B[0m \t" "$traffic_rx" + line=$((line+1)) + ;; + both) + printf "TX today: \x1B[92m%s\x1B[0m \t" "$traffic_tx" + printf "RX today: \x1B[92m%s\x1B[0m \t" "$traffic_rx" + line=$((line+1)) + ;; + *) #off or whatever + ;; + esac +fi + +if [[ $(command -v zpool) ]]; then + zpoolstatus="$(zpool status &1 )" + if [[ -n $(echo $zpoolstatus | grep 'not loaded') ]]; then + : + elif [[ -n $(echo $zpoolstatus | grep 'degraded\|OFFLINE') ]]; then + printf "ZFS pool: " + echo -ne "\e[0;91mDegraded\x1B[0m" + line=$((line+1)) + elif [[ -n $(echo $zpoolstatus | grep 'no pools available') ]]; then + printf "ZFS pool: " + echo -ne "n/a" + line=$((line+1)) + else + printf "ZFS pool: " + echo -ne "\e[0;92mOnline\x1B[0m" + line=$((line+1)) + fi +fi +[[ $line -ne 0 ]] && echo "" echo "" diff --git a/external/packages/bsp/common/etc/update-motd.d/35-orangepi-tips b/external/packages/bsp/common/etc/update-motd.d/35-orangepi-tips new file mode 100755 index 0000000..f420d84 --- /dev/null +++ b/external/packages/bsp/common/etc/update-motd.d/35-orangepi-tips @@ -0,0 +1,26 @@ +#!/bin/bash +# +# Copyright (c) Authors: https://www.armbian.com/authors +# +# This file is licensed under the terms of the GNU General Public +# License version 2. This program is licensed "as is" without any +# warranty of any kind, whether express or implied. + +# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd +# any changes will be lost on board support package update + +THIS_SCRIPT="tips" +MOTD_DISABLE="" + +[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd + +for f in $MOTD_DISABLE; do + [[ $f == $THIS_SCRIPT ]] && exit 0 +done + +quotes="/etc/update-motd.d/quotes.txt" +if [[ -f $quotes ]]; then + random_line=$(shuf -i 1-$(wc -l < $quotes) -n 1) + quote=$(sed -n -e "$random_line"p $quotes) + [[ -n $quote ]] && echo -e "\e[93mTip of the day:\e[39m $quote\n" +fi diff --git a/external/packages/bsp/common/etc/update-motd.d/40-orangepi-updates b/external/packages/bsp/common/etc/update-motd.d/40-orangepi-updates new file mode 100755 index 0000000..24e7a8e --- /dev/null +++ b/external/packages/bsp/common/etc/update-motd.d/40-orangepi-updates @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright (c) Authors: https://www.armbian.com/authors +# +# This file is licensed under the terms of the GNU General Public +# License version 2. This program is licensed "as is" without any +# warranty of any kind, whether express or implied. + +# DO NOT EDIT THIS FILE but add config options to /etc/default/orangepi-motd +# any changes will be lost on board support package update + +THIS_SCRIPT="updates" +MOTD_DISABLE="" + +[[ -f /etc/default/orangepi-motd ]] && . /etc/default/orangepi-motd + +for f in $MOTD_DISABLE; do + [[ $f == $THIS_SCRIPT ]] && exit 0 +done + +NUM_UPDATES=0 + +[[ -f /var/cache/apt/archives/updates.number ]] && . /var/cache/apt/archives/updates.number + +if [[ $NUM_UPDATES -gt 0 ]]; then + echo -e "[\e[31m $NUM_SECURITY_UPDATES security updates available, $NUM_UPDATES updates total\e[0m: \e[1mapt upgrade\e[0m ]" + echo -e "Last check: \e[92m$DATE\e[0m" + echo +fi diff --git a/external/packages/bsp/common/etc/update-motd.d/41-orangepi-config b/external/packages/bsp/common/etc/update-motd.d/41-orangepi-config index 2b57b53..26ae34e 100755 --- a/external/packages/bsp/common/etc/update-motd.d/41-orangepi-config +++ b/external/packages/bsp/common/etc/update-motd.d/41-orangepi-config @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any diff --git a/external/packages/bsp/common/etc/update-motd.d/98-armbian-autoreboot-warn b/external/packages/bsp/common/etc/update-motd.d/98-orangepi-autoreboot-warn similarity index 89% rename from external/packages/bsp/common/etc/update-motd.d/98-armbian-autoreboot-warn rename to external/packages/bsp/common/etc/update-motd.d/98-orangepi-autoreboot-warn index cbdba3a..2e6036f 100755 --- a/external/packages/bsp/common/etc/update-motd.d/98-armbian-autoreboot-warn +++ b/external/packages/bsp/common/etc/update-motd.d/98-orangepi-autoreboot-warn @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any diff --git a/external/packages/bsp/common/lib/systemd/system/orangepi-disable-autologin.service b/external/packages/bsp/common/lib/systemd/system/orangepi-disable-autologin.service new file mode 100755 index 0000000..02dc71a --- /dev/null +++ b/external/packages/bsp/common/lib/systemd/system/orangepi-disable-autologin.service @@ -0,0 +1,8 @@ +[Unit] +Description=Disable automated desktop login + +[Service] +Type=simple +ExecStart=rm -f /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf +TimeoutStopSec= 10 +ExecStop=systemctl disable orangepi-disable-autologin.timer diff --git a/external/packages/bsp/common/lib/systemd/system/orangepi-disable-autologin.timer b/external/packages/bsp/common/lib/systemd/system/orangepi-disable-autologin.timer new file mode 100755 index 0000000..14eda7e --- /dev/null +++ b/external/packages/bsp/common/lib/systemd/system/orangepi-disable-autologin.timer @@ -0,0 +1,8 @@ +[Unit] +Description=Disable automated desktop login + +[Timer] +OnActiveSec=2min + +[Install] +WantedBy=timers.target diff --git a/external/packages/bsp/common/lib/systemd/system/orangepi-firstrun-config.service b/external/packages/bsp/common/lib/systemd/system/orangepi-firstrun-config.service index 383b49e..040bcd4 100644 --- a/external/packages/bsp/common/lib/systemd/system/orangepi-firstrun-config.service +++ b/external/packages/bsp/common/lib/systemd/system/orangepi-firstrun-config.service @@ -9,7 +9,7 @@ ConditionPathExists=/boot/orangepi_first_run.txt ConditionPathExists=/root/.not_logged_in_yet [Service] -Type=oneshot +Type=idle RemainAfterExit=yes ExecStart=/usr/lib/orangepi/orangepi-firstrun-config TimeoutStartSec=2min diff --git a/external/packages/bsp/common/usr/bin/orangepimonitor b/external/packages/bsp/common/usr/bin/orangepimonitor index f0d77b9..968dfcb 100755 --- a/external/packages/bsp/common/usr/bin/orangepimonitor +++ b/external/packages/bsp/common/usr/bin/orangepimonitor @@ -1071,26 +1071,26 @@ NetworkMonitorMode() { # Allow orangepimonitor to return back to orangepi-config trap "echo ; exit 0" 0 1 2 3 15 - timerStart - kickAllStatsDown # Count interfaces - multiple routes causing interfaces to show up more than once, filtering... - ifacecount=$(route -n | egrep UG | egrep -o "[a-zA-Z0-9]*$" | sort | uniq) + ifacecount=$(route -n | egrep UG | egrep -o '[^ ]*$' | sort | uniq) # If there are two ore more interfaces detected open a dynamic dialog box to select which to monitor if [ "$(echo -e $ifacecount | tr ' ' '\n' | wc -l)" -gt 1 ]; then - ifacemenu=$(route -n | egrep UG | egrep -o "[a-zA-Z0-9]*$" | sort | uniq | awk '{a[$1]=$1}END{for(i in a)printf i" "a[i]" "}') + ifacemenu=$(route -n | egrep UG | egrep -o '[^ ]*$' | sort | uniq | awk '{a[$1]=$1}END{for(i in a)printf i" "a[i]" "}') ifacefunc() { dialog --backtitle "Interface selector" \ --title "Multiple network interfaces detected" \ --menu "Choose which interface to monitor:" \ - 15 50 $(route -n | egrep UG | egrep -o "[a-zA-Z0-9]*$" | sort | uniq | wc -l) \ + 15 50 $(route -n | egrep UG | egrep -o '[^ ]*$' | sort | uniq | wc -l) \ $(echo $ifacemenu) 2>&1 >$(tty) } iface=$(ifacefunc) else # Use default behavior if one interface is found only - iface=$(route -n | egrep UG | egrep -o "[a-zA-Z0-9]*$") + iface=$(route -n | egrep UG | egrep -o '[^ ]*$') fi + timerStart + kickAllStatsDown printf "\nruntime network statistics: $(uname -n)\n" printf "network interface: $(echo $iface)\n" diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-apt-updates b/external/packages/bsp/common/usr/lib/orangepi/orangepi-apt-updates index ec6b96f..d379c56 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-apt-updates +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-apt-updates @@ -28,7 +28,10 @@ else fi # give up if packages are broken -[[ ! $(dpkg -l | grep ^..r) ]] && exit 0 +[[ $(dpkg -l | grep ^..r) ]] && exit 0 + +# give up if there is a dependency problem +[[ "$((apt-get upgrade -s -qq) 2>&1)" == *"Unmet dependencies"* ]] && exit 0 myfile="/var/cache/apt/archives/updates.number" diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-audio-config b/external/packages/bsp/common/usr/lib/orangepi/orangepi-audio-config new file mode 100755 index 0000000..2949cec --- /dev/null +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-audio-config @@ -0,0 +1,164 @@ +#!/bin/sh + + +mixer() { + parm=${4:-on} + amixer -c "$1" sset "$2" "$3" $parm >/dev/null 2>&1 + amixer -c "$1" sset "$2" $parm >/dev/null 2>&1 +} + + +if [ -f $HOME/.config/sound.conf ]; then + + alsactl restore -f $HOME/.config/sound.conf + +else + +# get card num +#card=`echo $1 | sed 's/[^0-9]*//g'` +card1=`aplay -l | grep "device 0" | awk '{print $3}'` +#echo $card + +for card in $card1 +do + +#echo $card + +# set common mixer params + mixer $card Master 0db + mixer $card Front 100% + mixer $card PCM 0db + mixer $card Synth 100% + +# mute CD, since using digital audio instead + mixer $card CD 0% mute + +# Only unmute Line and Aux if they are possibly used. +# mixer $card Line 100% +# mixer $card Aux 100% + +# mute mic + mixer $card Mic 0% mute + +# ESS 1969 chipset has 2 PCM channels + mixer $card PCM,1 100% + +# Trident/YMFPCI/emu10k1 + mixer $card Wave 100% + mixer $card Music 100% + mixer $card AC97 100% + mixer $card Surround 90% + mixer $card 'Surround Digital' 90% + mixer $card 'Wave Surround' 90% + mixer $card 'Duplicate Front' 90% + mixer $card 'Sigmatel 4-Speaker Stereo' 90% + +# CS4237B chipset: + mixer $card 'Master Digital' 100% + +# DRC + mixer $card 'Dynamic Range Compression' 90% + +# Envy24 chips with analog outs + mixer $card DAC 100% + mixer $card DAC,0 100% + mixer $card DAC,1 100% + +# some notebooks use headphone instead of master + mixer $card Headphone 100% + mixer $card Speaker 100% + mixer $card 'Internal Speaker' 0% mute + mixer $card Playback 100% + mixer $card Headphone 100% + mixer $card Speaker 100% + mixer $card Center 100% + mixer $card LFE 100% + mixer $card Center/LFE 100% + +# Intel P4P800-MX (Ubuntu bug #5813) + mixer $card 'Master Playback Switch' on + +# set digital output mixer params + mixer $card 'IEC958' 100% on + mixer $card 'IEC958 Output' 100% + mixer $card 'IEC958 Coaxial' 100% + mixer $card 'IEC958 LiveDrive' 100% + mixer $card 'IEC958 Optical Raw' 100% + mixer $card 'SPDIF Out' 100% + mixer $card 'SPDIF Front' 100% + mixer $card 'SPDIF Rear' 100% + mixer $card 'SPDIF Center/LFE' 100% + mixer $card 'Master Digital' 100% + + mixer $card 'Analog Front' 100% + mixer $card 'Analog Rear' 100% + mixer $card 'Analog Center/LFE' 100% + +# ASRock ION 330 (and perhaps others) has 2 IEC958 channels + mixer $card IEC958,0 on + mixer $card IEC958,1 on + +# some ION2 has much more IEC958 channels ... + mixer $card IEC958,2 on + mixer $card IEC958,3 on + +# ASRock ION 330 has Master Front set to 0 + mixer $card 'Master Front' 100% + +# Shuttle XS35GT needs this too + mixer $card 'Master',0 100% on + +# and this for various Fusion devices like Zotac ZBOX + mixer $card 'Front',0 100% on + +# NVidia CK804 sound devices + mixer $card 'IEC958 Playback AC97-SPSA' 100% + +# Allwinner H3 Analog + mixer $card 'Line Out' 0db on + +# Allwinner A20 Analog + mixer $card 'Power Amplifier' 0db + mixer $card 'Power Amplifier DAC' on + mixer $card 'Power Amplifier Mute' on + +# Allwinner A64 Analog + mixer $card Headphone 0db on + mixer $card 'AIF1 Slot 0 Digital DAC' on + +# Amlogic G12 HDMI to PCM0 + mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 1' + mixer $card 'FRDDR_A SRC 1 EN' on + mixer $card 'TDMOUT_B SRC SEL' 'IN 0' + mixer $card 'TOHDMITX I2S SRC' 'I2S B' + mixer $card 'TOHDMITX' on + +# Amlogic G12 S/PDIF to PCM1 + mixer $card 'FRDDR_B SINK 1 SEL' 'OUT 3' + mixer $card 'FRDDR_B SRC 1 EN' on + mixer $card 'SPDIFOUT SRC SEL' 'IN 1' + mixer $card 'SPDIFOUT Playback' on + +# Amlogic GX HDMI and S/PDIF + mixer $card 'AIU HDMI CTRL SRC' 'I2S' + mixer $card 'AIU SPDIF SRC SEL' 'SPDIF' + +# RockPI 4B Analog + mixer $card 'Right Headphone Mixer Right DAC' on + mixer $card 'Left Headphone Mixer Left DAC' on + +# NanoPC T4 Analog + mixer $card 'HPO L' on + mixer $card 'HPO R' on + mixer $card 'HPOVOL L' on + mixer $card 'HPOVOL R' on + mixer $card 'HPO MIX HPVOL' on + mixer $card 'OUT MIXL DAC L1' on + mixer $card 'OUT MIXR DAC R1' on + mixer $card 'Stereo DAC MIXL DAC L1' on + mixer $card 'Stereo DAC MIXR DAC R1' on + +done + +fi + diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-common b/external/packages/bsp/common/usr/lib/orangepi/orangepi-common index c1cab5b..add5e17 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-common +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-common @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -34,19 +34,27 @@ MACADDR=$(printf ${prefixes[$random]}':%02X:%02X:%02X:%02X:%02X\n' $[RANDOM%256] # set fixed IP address from first randomly assigned one. If nothing is deteceted, generate one. set_fixed_mac () { + if [ -n "$(command -v nmcli)" ]; then + CONNECTION="$(nmcli -f UUID,ACTIVE,DEVICE,TYPE connection show --active | tail -n1)" + UUID=$(awk -F" " '/ethernet/ {print $1}' <<< "${CONNECTION}") + DEVNAME=$(awk -F" " '/ethernet/ {print $3}' <<< "${CONNECTION}") + else + DEVNAME=eth0 + fi -CONNECTION="$(nmcli -f UUID,ACTIVE,DEVICE,TYPE connection show --active | tail -n1)" -UUID=$(awk -F" " '/ethernet/ {print $1}' <<< "${CONNECTION}") -DEVNAME=$(awk -F" " '/ethernet/ {print $3}' <<< "${CONNECTION}") -MACADDR=$(/sbin/ip link | grep -A1 ${DEVNAME} | awk -F" " '/ether / {print $2}') + MACADDR=$(/sbin/ip link | grep -A1 ${DEVNAME} | awk -F" " '/ether / {print $2}') -[[ -z $MACADDR ]] && get_random_mac + [[ -z $MACADDR ]] && get_random_mac -if [[ -n $UUID ]]; then - nmcli connection modify $UUID ethernet.cloned-mac-address $MACADDR - nmcli connection modify $UUID -ethernet.mac-address "" - nmcli connection down $UUID >/dev/null 2>&1 - nmcli connection up $UUID >/dev/null 2>&1 + if [[ -n "$(command -v nmcli)" && -n $UUID ]]; then + nmcli connection modify $UUID ethernet.cloned-mac-address $MACADDR + nmcli connection modify $UUID -ethernet.mac-address "" + nmcli connection down $UUID >/dev/null 2>&1 + nmcli connection up $UUID >/dev/null 2>&1 + elif [[ -f /etc/systemd/network/$DEVNAME.network ]]; then + if ! grep '^ *MACAddress=' /etc/systemd/network/$DEVNAME.network > /dev/null; then + sed -i "s/#MACAddress=/MACAddress=$MACADDR/g" /etc/systemd/network/$DEVNAME.network + fi + fi return 0 -fi } # set fixed mac to the 1st active network adapter diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstlogin b/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstlogin index 66ff680..388dee0 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstlogin +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstlogin @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,100 +8,200 @@ . /etc/orangepi-release + check_abort() { + echo -e "\nDisabling user account creation procedure\n" rm -f /root/.not_logged_in_yet + if [[ ${USER_SHELL} == zsh ]]; then + printf "\nYou selected \e[0;91mZSH\x1B[0m as your default shell. If you want to use it right away, please logout and login! \n\n" + fi trap - INT exit 0 + } -function read_password() +read_password() { -unset password -prompt="$1 password: " -while IFS= read -p "$prompt" -r -s -n 1 char -do - if [[ $char == $'\0' ]] - then - break - fi - prompt='*' - password+="$char" -done + + unset password + unset charcount + prompt="$1 password: " + + stty -echo + + charcount=0 + while IFS= read -p "$prompt" -r -s -n 1 char + do + if [[ $char == $'\0' ]] + then + break + fi + + # Handle backspace + if [[ $char == $'\177' ]] + then + if [ $charcount -gt 0 ] + then + charcount=$((charcount-1)) + prompt=$'\b \b' + password="${password%?}" + else + prompt='' + fi + else + charcount=$((charcount+1)) + prompt='*' + password+="$char" + fi + done + + stty echo + } +set_shell() +{ + + optionsAudits=($(cat /etc/shells | grep "zsh\|/bash" | sed 's/\/bin\///g' | sed 's/\/usr//g' | uniq)) + USER_SHELL="bash" + + if [[ "${#optionsAudits[@]}" -gt 1 ]]; then + while : + do + i=1 + echo -e "\nChoose default system command shell:\n" + for o in "${optionsAudits[@]}"; do + echo "$i) $o" + let i++ + done + read -n1 -s reply + case $reply in + "1"|"${optionsAudits[0]}") USER_SHELL="${optionsAudits[0]}"; break;; + "2"|"${optionsAudits[1]}") USER_SHELL="${optionsAudits[1]}"; break;; + *) USER_SHELL="${optionsAudits[0]}"; break;; + esac + done + fi + SHELL_PATH=$(grep /$USER_SHELL$ /etc/shells | tail -1) + + chsh -s $(grep -iF "/$USER_SHELL" /etc/shells | tail -1) + echo -e "\nShell: \x1B[92m${USER_SHELL^^}\x1B[0m" + + # change shell for future users + sed -i "s|^SHELL=.*|SHELL=${SHELL_PATH}|" /etc/default/useradd + sed -i "s|^DSHELL=.*|DSHELL=${SHELL_PATH}|" /etc/adduser.conf + +} + set_timezone_and_locales() { # Grab this machine's public IP address PUBLIC_IP=`curl --max-time 5 -s https://ipinfo.io/ip` - if [ $? -eq 0 ]; then - # Call the geolocation API and capture the output - RES=$( - curl --max-time 5 -s http://ipwhois.app/json/${PUBLIC_IP} | \ - jq '.timezone, .country, .country_code' | \ - while read -r TIMEZONE; do - read -r COUNTRY - echo "${TIMEZONE},${COUNTRY},${COUNTRYCODE}" | tr --delete \" - done - ) + # Check if we have wireless adaptor + WIFI_DEVICE=$(LC_ALL=C nmcli dev status | grep " wifi " 2>/dev/null) - TZDATA=$(echo ${RES} | cut -d"," -f1) - STATE=$(echo ${RES} | cut -d"," -f2) - LOCALES=$(grep territory /usr/share/i18n/locales/* | grep "$STATE" | cut -d ":" -f 1 | cut -d "/" -f 6 | xargs -I{} grep {} /usr/share/i18n/SUPPORTED | grep "\.UTF-8" | cut -d " " -f 1) - CCODE=$(echo ${RES} | cut -d"," -f3 | awk '{print tolower($0)}' | xargs) - options=(`echo ${LOCALES}`); + if [ -z "$PUBLIC_IP" ]; then + + # ask for connecting to wireless if wifi device is found + if [[ -n "$WIFI_DEVICE" ]]; then + echo -e "Internet connection was \x1B[91mnot detected\x1B[0m." + echo "" + read -n1 -s -r -p "Connect via wireless? [Y/n] " response + echo "" + if [[ "${response}" =~ ^(Y|y|"")$ ]]; then + nmtui-connect + fi + echo "" + fi + fi + + # Grab IP once again if not found + [[ -z "$PUBLIC_IP" && -n "$WIFI_DEVICE" ]] && PUBLIC_IP=`curl --max-time 5 -s https://ipinfo.io/ip` + + # Call the geolocation API and capture the output + RES=$( + curl --max-time 5 -s http://ipwhois.app/json/${PUBLIC_IP} | \ + jq '.timezone, .country, .country_code' | \ + while read -r TIMEZONE; do + read -r COUNTRY + echo "${TIMEZONE},${COUNTRY},${COUNTRYCODE}" | tr --delete \" + done + ) + + TZDATA=$(echo ${RES} | cut -d"," -f1) + STATE=$(echo ${RES} | cut -d"," -f2) + CCODE=$(echo ${RES} | cut -d"," -f3 | xargs) + echo -e "Detected timezone: \x1B[92m$TZDATA\x1B[0m" + echo "" + unset response + while [[ ! "${response}" =~ ^(Y|y|N|n)$ ]]; do + read -n1 -s -r -p "Set user language based on your location? [Y/n] " response + echo "" + done + # change it only if we have a match and if we agree + if [[ "${response}" =~ ^(N|n)$ ]]; then + unset CCODE TZDATA + fi + + LOCALES=$(grep territory /usr/share/i18n/locales/* | grep _"$CCODE" | cut -d ":" -f 1 | cut -d "/" -f 6 | \ + xargs -I{} grep {} /usr/share/i18n/SUPPORTED | grep "\.UTF-8" | cut -d " " -f 1) + # UTF8 is not present everywhere so check again in case it returns empty value + [[ -z "$LOCALES" ]] && LOCALES=$(grep territory /usr/share/i18n/locales/* | grep _"$CCODE" | cut -d ":" -f 1 | cut -d "/" -f 6 | \ + xargs -I{} grep {} /usr/share/i18n/SUPPORTED | cut -d " " -f 1) + + options=(`echo ${LOCALES}`); + + # when having more locales, prompt for choosing one + if [[ "${#options[@]}" -gt 1 ]]; then + + options+=("Skip generating locales") + echo -e "\nAt your location, more locales are possible:\n" + PS3='Please enter your choice:' + select opt in "${options[@]}" + do + if [[ " ${options[@]} " =~ " ${opt} " ]]; then + LOCALES=${opt} + break + fi + done + fi + + if [[ "${LOCALES}" != *Skip* ]]; then + + # if TZDATA was not detected, we need to select one + if [[ -z ${TZDATA} ]]; then + TZDATA=$(tzselect | tail -1) + fi - # reconfigure tzdata timedatectl set-timezone "${TZDATA}" dpkg-reconfigure --frontend=noninteractive tzdata > /dev/null 2>&1 - echo -e "Detected timezone: \x1B[92m$(LC_ALL=C timedatectl | grep "Time zone" | cut -d":" -f2 | xargs)\x1B[0m" - echo -e "Do you want to set locales and console keyboard automatically from your location [Y/n]" - read -sn1 SetLocales - if [ "$SetLocales" != "n" ] && [ "$SetLocales" != "N" ]; then + # generate locales + echo "" + sed -i 's/# '"${LOCALES}"'/'"${LOCALES}"'/' /etc/locale.gen + echo -e "Generating locales: \x1B[92m${LOCALES}\x1B[0m" + locale-gen "${LOCALES}" > /dev/null 2>&1 - # when having more locales, prompt for choosing one - if [[ "${#options[@]}" -gt 1 ]]; then - - echo -e "\nAt your location, more locales are possible:\n" - PS3='Please enter your choice:' - select opt in "${options[@]}" - do - if [[ " ${options[@]} " =~ " ${opt} " ]]; then - LOCALES=${opt} - break - fi - done - - fi - - # generate locales - sed -i 's/# '"${LOCALES}"'/'"${LOCALES}"'/' /etc/locale.gen - echo -e "Generating locales: \x1B[92m${LOCALES}\x1B[0m" - locale-gen $LOCALES > /dev/null 2>&1 - update-locale LANG=$LOCALES LANGUAGE=$LOCALES LC=$LOCALES LC_MESSAGES=$LOCALES - - # setting up keyboard - echo -e "Console keyboard layout: \x1B[92m$CCODE\x1B[0m" - sed -i "s/XKBLAYOUT=.*/XKBLAYOUT=\"$CCODE\"/" /etc/default/keyboard - setupcon -k --force - else - - echo -e "You can use \x1B[92morangepi-config\x1B[0m to set locales and console keyboard." - - fi + # setting detected locales only for user + echo "export LC_ALL=$LOCALES" >> /home/"$RealUserName"/.bashrc + echo "export LANG=$LOCALES" >> /home/"$RealUserName"/.bashrc + echo "export LANGUAGE=$LOCALES" >> /home/"$RealUserName"/.bashrc + echo "export LC_ALL=$LOCALES" >> /home/"$RealUserName"/.xsessionrc + echo "export LANG=$LOCALES" >> /home/"$RealUserName"/.xsessionrc + echo "export LANGUAGE=$LOCALES" >> /home/"$RealUserName"/.xsessionrc fi - } + add_profile_sync_settings() { /usr/bin/psd >/dev/null 2>&1 @@ -126,72 +226,105 @@ add_profile_sync_settings() + add_user() { read -t 0 temp - + REPEATS=3 while [ -f "/root/.not_logged_in_yet" ]; do - echo -e "\nPlease provide a username (eg. your forename): \c" + echo -e "\nPlease provide a username (eg. your first name): \c" read -e username + if ! grep '^[a-zA-Z]*$' <<< $username > /dev/null ; then + echo -e "\n\x1B[91mError\x1B[0m: illegal characters in username" + return + fi + + RealUserName="$(echo "$username" | tr '[:upper:]' '[:lower:]' | tr -d -c '[:alnum:]')" [ -z "$RealUserName" ] && return if ! id "$RealUserName" >/dev/null 2>&1; then break; else echo -e "Username \e[0;31m$RealUserName\x1B[0m already exists on the system."; fi done while [ -f "/root/.not_logged_in_yet" ]; do - read_password "Create" - first_input=$password + read_password "Create user ($username)" + first_input="$password" echo "" - read_password "Repeat" - second_input=$password + read_password "Repeat user ($username)" + second_input="$password" echo "" - if [[ $first_input == $second_input ]]; then - result="$(cracklib-check <<<"$password")" - okay="$(awk -F': ' '{ print $2}' <<<"$result")" - if [[ "$okay" == "OK" ]]; then - echo -e "\nPlease provide your real name (eg. John Doe): \c" - read -e RealName - adduser --quiet --disabled-password --shell /bin/bash --home /home/"$RealUserName" --gecos "$RealName" "$RealUserName" - (echo $first_input;echo $second_input;) | passwd "$RealUserName" >/dev/null 2>&1 + if [[ "$first_input" == "$second_input" ]]; then + result="$(cracklib-check <<<"$password")" + okay="$(awk -F': ' '{ print $2}' <<<"$result")" + if [[ "$okay" == "OK" ]]; then + echo -e "" + read -e -p "Please provide your real name: " -i "${RealUserName^}" RealName + + adduser --quiet --disabled-password --home /home/"$RealUserName" --gecos "$RealName" "$RealUserName" + (echo "$first_input";echo "$second_input";) | passwd "$RealUserName" >/dev/null 2>&1 for additionalgroup in sudo netdev audio video disk tty users games dialout plugdev input bluetooth systemd-journal ssh; do - usermod -aG ${additionalgroup} ${RealUserName} 2>/dev/null + usermod -aG "${additionalgroup}" "${RealUserName}" 2>/dev/null done + # fix for gksu in Xenial - touch /home/$RealUserName/.Xauthority - chown $RealUserName:$RealUserName /home/$RealUserName/.Xauthority + touch /home/"$RealUserName"/.Xauthority + chown "$RealUserName":"$RealUserName" /home/"$RealUserName"/.Xauthority RealName="$(awk -F":" "/^${RealUserName}:/ {print \$5}" /dev/null 2>&1 + command -v psd >/dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "${RealUserName} ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper" >> /etc/sudoers - touch /home/${RealUserName}/.activate_psd - chown $RealUserName:$RealUserName /home/${RealUserName}/.activate_psd + touch /home/"${RealUserName}"/.activate_psd + chown "$RealUserName":"$RealUserName" /home/"${RealUserName}"/.activate_psd fi - break + break else - echo -e "Rejected - \e[0;31m$okay.\x1B[0m Try again." - fi - elif [[ -n $password ]]; then - echo -e "Rejected - \e[0;31mpasswords do not match.\x1B[0m Try again." - fi - done + echo -e "Rejected - \e[0;31m$okay.\x1B[0m Try again [${REPEATS}]." + REPEATS=$((REPEATS - 1)) + fi + elif [[ -n $password ]]; then + echo -e "Rejected - \e[0;31mpasswords do not match.\x1B[0m Try again [${REPEATS}]." + REPEATS=$((REPEATS - 1)) + fi + [[ "$REPEATS" -eq 0 ]] && exit + done } if [[ -f /root/.not_logged_in_yet && -n $(tty) ]]; then - # disable autologin #rm -f /etc/systemd/system/getty@.service.d/override.conf #rm -f /etc/systemd/system/serial-getty@.service.d/override.conf #systemctl daemon-reload - # detect lightdm + # detect display manager #desktop_lightdm=$(dpkg-query -W -f='${db:Status-Abbrev}\n' lightdm 2>/dev/null) + #desktop_gdm3=$(dpkg-query -W -f='${db:Status-Abbrev}\n' gdm3 2>/dev/null) + + #echo -e "\nWaiting for system to finish booting ...\n" + + #systemctl is-system-running --wait >/dev/null + + #if [ "$IMAGE_TYPE" != "nightly" ]; then + # if [ "$BRANCH" == "dev" ]; then + # echo -e "\nYou are using an Orange Pi preview build !!!" + # echo -e "\nThis image is provided \e[0;31mAS IS\x1B[0m with \e[0;31mNO WARRANTY\x1B[0m and \e[0;31mNO END USER SUPPORT!\x1B[0m.\n" + # elif [ "$DISTRIBUTION_STATUS" != "supported" ]; then + # echo -e "\nYou are using an Orange Pi with unsupported ($DISTRIBUTION_CODENAME) userspace !!!" + # echo -e "\nThis image is provided \e[0;31mAS IS\x1B[0m with \e[0;31mNO WARRANTY\x1B[0m and \e[0;31mNO END USER SUPPORT!\x1B[0m.\n" + # fi + #else + # echo -e "\nYou are using an Orange Pi nightly build meant only for developers to provide" + # echo -e "constructive feedback to improve build system, OS settings or user experience." + # echo -e "If this does not apply to you, \e[0;31mSTOP NOW!\x1B[0m. Especially don't use this image for" + # echo -e "daily work since things might not work as expected or at all and may break" + # echo -e "anytime with next update. \e[0;31mYOU HAVE BEEN WARNED!\x1B[0m" + # echo -e "\nThis image is provided \e[0;31mAS IS\x1B[0m with \e[0;31mNO WARRANTY\x1B[0m and \e[0;31mNO END USER SUPPORT!\x1B[0m.\n" + #fi echo -e "New to Orange Pi? Support: \e[1m\e[39mhttp://www.orangepi.org\x1B[0m\n" @@ -214,7 +347,6 @@ if [[ -f /root/.not_logged_in_yet && -n $(tty) ]]; then # okay="$(awk -F': ' '{ print $2}' <<<"$result")" # if [[ "$okay" == "OK" ]]; then # (echo $first_input;echo $second_input;) | passwd root >/dev/null 2>&1 - # set_timezone_and_locales # break # else # echo -e "Rejected - \e[0;31m$okay.\x1B[0m Try again." @@ -225,50 +357,124 @@ if [[ -f /root/.not_logged_in_yet && -n $(tty) ]]; then #done #trap - INT TERM EXIT + # ask user to select shell + #trap '' 2 + #set_shell + #trap - INT TERM EXIT + #trap check_abort INT + #while [ -f "/root/.not_logged_in_yet" ]; do # echo -e "\nCreating a new user account. Press to abort" - # [ -n "$desktop_lightdm" ] && echo "Desktop environment will not be enabled if you abort the new user creation" + # [ -n "$desktop_lightdm" ] && echo -e "\n\e[0;31mDesktop environment will not be enabled if you abort the new user creation\x1B[0m" # add_user #done #trap - INT TERM EXIT - rm -f /root/.not_logged_in_yet + ## ask user to select automated locales or not + #trap '' 2 + #set_timezone_and_locales + #trap - INT TERM EXIT + + #if [[ ${USER_SHELL} == zsh ]]; then + # printf "\nYou selected \e[0;91mZSH\x1B[0m as your default shell. If you want to use it right away, please logout and login! \n\n" + #fi # check whether desktop environment has to be considered - #if [ -n "$desktop_lightdm" ]; then + #if [ -n "$desktop_lightdm" ] && [ -n "$RealName" ] ; then - # # 1st run goes without login - # mkdir -p /etc/lightdm/lightdm.conf.d - # cat <<-EOF > /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf - # [Seat:*] - # autologin-user=$RealUserName - # autologin-user-timeout=0 - # user-session=xfce - # EOF - # - # ln -sf /lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service - # if [[ -f /var/run/resize2fs-reboot ]]; then - # # Let the user reboot now otherwise start desktop environment - # printf "\n\n\e[0;91mWarning: a reboot is needed to finish resizing the filesystem \x1B[0m \n" - # printf "\e[0;91mPlease reboot the system now \x1B[0m \n\n" - # elif [ -z "$ConfigureDisplay" ] || [ "$ConfigureDisplay" = "n" ] || [ "$ConfigureDisplay" = "N" ]; then - # echo -e "\n\e[1m\e[39mNow starting desktop environment...\x1B[0m\n" - # sleep 1 - # service lightdm start 2>/dev/null - # if [ -f /root/.desktop_autologin ]; then - # rm /root/.desktop_autologin - # else - # (sleep 20; rm /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf) & + # # 1st run goes without login + # mkdir -p /etc/lightdm/lightdm.conf.d + # cat <<-EOF > /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + # [Seat:*] + # autologin-user=$RealUserName + # autologin-user-timeout=0 + # user-session=xfce + # EOF + + # # select gnome session (has to be first or it breaks budgie/cinnamon desktop autologin and user-session) + # [[ -x $(which gnome-session) ]] && sed -i "s/user-session.*/user-session=ubuntu/" /etc/lightdm/lightdm.conf.d/11-orangepi.conf + # [[ -x $(which gnome-session) ]] && sed -i "s/user-session.*/user-session=ubuntu/" /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + + # # select budgie session + # [[ -x $(which budgie-desktop) ]] && sed -i "s/user-session.*/user-session=budgie-desktop/" /etc/lightdm/lightdm.conf.d/11-orangepi.conf + # [[ -x $(which budgie-desktop) ]] && sed -i "s/user-session.*/user-session=budgie-desktop/" /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + + # # select deepin session + # [[ -x $(which deepin-wm) ]] && sed -i "s/user-session.*/user-session=deepin/" /etc/lightdm/lightdm.conf.d/11-orangepi.conf + # [[ -x $(which deepin-wm) ]] && sed -i "s/user-session.*/user-session=deepin/" /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + + # # select cinnamon session + # [[ -x $(which cinnamon) ]] && sed -i "s/user-session.*/user-session=cinnamon/" /etc/lightdm/lightdm.conf.d/11-orangepi.conf + # [[ -x $(which cinnamon) ]] && sed -i "s/user-session.*/user-session=cinnamon/" /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + + # # select mate session + # [[ -x $(which mate-wm) ]] && sed -i "s/user-session.*/user-session=mate/" /etc/lightdm/lightdm.conf.d/11-orangepi.conf + # [[ -x $(which mate-wm) ]] && sed -i "s/user-session.*/user-session=mate/" /etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + + # ln -sf /lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service + + # if [[ -f /var/run/resize2fs-reboot ]]; then + # # Let the user reboot now otherwise start desktop environment + # printf "\n\n\e[0;91mWarning: a reboot is needed to finish resizing the filesystem \x1B[0m \n" + # printf "\e[0;91mPlease reboot the system now \x1B[0m \n\n" + # elif [ -z "$ConfigureDisplay" ] || [ "$ConfigureDisplay" = "n" ] || [ "$ConfigureDisplay" = "N" ]; then + # echo -e "\n\e[1m\e[39mNow starting desktop environment...\x1B[0m\n" + # sleep 1 + # service lightdm start 2>/dev/null + # if [ -f /root/.desktop_autologin ]; then + # rm /root/.desktop_autologin + # else + # systemctl -q enable orangepi-disable-autologin.timer + # systemctl start orangepi-disable-autologin.timer + # fi + # # logout if logged at console + # [[ -n $(who -la | grep root | grep tty1) ]] && exit 1 # fi - # # logout if logged at console - # #[[ -n $(who -la | grep root | grep tty1) ]] && exit 1 - # fi + + #elif [ -n "$desktop_gdm3" ] && [ -n "$RealName" ] ; then + + # # 1st run goes without login + # mkdir -p /etc/gdm3 + # cat <<-EOF > /etc/gdm3/custom.conf + # [daemon] + # AutomaticLoginEnable = true + # AutomaticLogin = $RealUserName + # EOF + + # ln -sf /lib/systemd/system/gdm3.service /etc/systemd/system/display-manager.service + + # if [[ -f /var/run/resize2fs-reboot ]]; then + + # # Let the user reboot now otherwise start desktop environment + # printf "\n\n\e[0;91mWarning: a reboot is needed to finish resizing the filesystem \x1B[0m \n" + # printf "\e[0;91mPlease reboot the system now \x1B[0m \n\n" + + # elif [ -z "$ConfigureDisplay" ] || [ "$ConfigureDisplay" = "n" ] || [ "$ConfigureDisplay" = "N" ]; then + + # echo -e "\n\e[1m\e[39mNow starting desktop environment...\x1B[0m\n" + # sleep 1 + # service gdm3 start 2>/dev/null + # if [ -f /root/.desktop_autologin ]; then + # rm /root/.desktop_autologin + # else + # (sleep 20; sed -i "s/AutomaticLoginEnable.*/AutomaticLoginEnable = false/" /etc/gdm3/custom.conf) & + # fi + # # logout if logged at console + # [[ -n $(who -la | grep root | grep tty1) ]] && exit 1 + + # fi + #else + # # Display reboot recommendation if necessary # if [[ -f /var/run/resize2fs-reboot ]]; then # printf "\n\n\e[0;91mWarning: a reboot is needed to finish resizing the filesystem \x1B[0m \n" # printf "\e[0;91mPlease reboot the system now \x1B[0m \n\n" # fi + #fi + + rm -f /root/.not_logged_in_yet + fi diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun b/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun index 27f862d..7e850e6 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -19,17 +19,11 @@ case "$1" in cpu_cores=$(grep -c '^processor' /proc/cpuinfo | sed 's/^0$/1/') # adjust custom htop initial configuration based on CPU count https://github.com/avafinger/htop-2.1.1_enhanced-version - right_meters="Hostname Tasks LoadAverage Uptime" - right_meter_modes="2 2 2 2" - x=1 - until [ $x -gt $cpu_cores ]; do - right_meters=$right_meters" CpuFreq($x)" - right_meter_modes=$right_meter_modes" 2" - let x+=1 - done + right_meters="Hostname Tasks LoadAverage DiskIO NetworkIO Uptime Systemd CpuFreq" + right_meter_modes="2 2 2 2 2 2 2 2" sed -i 's/header_margin=.*/header_margin=1/g' /etc/skel/.config/htop/htoprc - sed -i 's/left_meters=.*/left_meters=AllCPUs Memory Swap CpuTemp/g' /etc/skel/.config/htop/htoprc - sed -i 's/left_meter_modes=.*/left_meter_modes=1 1 1 2/g' /etc/skel/.config/htop/htoprc + sed -i 's/left_meters=.*/left_meters=AllCPUs Memory Zram Swap CpuTemp/g' /etc/skel/.config/htop/htoprc + sed -i 's/left_meter_modes=.*/left_meter_modes=1 1 1 1 2/g' /etc/skel/.config/htop/htoprc sed -i "s/right_meters=.*/right_meters=$right_meters/g" /etc/skel/.config/htop/htoprc sed -i "s/right_meter_modes=.*/right_meter_modes=$right_meter_modes/g" /etc/skel/.config/htop/htoprc # copy predefined settings for root user @@ -108,7 +102,8 @@ case "$1" in esac # varios temporary hardware workarounds - [[ $LINUXFAMILY == rk3399 ]] && set_fixed_mac + #[[ $LINUXFAMILY == rk3399 || $LINUXFAMILY == rockchip64 ]] && [[ $BOARD != helios64 && $BOARD != khadas-edge ]] && set_fixed_mac + #[[ $LINUXFAMILY == rk3399 ]] && set_fixed_mac systemctl disable orangepi-firstrun exit 0 ;; diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun-config b/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun-config index 31081da..f7b14e3 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun-config +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-firstrun-config @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-monitor b/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-monitor index c9ee268..6c212ca 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-monitor +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-monitor @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization b/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization index bf6599b..1ff4276 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-hardware-optimization @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -15,9 +15,13 @@ # Read in basic OS image information . /etc/orangepi-release + # and script configuration . /usr/lib/orangepi/orangepi-common +# set audio +#. /usr/lib/orangepi/orangepi-audio-config + set_io_scheduler() { # Convert kernel version to integer @@ -48,12 +52,12 @@ prepare_board() { CheckDevice=$(for i in /var/log /var / ; do findmnt -n -o SOURCE $i && break ; done) # adjust logrotate configs - if [[ "${CheckDevice}" == "/dev/zram0" || "${CheckDevice}" == "orangepi-ramlog" ]]; then - for ConfigFile in /etc/logrotate.d/* ; do sed -i -e "s/\/log\//\/log.hdd\//g" "${ConfigFile}"; done - sed -i "s/\/log\//\/log.hdd\//g" /etc/logrotate.conf + if [[ "${CheckDevice}" == *"/dev/zram"* || "${CheckDevice}" == "orangepi-ramlog" ]]; then + for ConfigFile in /etc/logrotate.d/* ; do sed -i -e "s/\/var\/log\//\/var\/log.hdd\//g" "${ConfigFile}"; done + sed -i "s/\/var\/log\//\/var\/log.hdd\//g" /etc/logrotate.conf else - for ConfigFile in /etc/logrotate.d/* ; do sed -i -e "s/\/log.hdd\//\/log\//g" "${ConfigFile}"; done - sed -i "s/\/log.hdd\//\/log\//g" /etc/logrotate.conf + for ConfigFile in /etc/logrotate.d/* ; do sed -i -e "s/\/var\/log.hdd\//\/var\/log\//g" "${ConfigFile}"; done + sed -i "s/\/var\/log.hdd\//\/var\/log\//g" /etc/logrotate.conf fi # unlock cpuinfo_cur_freq to be accesible by a normal user @@ -67,7 +71,7 @@ prepare_board() { [[ -f $prefix/cpuinfo_cur_freq ]] && chmod +r $prefix/cpuinfo_cur_freq 2> /dev/null # enable compression where not exists - find /etc/logrotate.d/. -type f | xargs grep -H -c 'compress' | grep 0$ | cut -d':' -f1 | xargs -L1 sed -i '/{/ a compress' + find /etc/logrotate.d/. -type f | xargs grep -H -c 'compress' | grep 0$ | cut -d':' -f1 | xargs -r -L1 sed -i '/{/ a compress' sed -i "s/#compress/compress/" /etc/logrotate.conf # tweak ondemand cpufreq governor settings to increase cpufreq with IO load @@ -85,12 +89,38 @@ prepare_board() { done fi + chmod +x /etc/update-motd.d/* + # IRQ distribution based on $BOARDFAMILY and/or $BOARD_NAME case ${BOARD} in + rockpro64|renegade-elite|pinebook-pro|station-p1) + BOARDFAMILY=rk3399 + ;; orangepi3-lts) - #aplay /usr/share/sounds/alsa/audio.wav -D hw:0,0 > /dev/null 2>&1 + rfkill unblock all + /usr/bin/hciattach_opi -n -s 1500000 /dev/ttyBT0 sprd & + ;; + orangepi800) + [[ -f /sys/class/leds/caps_led/brightness ]] && chmod 666 /sys/class/leds/caps_led/brightness + [[ -f /sys/class/leds/num_led/brightness ]] && chmod 666 /sys/class/leds/num_led/brightness + + CODEC_CARD=1 + amixer -c ${CODEC_CARD} cset name='Headphone Playback Volume' 11 > /dev/null 2>&1 + amixer -c ${CODEC_CARD} cset name='DAC Playback Volume' 170 > /dev/null 2>&1 + amixer -c ${CODEC_CARD} cset name='ADC Capture Volume' 190 >/dev/null 2>&1 + amixer -c ${CODEC_CARD} cset name='Differential Mux' 1 >/dev/null 2>&1 + + if [[ -c /dev/mpp_service ]]; then + chmod 666 /dev/mpp_service + + # Create dummy video node for chromium V4L2 VDA/VEA with rkmpp plugin + echo dec > /dev/video-dec0 + echo enc > /dev/video-enc0 + chmod 660 /dev/video-* + chown root.video /dev/video-* + fi rfkill unblock all /usr/bin/hciattach_opi -n -s 1500000 /dev/ttyBT0 sprd & @@ -102,7 +132,7 @@ prepare_board() { /usr/bin/pwm-fan.sh & ;; - orangepizero2|orangepizero2-lts|orangepizero2-b) + orangepizero2|orangepizero2-lts|orangepizero2-b|orangepi400) if [[ $BRANCH == current ]]; then # Initial hdmi audio aplay /usr/share/sounds/alsa/audio.wav -D hw:0,0 > /dev/null 2>&1 @@ -116,9 +146,75 @@ prepare_board() { rfkill unblock all /usr/bin/hciattach_opi -n -s 1500000 /dev/ttyBT0 sprd & ;; + orangepi400) + rfkill unblock all + /usr/bin/hciattach_opi -n -s 1500000 /dev/ttyBT0 sprd & + + [[ -f /sys/class/leds/caps_led/brightness ]] && chmod 666 /sys/class/leds/caps_led/brightness + [[ -f /sys/class/leds/num_led/brightness ]] && chmod 666 /sys/class/leds/num_led/brightness + ;; + orangepi4-lts) + # RK3399 - 1.8GHz + # RK3399-T - 1.6GHz + sed -i "s/MAX_SPEED=.*/MAX_SPEED=$(cpufreq-info -c 4 -l | awk '{ print $2 }')/" /etc/default/cpufrequtils + + CODEC_CARD=0 + amixer -c ${CODEC_CARD} cset name='Differential Mux' 1 >/dev/null 2>&1 + + if [[ -c /dev/mpp_service ]]; then + chmod 666 /dev/mpp_service + + elif [[ -c /dev/vpu_service ]]; then + chmod 666 /dev/vpu_service + fi + + # Create dummy video node for chromium V4L2 VDA/VEA with rkmpp plugin + echo dec > /dev/video-dec0 + echo enc > /dev/video-enc0 + chmod 660 /dev/video-* + chown root.video /dev/video-* + + rfkill unblock all + /usr/bin/hciattach_opi -n -s 1500000 /dev/ttyBT0 sprd & + ;; + esac case ${BOARDFAMILY} in + rockchip) # RK3288: usb1 on cpu1, usb3 (EHCI) on cpu2, eth0 and GPU on cpu3 + echo 2 >/proc/irq/$(awk -F":" "/usb1/ {print \$1}" /proc/irq/$(awk -F":" "/usb3/ {print \$1}" /proc/irq/$(awk -F":" "/eth0/ {print \$1}" /sys/class/net/eth0/queues/rx-0/rps_cpus + for i in $(awk -F':' '/gpu/{print $1}' /proc/interrupts | sed 's/\ //g'); do + echo 8 >/proc/irq/$i/smp_affinity + done + ;; + rockchip64) # Rock64 and Renegade: GPU on cpu1, USB3 on cpu2, Ethernet on cpu3 + for i in $(awk -F':' '/Mali/{print $1}' /proc/irq/$i/smp_affinity + done + for i in $(awk -F":" "/ehci/ {print \$1}" /proc/irq/$i/smp_affinity + done + for i in $(awk -F":" "/ohci/ {print \$1}" /proc/irq/$i/smp_affinity + done + for i in $(awk -F":" "/xhci/ {print \$1}" /proc/irq/$i/smp_affinity + done + + # Wait (up to 5s) until eth0 brought up + for i in {1..5}; do + grep -q "eth0" /proc/interrupts && break + sleep 1 + done + + echo 8 >/proc/irq/$(awk -F":" "/eth0/ {print \$1}" /sys/class/net/eth0/queues/rx-0/rps_cpus + echo 32768 >/proc/sys/net/core/rps_sock_flow_entries + echo 32768 >/sys/class/net/eth0/queues/rx-0/rps_flow_cnt + ;; rk3399) for i in $(awk -F':' '/gpu/{print $1}' /proc/irq/$i/smp_affinity @@ -126,9 +222,22 @@ prepare_board() { for i in $(awk -F':' '/dw-mci/{print $1}' /proc/irq/$i/smp_affinity done - echo 2 >/proc/irq/$(awk -F":" "/ehci/ {print \$1}" /proc/irq/$(awk -F":" "/ohci/ {print \$1}" /proc/irq/$(awk -F":" "/xhci/ {print \$1}" /proc/irq/$i/smp_affinity + done + for i in $(awk -F":" "/ohci/ {print \$1}" /proc/irq/$i/smp_affinity + done + for i in $(awk -F":" "/xhci/ {print \$1}" /proc/irq/$i/smp_affinity + done + + # Wait (up to 5s) until eth0 brought up + for i in {1..5}; do + grep -q "eth0" /proc/interrupts && break + sleep 1 + done + echo 8 >/proc/irq/$(awk -F":" "/eth0/ {print \$1}" /sys/class/net/eth0/queues/rx-0/rps_cpus echo 32768 >/proc/sys/net/core/rps_sock_flow_entries @@ -141,6 +250,9 @@ prepare_board() { echo performance > /sys/bus/platform/drivers/rockchip-dmc/dmc/devfreq/dmc/governor fi ;; + sun4i|sun5i|rda8810) # only one core, nothing to improve + : + ;; sun8i*) # H3/R40/V40 boards, try to do the best based on specific board since interfaces vary a lot # 10 or 120 sec user feedback that the board is ready after 1st login with 3.4 kernel SwapState="$(grep swap /etc/fstab)" @@ -202,7 +314,7 @@ prepare_board() { echo 8 >/proc/irq/$(awk -F":" "/eth/ {print \$1}" /sys/class/net/eth0/queues/rx-0/rps_cpus # OrangePi win GMAC is very unstable on gigabit. Limit it down to 100Mb solve problems - [[ $BOARD == orangepiwin && $BRANCH == default ]] && ethtool -s eth0 speed 100 duplex full + [[ $BOARD == orangepiwin && $BRANCH == legacy ]] && ethtool -s eth0 speed 100 duplex full ;; esac } # prepare_board @@ -246,6 +358,19 @@ add_usb_storage_quirks() { } # add_usb_storage_quirks + +branch_naming_workaround() +# https://armbian.atlassian.net/browse/AR-748 +# Once we rework kernel packages, this can be done better +{ + + if [[ -z $(cat /etc/orangepi-release | grep BRANCH) ]]; then + BRANCH=$(dpkg -l | egrep "linux-image" | egrep "current|legacy|edge" | awk '{print $2}' | cut -d"-" -f3 | head -1) + [[ -n ${BRANCH} ]] && echo "BRANCH=$BRANCH" >> /etc/orangepi-release + fi +} + + case $1 in *start*) # set optimal disk scheduler settings @@ -256,5 +381,8 @@ case $1 in # add usb quirks add_usb_storage_quirks & + + # branch naming workaround + branch_naming_workaround & ;; esac diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-ramlog b/external/packages/bsp/common/usr/lib/orangepi/orangepi-ramlog index 19c92ee..9c42306 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-ramlog +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-ramlog @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -23,7 +23,7 @@ LOG_OUTPUT="tee -a $LOG2RAM_LOG" isSafe () { [ -d $HDD_LOG ] || (echo "ERROR: $HDD_LOG doesn't exist! Can't sync." >&2 ; exit 1) - NoCache=$(which nocache 2>/dev/null) + NoCache=$(command -v nocache 2>/dev/null) } RecreateLogs (){ @@ -48,7 +48,11 @@ syncToDisk () { echo -e "\n\n$(date): Syncing logs to storage\n" | $LOG_OUTPUT if [ "$USE_RSYNC" = true ]; then - ${NoCache} rsync -aXWv --exclude "lost+found" --exclude orangepi-ramlog.log --links $RAM_LOG $HDD_LOG 2>&1 | $LOG_OUTPUT + ${NoCache} rsync -aXWv \ + --exclude "lost+found" --exclude orangepi-ramlog.log \ + --links \ + ${XTRA_RSYNC_TO[@]+"${XTRA_RSYNC_TO[@]}"} \ + $RAM_LOG $HDD_LOG 2>&1 | $LOG_OUTPUT else ${NoCache} cp -rfup $RAM_LOG -T $HDD_LOG 2>&1 | $LOG_OUTPUT fi @@ -62,7 +66,12 @@ syncFromDisk () { echo -e "\n\n$(date): Loading logs from storage\n" | $LOG_OUTPUT if [ "$USE_RSYNC" = true ]; then - ${NoCache} rsync -aXWv --delete --exclude "lost+found" --exclude orangepi-ramlog.log --exclude *.gz --exclude *.xz --exclude='*.[0-9]' --links $HDD_LOG $RAM_LOG 2>&1 | $LOG_OUTPUT + ${NoCache} rsync -aXWv --delete \ + --exclude "lost+found" --exclude orangepi-ramlog.log \ + --exclude *.gz --exclude *.xz --exclude='*.[0-9]' \ + --links \ + ${XTRA_RSYNC_FROM[@]+"${XTRA_RSYNC_FROM[@]}"} \ + $HDD_LOG $RAM_LOG 2>&1 | $LOG_OUTPUT else ${NoCache} find $HDD_LOG* -maxdepth 1 -type f -not \( -name '*.[0-9]' -or -name '*.xz*' -or -name '*.gz' \) | xargs cp -ut $RAM_LOG fi @@ -86,16 +95,17 @@ case "$1" in mount --make-private $HDD_LOG # Check whether zram device is available or we need to use tmpfs - if [ "$(blkid -s TYPE /dev/zram0 | awk ' { print $2 } ' | grep ext4)" ]; then - LOG_TYPE="zram" - else - LOG_TYPE="tmpfs" - fi - + LOG_TYPE="tmpfs" + for rd in /dev/zram*; do + if [[ "$(e2label $rd)" == "log2ram" ]]; then + LOG_TYPE="zram" + break + fi + done case $LOG_TYPE in zram) - echo -e "Mounting /dev/zram0 as $RAM_LOG \c" | $LOG_OUTPUT - mount -o discard /dev/zram0 $RAM_LOG 2>&1 | $LOG_OUTPUT + echo -e "Mounting $rd as $RAM_LOG \c" | $LOG_OUTPUT + mount -o discard $rd $RAM_LOG 2>&1 | $LOG_OUTPUT ;; tmpfs) echo -e "Setting up $RAM_LOG as tmpfs \c" | $LOG_OUTPUT diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-resize-filesystem b/external/packages/bsp/common/usr/lib/orangepi/orangepi-resize-filesystem index 2d17bb8..48e423d 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-resize-filesystem +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-resize-filesystem @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -50,10 +50,10 @@ do_expand_partition() case $RESIZE_VALUE in *%) # percentage value, we try to use 16MiB to align partitions since this is - # the erase block size of more recent SD cards (512 byte sectors, so we use 32 + # the erase block size of more recent SD cards (512 byte sectors, so we use 32768 # as divider and substract 1) local percentage=$(echo $RESIZE_VALUE | tr -c -d '[:digit:]') - local lastsector=$(( 32 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * $percentage / 3200))}") - 1 )) + local lastsector=$(( 32768 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * $percentage / 3276800))}") - 1 )) [[ $lastsector -lt $partend ]] && unset lastsector ;; *s) @@ -64,7 +64,7 @@ do_expand_partition() esac # if SD card is larger than 4GiB then create another partition behind first one(s) if [[ $capacity -ge 5 ]]; then - local secondpartition=$(( 32 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 99 / 3200))}") -1 )) + local secondpartition=$(( 32768 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 99 / 3276800))}") -1 )) if [[ $secondpartition -lt $partend ]]; then unset secondpartition fi @@ -76,7 +76,7 @@ do_expand_partition() # to use Orange Pi on a card of inappropriate size so he gets what he deserves (at least he # should know what he's doing) if [[ $capacity -lt 5 ]]; then # 4 GiB or less - local lastsector=$(( 32 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 95 / 3200))}") -1 )) + local lastsector=$(( 32768 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 95 / 3276800))}") -1 )) if [[ $lastsector -lt $partend ]]; then unset lastsector else @@ -84,7 +84,7 @@ do_expand_partition() fi elif [[ $capacity -lt 9 ]]; then # 8 GiB or less # Leave 2 percent unpartitioned - local lastsector=$(( 32 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 98 / 3200))}") -1 )) + local lastsector=$(( 32768 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 98 / 3276800))}") -1 )) if [[ $lastsector -lt $partend ]]; then unset lastsector else @@ -92,7 +92,7 @@ do_expand_partition() fi else # Leave 1 percent unpartitioned - local lastsector=$(( 32 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 99 / 3200))}") -1 )) + local lastsector=$(( 32768 * $(parted $rootdevicepath unit s print -sm | grep "^$rootdevicepath" | awk -F":" "{printf (\"%0d\", ( \$2 * 99 / 3276800))}") -1 )) if [[ $lastsector -lt $partend ]]; then unset lastsector else @@ -118,6 +118,16 @@ do_expand_partition() ((echo n; echo p; echo ; echo $(( $lastsector + 1 )); echo $secondpartition ; echo w;) | fdisk $rootdevicepath) >>${Log} 2>&1 local s=0 partprobe $rootdevicepath >>${Log} 2>&1 || s=$? + + # + # Workaround for Kernel bug in 5.8.y and up. Ignore partprobe returning error and inticating that fs is not expended while it is + # + KERNELID=$(uname -r | awk -F'.' '{print ($1 * 100) + $2}') + [[ ${KERNELID} -gt 507 ]] && s=0 + # + # + # + echo -e "New partition table:\n" >>${Log} cat /proc/partitions >>${Log} echo -e "\nNow trying to resize $1 filesystem on $rootsource to the limits:\n" >>${Log} @@ -131,7 +141,7 @@ do_expand_partition() ext4) resize2fs $rootsource >>${Log} 2>&1 # check whether reboot is necessary for resize2fs to take effect - local usedpercent=$(findmnt --target / -n -o USE% -b) # images before resize have 70-75% + local usedpercent=$(findmnt --target / -n -o USE% -b | sed 's/[^0-9]*//g') # images before resize have 70-75% if [[ $s != 0 || $usedpercent -gt 70 ]]; then touch /var/run/resize2fs-reboot echo -e "\n### [resize2fs] Automated reboot needed to finish the resize procedure" >>${Log} diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-truncate-logs b/external/packages/bsp/common/usr/lib/orangepi/orangepi-truncate-logs index 5a96eaa..6508f9d 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-truncate-logs +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-truncate-logs @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -10,6 +10,7 @@ # working only when orangepi-ramlog is enabled treshold=75 # % +JOURNAL_SIZE=5M # size to shrink systemd-journal [ -f /etc/default/orangepi-ramlog ] && . /etc/default/orangepi-ramlog @@ -27,4 +28,6 @@ if [ $logusage -ge $treshold ]; then /usr/bin/find /var/log -name 'mail.err' -or -name 'mail.info' -or -name 'mail.warning' | xargs -r truncate --size 0 # remove /usr/bin/find /var/log -name '*.[0-9]' -or -name '*.gz' | xargs -r rm -f + # vacuum systemd-journald + [ -d /var/log/journal ] && journalctl --vacuum-size=${JOURNAL_SIZE} fi diff --git a/external/packages/bsp/common/usr/lib/orangepi/orangepi-zram-config b/external/packages/bsp/common/usr/lib/orangepi/orangepi-zram-config index 831c920..46c332c 100755 --- a/external/packages/bsp/common/usr/lib/orangepi/orangepi-zram-config +++ b/external/packages/bsp/common/usr/lib/orangepi/orangepi-zram-config @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) Authors: https://www.armbian.com/authors # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,6 +8,7 @@ # Functions: # +# activate_zram # activate_zram_swap # activate_ramlog_partition # activate_compressed_tmp @@ -18,16 +19,17 @@ # and script configuration . /usr/lib/orangepi/orangepi-common -# It's possible to override ZRAM_PERCENTAGE, ZRAM_MAX_DEVICES, SWAP_ALGORITHM, -# RAMLOG_ALGORITHM and TMP_ALGORITHM here: +# It's possible to override SWAP, ZRAM_PERCENTAGE, MEM_LIMIT_PERCENTAGE, ZRAM_MAX_DEVICES, +# SWAP_ALGORITHM, RAMLOG_ALGORITHM, TMP_ALGORITHM and TMP_SIZE here: +ENABLED=false [ -f /etc/default/orangepi-zram-config ] && . /etc/default/orangepi-zram-config +# Exit if not Enabled +[[ "$ENABLED" != "true" ]] && exit 0 -activate_zram_swap() { - # Do not interfere with already present config-zram package - dpkg -l | grep -q 'zram-config' && exit 0 - - [[ "$ENABLED" != "true" ]] && exit 0 +# Do not interfere with already present zram-config package +dpkg -l | grep -q 'zram-config' && exit 0 +activate_zram() { # Load zram module with n instances for swap: one per CPU core, $ZRAM_MAX_DEVICES # defines the maximum, on modern kernels we overwrite this with 1 and rely on # max_comp_streams being set to count of CPU cores or $ZRAM_MAX_DEVICES @@ -37,36 +39,50 @@ activate_zram_swap() { module_args="$(modinfo zram | awk -F" " '/num_devices/ {print $2}' | cut -f1 -d:)" [[ -n ${module_args} ]] && modprobe zram ${module_args}=$(( ${zram_devices} + 2 )) || return + swap_algo=${SWAP_ALGORITHM:=lzo} # Expose 50% of real memory as swap space by default zram_percent=${ZRAM_PERCENTAGE:=50} mem_info=$(LC_ALL=C free -w 2>/dev/null | grep "^Mem" || LC_ALL=C free | grep "^Mem") - memory_total=$(awk '{printf("%d",$2*1024)}' <<<${mem_info}) + mem_info=$(echo $mem_info | awk '{print $2}') + memory_total=$(( mem_info * 1024 )) mem_per_zram_device=$(( ${memory_total} / ${zram_devices} * ${zram_percent} / 100 )) # Limit memory available to zram to 50% by default mem_limit_percent=${MEM_LIMIT_PERCENTAGE:=50} mem_limit_per_zram_device=$(( ${memory_total} / ${zram_devices} * ${mem_limit_percent} / 100 )) +} + +activate_zram_swap() { + # Return is SWAP is disabled (enabled by default) + [[ -n "$SWAP" && "$SWAP" != "true" ]] && return; + + # Disable zswap if zram should be used. To make use of zswap instead a + # swap file or partition on *capable* storage needs to be chosen and + # defined as swap and also in /etc/default/orangepi-zram-config SWAP=false + # needs to be set. + echo 0 >/sys/module/zswap/parameters/enabled 2>/dev/null # Limit Journal size to 20Mb sed -i "s/.*SystemMaxUse=$/SystemMaxUse=20M/" /etc/systemd/journald.conf - swap_algo=${SWAP_ALGORITHM:=lzo} for (( i=1; i<=zram_devices; i++ )); do - if [ -f /sys/block/zram${i}/comp_algorithm ]; then + swap_device=$(zramctl -f |sed 's/\/dev\///') + [[ ! ${swap_device} =~ ^zram ]] && echo -e "\n### No more available zram devices (${swap_device})\n" >>${Log} && exit 1; + if [ -f /sys/block/${swap_device}/comp_algorithm ]; then # set compression algorithm, if defined as lzo choose lzo-rle if available # https://www.phoronix.com/scan.php?page=news_item&px=ZRAM-Linux-5.1-Better-Perform - grep -q 'lzo-rle' /sys/block/zram${i}/comp_algorithm && \ + grep -q 'lzo-rle' /sys/block/${swap_device}/comp_algorithm && \ [[ "X${swap_algo}" = "Xlzo" ]] && swap_algo="lzo-rle" - echo ${swap_algo} >/sys/block/zram${i}/comp_algorithm 2>/dev/null + echo ${swap_algo} >/sys/block/${swap_device}/comp_algorithm 2>/dev/null fi if [ "X${ZRAM_BACKING_DEV}" != "X" ]; then - echo ${ZRAM_BACKING_DEV} >/sys/block/zram${i}/backing_dev + echo ${ZRAM_BACKING_DEV} >/sys/block/${swap_device}/backing_dev fi - echo -n ${ZRAM_MAX_DEVICES:=4} > /sys/block/zram${i}/max_comp_streams - echo -n ${mem_per_zram_device} > /sys/block/zram${i}/disksize - echo -n ${mem_limit_per_zram_device} > /sys/block/zram${i}/mem_limit - mkswap /dev/zram${i} - swapon -p 5 /dev/zram${i} + echo -n ${ZRAM_MAX_DEVICES:=4} > /sys/block/${swap_device}/max_comp_streams + echo -n ${mem_per_zram_device} > /sys/block/${swap_device}/disksize + echo -n ${mem_limit_per_zram_device} > /sys/block/${swap_device}/mem_limit + mkswap /dev/${swap_device} + swapon -p 5 /dev/${swap_device} done # Swapping to HDDs is stupid so switch to settings made for flash memory and zram/zswap @@ -80,7 +96,9 @@ activate_ramlog_partition() { # ENABLED=true in /etc/default/orangepi-ramlog is set ENABLED=$(awk -F"=" '/^ENABLED/ {print $2}' /etc/default/orangepi-ramlog) [[ "$ENABLED" != "true" ]] && return - + log_device=$(zramctl -f |sed 's/\/dev\///') + [[ ! ${log_device} =~ ^zram ]] && echo -e "\n### No more available zram devices (${log_device})\n" >>${Log} && exit 1; + # read size also from /etc/default/orangepi-ramlog ramlogsize=$(awk -F"=" '/^SIZE/ {print $2}' /etc/default/orangepi-ramlog) disksize=$(sed -e 's/M$/*1048576/' -e 's/K$/*1024/' <<<${ramlogsize:=50M} | bc) @@ -90,46 +108,48 @@ activate_ramlog_partition() { # See https://patchwork.kernel.org/patch/9918897/ if [ "X${RAMLOG_ALGORITHM}" = "X" ]; then for algo in lz4 lz4hc quicklz zlib brotli zstd ; do - echo ${algo} >/sys/block/zram0/comp_algorithm 2>/dev/null + echo ${algo} >/sys/block/${log_device}/comp_algorithm 2>/dev/null done else - echo ${RAMLOG_ALGORITHM} >/sys/block/zram0/comp_algorithm 2>/dev/null + echo ${RAMLOG_ALGORITHM} >/sys/block/${log_device}/comp_algorithm 2>/dev/null fi - echo -n ${disksize} > /sys/block/zram0/disksize + echo -n ${disksize} > /sys/block/${log_device}/disksize # if it fails, select $swap_algo. Workaround for some older kernels if [[ $? == 1 ]]; then - echo ${swap_algo} > /sys/block/zram0/comp_algorithm 2>/dev/null - echo -n ${disksize} > /sys/block/zram0/disksize + echo ${swap_algo} > /sys/block/${log_device}/comp_algorithm 2>/dev/null + echo -n ${disksize} > /sys/block/${log_device}/disksize fi - mkfs.ext4 -O ^has_journal -s 1024 -L log2ram /dev/zram0 - algo=$(sed 's/.*\[\([^]]*\)\].*/\1/g' >${Log} } # activate_ramlog_partition activate_compressed_tmp() { # create /tmp not as tmpfs but zram compressed if no fstab entry exists grep -q '^tmpfs /tmp' /etc/mtab && return + tmp_device=$(zramctl -f |sed 's/\/dev\///') + [[ ! ${tmp_device} =~ ^zram ]] && echo -e "\n### No more available zram devices (${tmp_device})\n" >>${Log} && exit 1; - tmp_device=$(( ${zram_devices} + 1 )) - if [[ -f /sys/block/zram${tmp_device}/comp_algorithm ]]; then + if [[ -f /sys/block/${tmp_device}/comp_algorithm ]]; then if [ "X${TMP_ALGORITHM}" = "X" ]; then - echo ${swap_algo} >/sys/block/zram${tmp_device}/comp_algorithm 2>/dev/null + echo ${swap_algo} >/sys/block/${tmp_device}/comp_algorithm 2>/dev/null else - echo ${TMP_ALGORITHM} >/sys/block/zram${tmp_device}/comp_algorithm 2>/dev/null + echo ${TMP_ALGORITHM} >/sys/block/${tmp_device}/comp_algorithm 2>/dev/null fi fi - echo -n $(( ${memory_total} / 2 )) > /sys/block/zram${tmp_device}/disksize - mkfs.ext4 -O ^has_journal -s 1024 -L tmp /dev/zram${tmp_device} - mount -o nosuid,discard /dev/zram${tmp_device} /tmp - chmod 777 /tmp - algo=$(sed 's/.*\[\([^]]*\)\].*/\1/g' /sys/block/${tmp_device}/disksize || echo -n ${TMP_SIZE} > /sys/block/${tmp_device}/disksize + mkfs.ext4 -O ^has_journal -s 1024 -L tmp /dev/${tmp_device} + mount -o nosuid,discard /dev/${tmp_device} /tmp + chmod 1777 /tmp + algo=$(sed 's/.*\[\([^]]*\)\].*/\1/g' >${Log} } # activate_compressed_tmp case $1 in *start*) + activate_zram activate_zram_swap activate_ramlog_partition activate_compressed_tmp diff --git a/external/packages/bsp/common/usr/sbin/nand-sata-install b/external/packages/bsp/common/usr/sbin/nand-sata-install index d34ce6f..e07cc67 100755 --- a/external/packages/bsp/common/usr/sbin/nand-sata-install +++ b/external/packages/bsp/common/usr/sbin/nand-sata-install @@ -64,11 +64,11 @@ fi mkopts[btrfs]='-f' mkopts[f2fs]='-f' -mountopts[ext2]='defaults,noatime,nodiratime,commit=600,errors=remount-ro,x-gvfs-hide 0 1' -mountopts[ext3]='defaults,noatime,nodiratime,commit=600,errors=remount-ro,x-gvfs-hide 0 1' -mountopts[ext4]='defaults,noatime,nodiratime,commit=600,errors=remount-ro,x-gvfs-hide 0 1' -mountopts[btrfs]='defaults,noatime,nodiratime,commit=600,compress=lzo,x-gvfs-hide 0 2' -mountopts[f2fs]='defaults,noatime,nodiratime,x-gvfs-hide 0 2' +mountopts[ext2]='defaults,noatime,commit=600,errors=remount-ro,x-gvfs-hide 0 1' +mountopts[ext3]='defaults,noatime,commit=600,errors=remount-ro,x-gvfs-hide 0 1' +mountopts[ext4]='defaults,noatime,commit=600,errors=remount-ro,x-gvfs-hide 0 1' +mountopts[btrfs]='defaults,noatime,commit=600,compress=lzo,x-gvfs-hide 0 2' +mountopts[f2fs]='defaults,noatime,x-gvfs-hide 0 2' # Create boot and root file system "$1" = boot, "$2" = root (Example: create_orangepi "/dev/nand1" "/dev/sda3") create_orangepi() @@ -193,7 +193,7 @@ create_orangepi() This will take approximately $(( $((USAGE/300)) * 1 )) minutes to finish. Please wait!\n\n" 11 80 # run rsync again to silently catch outstanding changes between / and "${TempDir}"/rootfs/ - dialog --title "$title" --backtitle "$backtitle" --infobox "\n Cleaning up ... Almost done." 5 40 + dialog --title "$title" --backtitle "$backtitle" --infobox "\n Cleaning up ... Almost done." 5 60 rsync -avrltD --delete --exclude-from=$EX_LIST / "${TempDir}"/rootfs >/dev/null 2>&1 # creating fstab from scratch @@ -211,7 +211,7 @@ create_orangepi() echo "Finishing installation to NAND." >> $logfile REMOVESDTXT="and remove SD to boot from NAND" echo "$1 /boot vfat defaults 0 0" >> "${TempDir}"/rootfs/etc/fstab - echo "$2 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1" >> "${TempDir}"/rootfs/etc/fstab + echo "$2 / ext4 defaults,noatime,commit=600,errors=remount-ro 0 1" >> "${TempDir}"/rootfs/etc/fstab dialog --title "$title" --backtitle "$backtitle" --infobox "\nConverting kernel ... few seconds." 5 60 mkimage -A arm -O linux -T kernel -C none -a "0x40008000" -e "0x40008000" -n "Linux kernel" -d \ /boot/zImage "${TempDir}"/bootfs/uImage >/dev/null 2>&1 @@ -278,7 +278,13 @@ create_orangepi() [[ -f "${TempDir}"/bootfs/boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$targetuuid"'",' -i "${TempDir}"/bootfs/boot/boot.ini [[ -f "${TempDir}"/rootfs/boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$targetuuid"'",' -i "${TempDir}"/rootfs/boot/boot.ini fi - mkimage -C none -A arm -T script -d "${TempDir}"/bootfs/boot/boot.cmd "${TempDir}"/bootfs/boot/boot.scr >/dev/null 2>&1 || (echo 'Error while creating U-Boot loader image with mkimage' >&2 ; exit 5) + + if [[ -f "${TempDir}"/bootfs/boot/extlinux/extlinux.conf ]]; then + sed -e 's,root='"$root_uuid"',root='"$targetuuid"',g' -i "${TempDir}"/bootfs/boot/extlinux/extlinux.conf + [[ -f "${TempDir}"/bootfs/boot/boot.cmd ]] && rm "${TempDir}"/bootfs/boot/boot.cmd + else + mkimage -C none -A arm -T script -d "${TempDir}"/bootfs/boot/boot.cmd "${TempDir}"/bootfs/boot/boot.scr >/dev/null 2>&1 || (echo 'Error while creating U-Boot loader image with mkimage' >&2 ; exit 5) + fi # fstab adj if [[ "$1" != "$2" ]]; then @@ -327,6 +333,10 @@ create_orangepi() sed -e 's,setenv rootfstype.*,setenv rootfstype '"$FilesystemChoosen"',' -i /boot/boot.cmd sed -e 's,setenv rootfstype.*,setenv rootfstype '"$FilesystemChoosen"',' -i /boot/boot.ini fi + if [[ -f /bootfs/boot/extlinux/extlinux.conf ]]; then + sed -e 's,root='"$root_uuid"',root='"$satauuid"',g' -i /boot/extlinux/extlinux.conf + [[ -f /boot/boot.cmd ]] && rm /boot/boot.cmd + fi [[ -f /boot/boot.cmd ]] && mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr >/dev/null 2>&1 || (echo 'Error while creating U-Boot loader image with mkimage' >&2 ; exit 7) mkdir -p "${TempDir}"/rootfs/media/mmc/boot echo "${sduuid} /media/mmcboot ext4 ${mountopts[ext4]}" >> "${TempDir}"/rootfs/etc/fstab @@ -407,7 +417,7 @@ format_nand() show_nand_warning - dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating ... up to one minute." 5 40 + dialog --title "$title" --backtitle "$backtitle" --infobox "\n Formatting ... up to one minute." 5 60 if [[ $DEVICE_TYPE = a20 ]]; then (echo y;) | sunxi-nand-part -f a20 /dev/nand 65536 'bootloader 65536' 'linux 0' >> $logfile 2>&1 else @@ -443,15 +453,21 @@ format_emmc() QUOTED_DEVICE=$(echo "$1" | sed 's:/:\\\/:g') CAPACITY=$(parted "$1" unit s print -sm | awk -F":" "/^${QUOTED_DEVICE}/ {printf (\"%0d\", \$2 / ( 1024 / \$4 ))}") + # We use 16MiB to align partitions which may overestimate the erase block + # size of a NAND device. Overestimating is harmless. (512 byte + # sectors, so we use 32768 as divider and substract 1) if [[ $CAPACITY -lt 4000000 ]]; then # Leave 2 percent unpartitioned when eMMC size is less than 4GB (unlikely) - LASTSECTOR=$(( 32 * $(parted "$1" unit s print -sm | awk -F":" "/^${QUOTED_DEVICE}/ {printf (\"%0d\", ( \$2 * 98 / 3200))}") -1 )) + LASTSECTOR=$(( 32768 * $(parted "$1" unit s print -sm | awk -F":" "/^${QUOTED_DEVICE}/ {printf (\"%0d\", ( \$2 * 98 / 3276800))}") -1 )) else # Leave 1 percent unpartitioned - LASTSECTOR=$(( 32 * $(parted "$1" unit s print -sm | awk -F":" "/^${QUOTED_DEVICE}/ {printf (\"%0d\", ( \$2 * 99 / 3200))}") -1 )) + LASTSECTOR=$(( 32768 * $(parted "$1" unit s print -sm | awk -F":" "/^${QUOTED_DEVICE}/ {printf (\"%0d\", ( \$2 * 99 / 3276800))}") -1 )) fi - parted -s "$1" -- mklabel msdos + # get target partition table type from the root partition device + PART_TABLE_TYPE=$(parted "$root_partition_device" print -sm | awk -F ":" -v pattern="$root_partition_device" '$0 ~ pattern {print $6}') + + parted -s "$1" -- mklabel "$PART_TABLE_TYPE" dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating $1 to $eMMCFilesystemChoosen ... please wait." 5 60 # we can't boot from btrfs or f2fs if [[ $eMMCFilesystemChoosen =~ ^(btrfs|f2fs)$ ]]; then @@ -461,7 +477,7 @@ format_emmc() fi # default boot partition size, in MiB - DEFAULT_BOOTSIZE=96 + DEFAULT_BOOTSIZE=256 # (convert to sectors for partitioning) DEFAULT_BOOTSIZE_SECTORS=$(((${DEFAULT_BOOTSIZE} * 1024 * 1024) / 512)) @@ -573,7 +589,7 @@ update_bootscript() # show warning [TEXT] show_warning() { - dialog --title "$title" --backtitle "$backtitle" --cr-wrap --colors --yesno " \Z1$(toilet -W -f ascii9 WARNING)\Zn\n$1" 14 53 + dialog --title "$title" --backtitle "$backtitle" --cr-wrap --colors --yesno " \Z1$(toilet -W -f ascii9 ' WARNING')\Zn\n$1" 16 67 [[ $? -ne 0 ]] && exit 13 } @@ -587,6 +603,20 @@ stop_running_services() done } +# show warning and write u-boot to SPI flash $1 = spi device name, $2 = u-boot files directory +write_uboot_to_spi_flash() +{ + local MTD_BLK="/dev/$1" + local DIR="$2" + local MESSAGE="This script will update the bootloader on SPI Flash $MTD_BLK. Continue?\nIt will take up to a few minutes." + dialog --title "$title" --backtitle "$backtitle" --cr-wrap --colors --yesno " \Z1$(toilet -W -f ascii9 ' WARNING')\Zn\n$MESSAGE" 16 67 + if [[ $? -eq 0 ]]; then + write_uboot_platform_mtd "$DIR" $MTD_BLK + update_bootscript + echo 'Done' + fi +} + main() { export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin @@ -599,15 +629,15 @@ main() # Check if we run it from SD card # TODO: Disable/remove this in the future - case ${root_partition_device} in - /dev/mmcblk*) # mmc device, we can continue - : - ;; - *) - dialog --title "$title" --backtitle "$backtitle" --colors --infobox '\n\Z1This tool must run from SD-card! \Zn' 5 37 - exit 15 - ;; - esac +# case ${root_partition_device} in +# /dev/mmcblk*) # mmc device, we can continue +# : +# ;; +# *) +# dialog --title "$title" --backtitle "$backtitle" --colors --infobox '\n\Z1 This tool must run from SD-card! \Zn' 5 60 +# exit 15 +# ;; +# esac [ -f $logfile ] && echo -e '\n\n\n' >> $logfile LANG=C echo -e "$(date): Start ${0##*/}.\n" >> $logfile @@ -691,6 +721,15 @@ main() show_warning "This script will erase your device $DISK_ROOT_PART. Continue?" format_disk "$DISK_ROOT_PART" create_orangepi 'spi' "$DISK_ROOT_PART" + + if [[ $(type -t write_uboot_platform_mtd) == function ]]; then + dialog --title "$title" --backtitle "$backtitle" --yesno \ + "Do you want to write the bootloader to SPI flash?\n\nIt is required if you have not done it before or if you have some non-OrangePi bootloader in SPI." 8 60 + + if [[ $? -eq 0 ]]; then + write_uboot_to_spi_flash $spicheck "$DIR" + fi + fi ;; 5) show_warning 'This script will update the bootloader on SD/eMMC. Continue?' @@ -711,11 +750,7 @@ main() return ;; 7) - MTD_BLK="/dev/${spicheck}" - show_warning "This script will update the bootloader on SPI Flash $MTD_BLK. Continue?" - write_uboot_platform_mtd "$DIR" $MTD_BLK - update_bootscript - echo 'Done' + write_uboot_to_spi_flash $spicheck "$DIR" return ;; esac diff --git a/external/packages/bsp/common/usr/sbin/orangepi-add-overlay b/external/packages/bsp/common/usr/sbin/orangepi-add-overlay index 791ad14..674219b 100755 --- a/external/packages/bsp/common/usr/sbin/orangepi-add-overlay +++ b/external/packages/bsp/common/usr/sbin/orangepi-add-overlay @@ -36,7 +36,7 @@ fi . /etc/orangepi-release case "${LINUXFAMILY}" in - sunxi|sunxi64|rockchip64|sun50iw9) + sunxi|sunxi64|rockchip64|sun50iw9|rk3399) :;; *) echo >&2 "Overlays are not supported on ${LINUXFAMILY^} based boards." diff --git a/external/packages/bsp/h3consumption b/external/packages/bsp/h3consumption index 1c007f7..96d134e 100755 --- a/external/packages/bsp/h3consumption +++ b/external/packages/bsp/h3consumption @@ -56,9 +56,9 @@ # ethtool -s eth0 speed 100 duplex full / ethtool -s eth0 speed 1000 duplex full # # More information (and discussion in case questions arise!) in Armbian forum: -# http://forum.armbian.com/index.php/topic/1614-running-h3-boards-with-minimal-consumption/ -# http://forum.armbian.com/index.php/topic/1748-sbc-consumptionperformance-comparisons/ -# http://forum.armbian.com/index.php/topic/1823-opi-pc-wireless-not-powering-off/ +# https://forum.armbian.com/index.php/topic/1614-running-h3-boards-with-minimal-consumption/ +# https://forum.armbian.com/index.php/topic/1748-sbc-consumptionperformance-comparisons/ +# https://forum.armbian.com/index.php/topic/1823-opi-pc-wireless-not-powering-off/ # ############################################################################# # diff --git a/external/packages/bsp/h3disp b/external/packages/bsp/h3disp index 31d994e..0c7da27 100755 --- a/external/packages/bsp/h3disp +++ b/external/packages/bsp/h3disp @@ -52,7 +52,7 @@ # HDMI modes to choose and whether a HDMI-to-DVI converter is used or not # # - maybe implement live resolution switching as outlined by Jernej: -# http://forum.armbian.com/index.php/topic/617-wip-orange-pi-one-support-for-the-upcoming-orange-pi-one/?p=5305 +# https://forum.armbian.com/index.php/topic/617-wip-orange-pi-one-support-for-the-upcoming-orange-pi-one/?p=5305 # (we would also need a working set of fbset modes in /etc/fb.modes # of course) # @@ -370,7 +370,7 @@ ShowVideoModes() { IFS=${OIFS} if [ ! $clean ]; then echo -e "\n Two examples:\n\n '${BOLD}${0##*/}${NC} ${LGREEN}-m 1080p60 -d${NC}' (1920x1080@60Hz DVI)" - echo -e " '${BOLD}${0##*/}${NC} ${LGREEN}-m 720p60${NC}' (1280x720@60Hz HDMI)\n" + echo -e " '${BOLD}${0##*/}${NC} ${LGREEN}-m 720i${NC}' (1280x720@30Hz HDMI)\n" fi } # ShowVideoModes diff --git a/external/packages/bsp/rk3399/rk3399-bluetooth.service b/external/packages/bsp/rk3399/rk3399-bluetooth.service index aa7129e..dbea27d 100644 --- a/external/packages/bsp/rk3399/rk3399-bluetooth.service +++ b/external/packages/bsp/rk3399/rk3399-bluetooth.service @@ -1,9 +1,9 @@ [Unit] -Description=Bluetooth Rockpi +Description=Bluetooth OrangePi After=bluetooth.target [Service] -Type=exec +Type=simple ExecStartPre=/usr/sbin/rfkill unblock all ExecStart=/usr/bin/brcm_patchram_plus_rk3399 -d --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram /lib/firmware/brcm/BCM4345C5.hcd /dev/ttyS0 TimeoutSec=0 diff --git a/external/packages/bsp/rk3399/scripts/io b/external/packages/bsp/rk3399/scripts/io new file mode 100755 index 0000000..e69de29 diff --git a/external/packages/bsp/rk3399/scripts/test_camera-dual.sh b/external/packages/bsp/rk3399/scripts/test_camera-dual.sh new file mode 100755 index 0000000..c73ade0 --- /dev/null +++ b/external/packages/bsp/rk3399/scripts/test_camera-dual.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +preview_mode="width=640,height=480,framerate=30/1" +vsnk="autovideosink" + +export DISPLAY=:0.0 + +#---------------------------------------------------------- +# selfpath +declare -a PreviewDevs=() +# mainpath +declare -a PictureDevs=() +# camera type +declare -a CameraTypes=() + +# isp1 +if [ -d /sys/class/video4linux/v4l-subdev2/device/video4linux/video1 -o \ + -d /sys/class/video4linux/v4l-subdev5/device/video4linux/video1 ]; then + PreviewDevs+=("/dev/video1") + PictureDevs+=("/dev/video0") + CameraTypes+=("mipi") +fi + +# isp2 +if [ -d /sys/class/video4linux/v4l-subdev2/device/video4linux/video6 -o \ + -d /sys/class/video4linux/v4l-subdev5/device/video4linux/video6 ]; then + PreviewDevs+=("/dev/video6") + PictureDevs+=("/dev/video5") + CameraTypes+=("mipi") +fi + +# usb camera +if [ -f /sys/class/video4linux/video10/name ]; then + if [ "$( grep -i "UVC" /sys/class/video4linux/video8/name )" ]; then + PreviewDevs+=("/dev/video10") + PictureDevs+=("/dev/video10") + CameraTypes+=("usb") + fi +fi + +killall gst-launch-1.0 2>&1 > /dev/null +sleep 1 + +for icam in 0 1 +do + [ -c "${PreviewDevs[$icam]}" ] || break + + echo "Start MIPI CSI Camera Preview ${PreviewDevs[$icam]} ..." + + rkargs="device=${PreviewDevs[$icam]}" + if [ ${CameraTypes[$icam]} = "mipi" ]; then + CMD="gst-launch-1.0 rkisp ${rkargs} io-mode=1 \ + ! video/x-raw,format=NV12,${preview_mode} \ + ! ${vsnk}" + else + CMD="gst-launch-1.0 v4l2src ${rkargs} io-mode=4 \ + ! videoconvert ! video/x-raw,format=NV12,${preview_mode} \ + ! ${vsnk}" + fi + + echo "====================================================" + echo "=== GStreamer 1.1 command:" + echo "=== $(echo $CMD | sed -e 's/\r//g')" + echo "====================================================" + + if [ $vsnk = "kmssink" -o "$(id -un)" = "pi" ]; then + eval "${CMD}"& + else + su orangepi -c "${CMD}"& + fi + + sleep 2 +done + diff --git a/external/packages/bsp/rk3399/scripts/test_camera-gst.sh b/external/packages/bsp/rk3399/scripts/test_camera-gst.sh new file mode 100755 index 0000000..e66d456 --- /dev/null +++ b/external/packages/bsp/rk3399/scripts/test_camera-gst.sh @@ -0,0 +1,240 @@ +#!/bin/bash + +export DISPLAY=:0.0 +#su orangepi -c "gst-launch-1.0 -vvv rkisp device=${DEV} io-mode=1 analyzer=1 enable-3a=1 path-iqf=/etc/cam_iq.xml \ +# ! video/x-raw,format=NV12,width=1280,height=720, framerate=30/1 ! videoconvert ! autovideosink" + +icam=0 +vsnk= +action="preview" +output= +verbose="yes" + +#---------------------------------------------------------- +usage() +{ + echo "Usage: $0 [ARGS]" + echo + echo "Options:" + echo -e " -h, --help\n\tshow this help message and exit" + echo -e " -i, --index <0|1>\n\tcamera index, 0 or 1" + echo -e " -a, --action \n\tpreview, take photo or record video" + echo -e " -o, --output \n\toutput file name" + echo -e " -v, --verbose\n\tshow full command" + exit 1 +} + +parse_args() +{ + TEMP=`getopt -o "i:a:o:v:h" --long "index:,action:,output:,verbose:,help" -n "$SELF" -- "$@"` + if [ $? != 0 ] ; then exit 1; fi + eval set -- "$TEMP" + + while true; do + case "$1" in + -i|--index ) icam=$2; shift 2;; + -a|--action) action=$2; shift 2;; + -o|--output) output=$2; shift 2;; + -v|--verbose) verbose=$2; shift 2;; + -h|--help ) usage; exit 1 ;; + -- ) shift; break ;; + * ) echo "invalid option $1"; usage; return 1 ;; + esac + done + + if [ -z "$output" ]; then + if [ $action = "photo" ]; then + output="Image_MIPI.jpg" + elif [ $action = "video" ]; then + output="Video_MIPI.ts" + fi + fi +} + +isp_default_vsnk="autovideosink" +usbcamera_default_vsnk="autovideosink" + +#---------------------------------------------------------- +SELF=$0 +parse_args $@ + +# selfpath +declare -a PreviewDevs=() +# mainpath +declare -a PictureDevs=() +# camera type +declare -a CameraTypes=() +# sink +declare -a Sinks=() + +# preivew format +declare -a PreviewModes=() +# photo format +declare -a PictureModes=() +# video recoard format +declare -a VideoModes=() + +# isp1 +if [ -d /sys/class/video4linux/v4l-subdev2/device/video4linux/video1 -o \ + -d /sys/class/video4linux/v4l-subdev5/device/video4linux/video1 ]; then + PreviewDevs+=("/dev/video1") + PictureDevs+=("/dev/video0") + CameraTypes+=("mipi") + # use did not specify sink + if [ -z "${vsnk}" ]; then + Sinks+=(${isp_default_vsnk}) + else + Sinks+=(${vsnk}) + fi + PreviewModes+=("width=1280,height=720,framerate=30/1") + PictureModes+=("width=1920,height=1080,framerate=10/1") + VideoModes+=("width=1280,height=720,framerate=30/1") +fi + +# isp2 +if [ -d /sys/class/video4linux/v4l-subdev2/device/video4linux/video6 -o \ + -d /sys/class/video4linux/v4l-subdev5/device/video4linux/video6 ]; then + PreviewDevs+=("/dev/video6") + PictureDevs+=("/dev/video5") + CameraTypes+=("mipi") + # use did not specify sink + if [ -z "${vsnk}" ]; then + Sinks+=(${isp_default_vsnk}) + else + Sinks+=(${vsnk}) + fi + PreviewModes+=("width=1280,height=720,framerate=30/1") + PictureModes+=("width=1920,height=1080,framerate=10/1") + VideoModes+=("width=1280,height=720,framerate=30/1") +fi + +# usb camera +if [ -f /sys/class/video4linux/video10/name ]; then + if [ "$( grep -i "UVC" /sys/class/video4linux/video10/name )" ]; then + PreviewDevs+=("/dev/video10") + PictureDevs+=("/dev/video10") + CameraTypes+=("usb") + fi + # use did not specify sink + if [ -z "${vsnk}" ]; then + Sinks+=(${usbcamera_default_vsnk}) + else + Sinks+=(${vsnk}) + fi + PreviewModes+=("width=640,height=480,framerate=30/1") + PictureModes+=("width=640,height=480,framerate=30/1") + VideoModes+=("width=640,height=480,framerate=30/1") +fi + +rkargs="device=${PreviewDevs[$icam]}" +rkargs_mainpath="device=${PictureDevs[$icam]}" + +#---------------------------------------------------------- +killall gst-launch-1.0 2>&1 > /dev/null +sleep 1 + +function start_preview() { + local CMD= + if [ ${CameraTypes[$icam]} = "mipi" ]; then + CMD="gst-launch-1.0 rkisp ${rkargs} io-mode=1 \ + ! video/x-raw,format=NV12,${PreviewModes[$icam]} \ + ! videoconvert ! ${Sinks[$icam]}" + else + CMD="gst-launch-1.0 v4l2src ${rkargs} io-mode=4 \ + ! videoconvert ! video/x-raw,format=NV12,${PreviewModes[$icam]} \ + ! ${Sinks[$icam]}" + fi + + if [ "x${verbose}" == "xyes" ]; then + echo "====================================================" + echo "=== GStreamer 1.1 command:" + echo "=== $(echo $CMD | sed -e 's/\r//g')" + echo "====================================================" + fi + if [ ${Sinks[$icam]} = "kmssink" -o "$(id -un)" = "orangepi" ]; then + eval "${CMD}"& + else + su orangepi -c "${CMD}"& + fi + sleep 2 +} + +function take_photo() { + local CMD= + if [ ${CameraTypes[$icam]} = "mipi" ]; then + CMD="gst-launch-1.0 rkisp num-buffers=20 ${rkargs_mainpath} io-mode=1 \ + ! video/x-raw,format=NV12,${PictureModes[$icam]} \ + ! jpegenc ! multifilesink location=\"/tmp/isp-frame%d.jpg\"" + else + # usb camera only support io-mode=4 + CMD="gst-launch-1.0 v4l2src num-buffers=1 ${rkargs_mainpath} io-mode=4 \ + ! videoconvert ! video/x-raw,format=NV12,${PictureModes[$icam]} \ + ! jpegenc ! filesink location=\"/tmp/usb-frame.jpg\"" + fi + + if [ "x${verbose}" == "xyes" ]; then + echo "====================================================" + echo "=== GStreamer 1.1 command:" + echo "=== $(echo $CMD | sed -e 's/\r//g')" + echo "====================================================" + fi + echo "{{{{{{ start take photo" + if [ ${Sinks[$icam]} = "kmssink" -o "$(id -un)" = "orangepi" ]; then + eval "${CMD}" + else + su orangepi -c "${CMD}" + fi + echo "}}}}}} end take photo" + if [ ${CameraTypes[$icam]} = "mipi" ]; then + if [ -f /tmp/isp-frame19.jpg ]; then + cp /tmp/isp-frame19.jpg ${output} + fi + else + if [ -f /tmp/usb-frame.jpg ]; then + cp /tmp/usb-frame.jpg ${output} + fi + fi +} + +function start_video_recording() { + local CMD= + + if [ ${CameraTypes[$icam]} = "mipi" ]; then + CMD="gst-launch-1.0 rkisp num-buffers=512 ${rkargs_mainpath} io-mode=1 \ + ! video/x-raw,format=NV12,${VideoModes[$icam]} \ + ! mpph264enc ! queue ! h264parse ! mpegtsmux \ + ! filesink location=/tmp/camera-record.ts" + else + # usb camera only support io-mode=4 + CMD="gst-launch-1.0 v4l2src num-buffers=512 ${rkargs_mainpath} io-mode=4 \ + ! videoconvert ! video/x-raw,format=NV12,${VideoModes[$icam]} \ + ! mpph264enc ! queue ! h264parse ! mpegtsmux \ + ! filesink location=/tmp/camera-record.ts" + fi + + if [ "x${verbose}" == "xyes" ]; then + echo "====================================================" + echo "=== GStreamer 1.1 command:" + echo "=== $(echo $CMD | sed -e 's/\r//g')" + echo "====================================================" + fi + echo "{{{{{{ start video recording" + if [ ${Sinks[$icam]} = "kmssink" -o "$(id -un)" = "orangepi" ]; then + eval "${CMD}" + else + su orangepi -c "${CMD}" + fi + if [ -f /tmp/camera-record.ts ]; then + cp /tmp/camera-record.ts ${output} + fi + echo "}}}}}} end video recording" +} + + +if [ "x$action" == "xphoto" ]; then + take_photo +elif [ "x$action" == "xvideo" ]; then + start_video_recording +else + start_preview +fi diff --git a/external/packages/bsp/rk3399/xorg.conf b/external/packages/bsp/rk3399/xorg.conf new file mode 100755 index 0000000..8dc42e5 --- /dev/null +++ b/external/packages/bsp/rk3399/xorg.conf @@ -0,0 +1,24 @@ +Section "Device" + Identifier "Rockchip Graphics" + + ## Use armsoc driver + # Driver "armsoc" + ## End armsoc configuration + + ## Use modesetting and glamor + Driver "modesetting" + Option "AccelMethod" "glamor" ### "glamor" to enable 3D acceleration, "none" to disable. + Option "DRI" "2" + Option "Dri2Vsync" "true" + Option "TripleBuffer" "True" + ## End glamor configuration + + EndSection + + Section "Screen" + Identifier "Default Screen" + SubSection "Display" + Depth 24 + Modes "1920x1080" "1280x1024" "1024x768" "800x600" + EndSubSection + EndSection diff --git a/external/packages/bsp/rockchip/50-hevc.rules b/external/packages/bsp/rockchip/50-hevc.rules new file mode 100755 index 0000000..e511d03 --- /dev/null +++ b/external/packages/bsp/rockchip/50-hevc.rules @@ -0,0 +1 @@ +KERNEL=="hevc-service", MODE="0660", GROUP="video" diff --git a/external/packages/bsp/rockchip/50-mali.rules b/external/packages/bsp/rockchip/50-mali.rules new file mode 100755 index 0000000..9d12c63 --- /dev/null +++ b/external/packages/bsp/rockchip/50-mali.rules @@ -0,0 +1,2 @@ +KERNEL=="mali0", MODE="0660", GROUP="video" +KERNEL=="mali", MODE="0660", GROUP="video" diff --git a/external/packages/bsp/rockchip/50-vpu.rules b/external/packages/bsp/rockchip/50-vpu.rules new file mode 100755 index 0000000..f3ae957 --- /dev/null +++ b/external/packages/bsp/rockchip/50-vpu.rules @@ -0,0 +1 @@ +KERNEL=="vpu-service", MODE="0660", GROUP="video" diff --git a/external/packages/bsp/rockchip/60-media.rules b/external/packages/bsp/rockchip/60-media.rules new file mode 100755 index 0000000..fafe3c6 --- /dev/null +++ b/external/packages/bsp/rockchip/60-media.rules @@ -0,0 +1,2 @@ +KERNEL=="media*", MODE="0660", GROUP="video" +KERNEL=="rga", MODE="0660", GROUP="video" diff --git a/external/packages/bsp/rockchip/70-gpio.rules b/external/packages/bsp/rockchip/70-gpio.rules new file mode 100755 index 0000000..b2e2b2c --- /dev/null +++ b/external/packages/bsp/rockchip/70-gpio.rules @@ -0,0 +1,9 @@ +# Allow group gpio to access gpiomem device +SUBSYSTEM=="rk3288-gpiomem", GROUP="gpio", MODE="0660" + +# To allow additional features like edge detection +SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\ + chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\ + chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\ + chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\ +'" diff --git a/external/packages/bsp/rockchip/71-i2c.rules b/external/packages/bsp/rockchip/71-i2c.rules new file mode 100755 index 0000000..7421364 --- /dev/null +++ b/external/packages/bsp/rockchip/71-i2c.rules @@ -0,0 +1,2 @@ +# Allow i2c group to access i2c devices +SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660" diff --git a/external/packages/bsp/rockchip/89-pulseaudio-usb.rules b/external/packages/bsp/rockchip/89-pulseaudio-usb.rules new file mode 100755 index 0000000..d5c0e60 --- /dev/null +++ b/external/packages/bsp/rockchip/89-pulseaudio-usb.rules @@ -0,0 +1 @@ +ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="481a", ENV{PULSE_IGNORE}="1" \ No newline at end of file diff --git a/external/packages/bsp/rockchip/ap6330-bluetooth.service b/external/packages/bsp/rockchip/ap6330-bluetooth.service new file mode 100755 index 0000000..296282c --- /dev/null +++ b/external/packages/bsp/rockchip/ap6330-bluetooth.service @@ -0,0 +1,11 @@ +[Unit] +Description=AP6330 bluetooth support +Before=bluetooth.service + +[Service] +Type=forking +RemainAfterExit=Yes +ExecStart=/usr/bin/hciattach /dev/ttyS0 bcm43xx 1500000 + +[Install] +WantedBy=multi-user.target diff --git a/external/packages/bsp/rockchip/asound.conf b/external/packages/bsp/rockchip/asound.conf new file mode 100755 index 0000000..6559665 --- /dev/null +++ b/external/packages/bsp/rockchip/asound.conf @@ -0,0 +1,88 @@ +pcm.OnBoard_D0 { + + type hw + card OnBoard + device 0 + +} + +pcm.OnBoard_D1 { + + type hw + card OnBoard + device 1 + +} + +pcm.OnBoard_D2 { + + type hw + card OnBoard + device 2 + +} + +# Configuration to expose the SPDIF device of RK3288 to ALSA. +# The device tree must describe a simple-audio-card device named "SPDIF" +# for this to work properly +# This percolates to PulseAudio, which will eventually show the proper +# labels to the audio device + + + +cards.SPDIF.pcm.iec958.0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string + } + @args.AES0 { + type integer + } + @args.AES1 { + type integer + } + @args.AES2 { + type integer + } + @args.AES3 { + type integer + } + type hw + card $CARD + +} + +# Configuration to expose the HDMI device of RK3288 to ALSA. +# The device tree must describe a simple-audio-card device named "DW-I2S-HDMI" +# for this to work properly +# This percolates to PulseAudio, which will eventually show the proper +# labels to the audio device + + + +cards.DW-I2S-HDMI.pcm.hdmi.0 { + @args [ CARD DEVICE CTLINDEX AES0 AES1 AES2 AES3 ] + @args.CARD { + type string + } + @args.DEVICE { + type integer + } + @args.CTLINDEX { + type integer + } + @args.AES0 { + type integer + } + @args.AES1 { + type integer + } + @args.AES2 { + type integer + } + @args.AES3 { + type integer + } + type hw + card $CARD +} diff --git a/external/packages/bsp/rockchip/hdmi-hotplug b/external/packages/bsp/rockchip/hdmi-hotplug new file mode 100755 index 0000000..7bddf0f --- /dev/null +++ b/external/packages/bsp/rockchip/hdmi-hotplug @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +USER="$(who | grep :0\) | cut -f 1 -d ' ')" +export XAUTHORITY=/home/$USER/.Xauthority +export DISPLAY=:0 +HDMI_STATUS="$(cat /sys/class/drm/card0-HDMI-A-1/status)" + +# Check to see if HDMI connected or not and toggle if change +if [ "${HDMI_STATUS}" = connected ]; then + xrandr + xrandr --output HDMI-1 --auto +else + xrandr --output HDMI-1 --off +fi + +exit 0 \ No newline at end of file diff --git a/external/packages/bsp/rockchip/hdmi.rules b/external/packages/bsp/rockchip/hdmi.rules new file mode 100755 index 0000000..e62977b --- /dev/null +++ b/external/packages/bsp/rockchip/hdmi.rules @@ -0,0 +1 @@ +SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/hdmi-hotplug" \ No newline at end of file diff --git a/external/packages/bsp/rockchip/pulseaudio.txt b/external/packages/bsp/rockchip/pulseaudio.txt new file mode 100755 index 0000000..e615fe7 --- /dev/null +++ b/external/packages/bsp/rockchip/pulseaudio.txt @@ -0,0 +1,8 @@ +#load-module module-alsa-sink +load-module module-alsa-sink device=OnBoard_D0 sink_properties=device.description="BT_VOIP-Output" +load-module module-alsa-sink device=OnBoard_D1 sink_properties=device.description="SPDIF-Output" +load-module module-alsa-sink device=OnBoard_D2 sink_properties=device.description="Headset-Output" +#load-module module-alsa-source device=hw:1,0 +load-module module-alsa-source device=OnBoard_D0 source_properties=device.description="BT_VOIP-Input" +load-module module-alsa-source device=OnBoard_D1 source_properties=device.description="Headset-Input" + diff --git a/external/packages/bsp/rockchip/rtk_hciattach b/external/packages/bsp/rockchip/rtk_hciattach new file mode 100755 index 0000000..c630123 Binary files /dev/null and b/external/packages/bsp/rockchip/rtk_hciattach differ diff --git a/external/packages/bsp/rockchip/start_bt.sh b/external/packages/bsp/rockchip/start_bt.sh new file mode 100755 index 0000000..ca9335b --- /dev/null +++ b/external/packages/bsp/rockchip/start_bt.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +GPIO_CONFIGURED_CHECK_DIRECTORY="/var/run/rtk_bt" +GPIO_CONFIGURED_CHECK_FILE="/var/run/rtk_bt/gpio_configured" + +function die_on_error { + if [ ! $? = 0 ]; then + echo $1 + exit 1 + fi +} + +# Kill any rtk_hciattach actually running. +# Do not complain if we didn't kill anything. +killall -q -SIGTERM rtk_hciattach + +# If the GPIO are not yet configured +if [ ! -f "$GPIO_CONFIGURED_CHECK_FILE" ]; +then + # We'll create the directory first + # So that, if the user is not root + # he'll get a user permission error + mkdir -p "$GPIO_CONFIGURED_CHECK_DIRECTORY" || die_on_error "Could not create$GPIO_CONFIGURED_CHECK_DIRECTORY" + + echo 146 > /sys/class/gpio/export + echo 149 > /sys/class/gpio/export + echo 151 > /sys/class/gpio/export + echo high > /sys/class/gpio/gpio146/direction + echo high > /sys/class/gpio/gpio149/direction + echo high > /sys/class/gpio/gpio151/direction + + echo 1 > $GPIO_CONFIGURED_CHECK_FILE || die_on_error "Could not write to $GPIO_CONFIGURED_CHECK_FILE !" +fi + +# If you run the rtk_hciattach once +# you cannot run it again before` +# resetting the device. +# Since resetting the device before +# the first launch generates no issue, +# we always reset the device. + +echo "Resetting the Bluetooth chip" +echo 0 > /sys/class/gpio/gpio149/value && +echo -e "\tBluetooth chip power down..." && +sleep 1 && +echo 1 > /sys/class/gpio/gpio149/value && +echo -e "\tBluetooth chip power up..." && +sleep 1 +echo -e "\tResetting done" + +/usr/bin/rtk_hciattach -n -s 115200 /dev/ttyS0 rtk_h5 || die_on_error "Could not create hci0 through rtk_hciattach" diff --git a/external/packages/bsp/rockchip/tinker-bluetooth.service b/external/packages/bsp/rockchip/tinker-bluetooth.service new file mode 100755 index 0000000..39f8c33 --- /dev/null +++ b/external/packages/bsp/rockchip/tinker-bluetooth.service @@ -0,0 +1,11 @@ +[Unit] +Description=Realtek H5 bluetooth support +Before=bluetooth.service + +[Service] +ExecStartPre=/usr/sbin/rfkill unblock all +ExecStart=/bin/bash /usr/local/bin/start_bt.sh +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/external/packages/extras-buildpkgs/90-htop.conf b/external/packages/extras-buildpkgs/90-htop.conf index ddc47e3..1f752ff 100644 --- a/external/packages/extras-buildpkgs/90-htop.conf +++ b/external/packages/extras-buildpkgs/90-htop.conf @@ -8,7 +8,7 @@ local package_builddeps="debhelper dpkg-dev libhwloc-dev libncurses5-dev libncur local package_install_target="htop" local package_component="${release}-utils" -if [[ $release == focal ]]; then +if [[ $release =~ focal|bullseye|bookworm ]]; then package_builddeps+=" python3-minimal:native" else package_builddeps+=" python-minimal:native" @@ -16,10 +16,10 @@ fi package_checkbuild() { - [[ $release != xenial && $release != stretch && $release != jessie ]] + [[ $release != xenial && $release != stretch && $release != jessie && $release != bullseye && $release != bookworm ]] } package_checkinstall() { - true + : } diff --git a/external/packages/extras-buildpkgs/90-libvdpau-sunxi.conf b/external/packages/extras-buildpkgs/90-libvdpau-sunxi.conf index a0a1c30..0e53856 100644 --- a/external/packages/extras-buildpkgs/90-libvdpau-sunxi.conf +++ b/external/packages/extras-buildpkgs/90-libvdpau-sunxi.conf @@ -13,7 +13,7 @@ local package_component="${release}-desktop" package_checkbuild() { # we don't support running kernels < 3.13 on Stretch or Bionic - [[ $release != xenial && $release != stretch && $release != bionic && $release != buster && $release != disco && $release != focal ]] + [[ $release != xenial && $release != stretch && $release != bionic && $release != buster && $release != disco && $release != focal && $release != bullseye && $release != bookworm ]] } package_checkinstall() diff --git a/external/packages/extras-buildpkgs/90-mmc-utils.conf b/external/packages/extras-buildpkgs/90-mmc-utils.conf index 0b4fd63..03d2745 100644 --- a/external/packages/extras-buildpkgs/90-mmc-utils.conf +++ b/external/packages/extras-buildpkgs/90-mmc-utils.conf @@ -7,10 +7,10 @@ local package_component="${release}-utils" package_checkbuild() { - [[ $RELEASE != xenial ]] + [[ $RELEASE != xenial && $RELEASE != bullseye && $RELEASE != bookworm ]] } package_checkinstall() { - true + [[ $RELEASE != bullseye && $RELEASE != bookworm ]] } diff --git a/external/packages/extras-buildpkgs/90-sunxi-tools.conf b/external/packages/extras-buildpkgs/90-sunxi-tools.conf index 1200e2b..5ed103d 100644 --- a/external/packages/extras-buildpkgs/90-sunxi-tools.conf +++ b/external/packages/extras-buildpkgs/90-sunxi-tools.conf @@ -7,6 +7,10 @@ local package_builddeps="libusb-1.0-0-dev ruby binutils-arm-none-eabi pkg-config local package_install_target="sunxi-tools" local package_component="${release}-utils" +if [[ $release =~ bullseye|bookworm ]]; then + package_builddeps+=" libfdt-dev" +fi + package_checkbuild() { [[ $RELEASE != xenial ]] diff --git a/external/packages/extras-buildpkgs/libglshim/debian/control b/external/packages/extras-buildpkgs/libglshim/debian/control index 0880a63..854a8d6 100644 --- a/external/packages/extras-buildpkgs/libglshim/debian/control +++ b/external/packages/extras-buildpkgs/libglshim/debian/control @@ -1,7 +1,7 @@ Source: glshim Section: libs Priority: optional -Maintainer: Armbian maintainers +Maintainer: Orange Pi maintainers Build-Depends: debhelper (>= 9), cmake, diff --git a/external/packages/orangepi/builddeb b/external/packages/orangepi/builddeb new file mode 100755 index 0000000..f0fd41b --- /dev/null +++ b/external/packages/orangepi/builddeb @@ -0,0 +1,393 @@ +#!/bin/sh +# +# builddeb 1.3 +# Copyright 2003 Wichert Akkerman +# +# Simple script to generate a deb package for a Linux kernel. All the +# complexity of what to do with a kernel after it is installed or removed +# is left to other scripts and packages: they can install scripts in the +# /etc/kernel/{pre,post}{inst,rm}.d/ directories (or an alternative location +# specified in KDEB_HOOKDIR) that will be called on package install and +# removal. +# +# armbian/bulddeb 0.1 +# Copyright 2021 Leonid Gasheev (The-going <48602507+The-going@users.noreply.github.com>) +# +# In order to make a choice, it is enough for us to check the value +# of the variable in the kernel configuration file and Debian's own variables. +# +# Uncomment the next line to see all the current values. +# echo "$(dpkg-architecture -l)" >&2 + +set -e + +is_enabled() { + grep -q "^$1=y" include/config/auto.conf +} + +if_enabled_echo() { + if is_enabled "$1"; then + echo -n "$2" + elif [ $# -ge 3 ]; then + echo -n "$3" + fi +} + +is_native() { + dpkg-architecture -qDEB_BUILD_ARCH | grep -q "$(dpkg-architecture -qDEB_HOST_ARCH)" +} + +is_build_on_amd64() { + dpkg-architecture -qDEB_BUILD_ARCH | grep -q amd64 +} + +create_package() { + local pname="$1" pdir="$2" + local dpkg_deb_opts + + mkdir -m 755 -p "$pdir/DEBIAN" + mkdir -p "$pdir/usr/share/doc/$pname" + cp debian/copyright "$pdir/usr/share/doc/$pname/" + cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian" + gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian" + sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \ + | xargs -r0 md5sum > DEBIAN/md5sums" + + # Fix ownership and permissions + if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then + dpkg_deb_opts="--root-owner-group" + else + chown -R root:root "$pdir" + fi + chmod -R go-w "$pdir" + # in case we are in a restrictive umask environment like 0077 + chmod -R a+rX "$pdir" + # in case we build in a setuid/setgid directory + chmod -R ug-s "$pdir" + + # Create preinstall and post install script to remove dtb + if [ "$3" = "dtb" ]; then + + cat >> $pdir/DEBIAN/preinst <> $pdir/DEBIAN/postinst < /dev/null || mv dtb-$version dtb +exit 0 +EOT + + chmod 775 $pdir/DEBIAN/preinst + chmod 775 $pdir/DEBIAN/postinst + fi + + # Create postinst prerm script for headers + if [ "$3" = "headers" ]; then + + # Set the time for all files to the current time. + # And build them for the current architecture. + cat >> $pdir/DEBIAN/postinst << EOT +cd /usr/src/linux-headers-$version +echo "Compiling headers - please wait ..." +NCPU=\$(grep -c 'processor' /proc/cpuinfo) +find -type f -exec touch {} + +yes "" | make oldconfig >/dev/null +make -j\$NCPU -s scripts >/dev/null +make -j\$NCPU -s M=scripts/mod/ >/dev/null +exit 0 +EOT + + # After the configuration and compilation processes, new files + # appear that the package manager does not know anything about. + # Just clear all the files in the target directory. + cat >> $pdir/DEBIAN/prerm << EOT +rm -rf /usr/src/linux-headers-$version +exit 0 +EOT + + chmod 775 $pdir/DEBIAN/postinst + chmod 775 $pdir/DEBIAN/prerm + fi + + + # Create the package + dpkg-gencontrol -p$pname -P"$pdir" + dpkg-deb ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" .. +} + +deploy_kernel_headers () { + pdir=$1 + + rm -rf $pdir + + destdir=$pdir/usr/src/linux-headers-$version + mkdir -p $destdir + + ( + cd $srctree + find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl + find arch/*/include include scripts -type f -o -type l + find security/*/include -type f + find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform + find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f + ) > debian/hdrsrcfiles + + { + if is_enabled CONFIG_STACK_VALIDATION; then + # echo tools/objtool/objtool + find tools/objtool -type f -executable + fi + + find arch/$SRCARCH/include Module.symvers include scripts -type f + + if is_enabled CONFIG_GCC_PLUGINS; then + find scripts/gcc-plugins -name \*.so -o -name gcc-common.h + fi + } > debian/hdrobjfiles + + if is_native; then + echo "info: Build native: Skip headers-debian-byteshift.patch" >&2 + elif is_build_on_amd64; then + ( + cd $destdir + patch -p1 < /tmp/headers-debian-byteshift.patch + ) + fi + + tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir + tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir + rm -f debian/hdrsrcfiles debian/hdrobjfiles + + # copy .config manually to be where it's expected to be + cp $KCONFIG_CONFIG $destdir/.config + + mkdir -p $pdir/lib/modules/$version/ + ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build +} + +deploy_libc_headers () { + pdir=$1 + + rm -rf $pdir + + $MAKE -f $srctree/Makefile headers + $MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH=$pdir/usr + + # move asm headers to /usr/include//asm to match the structure + # used by Debian-based distros (to support multi-arch) + host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH) + mkdir $pdir/usr/include/$host_arch + mv $pdir/usr/include/asm $pdir/usr/include/$host_arch/ +} + +version=$KERNELRELEASE +tmpdir="debian/tmp" +kernel_headers_dir="debian/hdrtmp" +libc_headers_dir="debian/headertmp" +dbg_dir="debian/dbgtmp" +dtb_dir="debian/dtbtmp" +packagename=linux-image-"$BRANCH$LOCALVERSION" +kernel_headers_packagename=linux-headers-"$BRANCH$LOCALVERSION" +dtb_packagename=linux-dtb-"$BRANCH$LOCALVERSION" +libc_headers_packagename=linux-libc-dev +dbg_packagename=$packagename-dbg + +if [ "$ARCH" = "um" ] ; then + packagename=user-mode-linux-$version +fi + +# Not all arches have the same installed path in debian +# XXX: have each arch Makefile export a variable of the canonical image install +# path instead +case $ARCH in +++aarch64|arm64) + image_name=Image + installed_image_path="boot/vmlinuz-$version" + ;; +arm*) + image_name=zImage + installed_image_path="boot/vmlinuz-$version" + ;; +um) + installed_image_path="usr/bin/linux-$version" + ;; +parisc|mips|powerpc) + installed_image_path="boot/vmlinux-$version" + ;; +*) + image_name=vmlinuz + installed_image_path="boot/vmlinuz-$version" +esac + +BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes) + +# Setup the directory structure +rm -rf "$tmpdir" "$dbg_dir" "$dtb_dir" debian/files +mkdir -m 755 -p "$tmpdir/DEBIAN" +mkdir -p "$tmpdir/lib" "$tmpdir/boot" +mkdir -m 755 -p "$dtb_dir/DEBIAN" +mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename" +mkdir -m 755 -p "$kernel_headers_dir/lib/modules/$version/" +mkdir -m 755 -p "$libc_headers_dir/DEBIAN" + +# Install the kernel +if [ "$ARCH" = "um" ] ; then + mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename" + $MAKE linux + cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" + cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" + gzip "$tmpdir/usr/share/doc/$packagename/config" +else + cp System.map "$tmpdir/boot/System.map-$version" + cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" +fi +cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path" + +if is_enabled CONFIG_OF_EARLY_FLATTREE; then + # Only some architectures with OF support have this target + if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then + $MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install + fi +fi + +if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then + #mkdir -p "$tmpdir/boot/dtb" + INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" $MAKE KBUILD_SRC= dtbs_install +fi + +if is_enabled CONFIG_MODULES; then + INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install + rm -f "$tmpdir/lib/modules/$version/build" + rm -f "$tmpdir/lib/modules/$version/source" + if [ "$ARCH" = "um" ] ; then + mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/" + rmdir "$tmpdir/lib/modules/$version" + fi + if [ -n "$BUILD_DEBUG" ] ; then + for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do + module=lib/modules/$module + mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) + # only keep debug symbols in the debug file + $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module + # strip original module from debug symbols + $OBJCOPY --strip-debug $tmpdir/$module + # then add a link to those + $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module + done + + # resign stripped modules + if is_enabled CONFIG_MODULE_SIG_ALL; then + INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign + fi + fi +fi + +# Install the maintainer scripts +# Note: hook scripts under /etc/kernel are also executed by official Debian +# kernel packages, as well as kernel packages built using make-kpkg. +# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and +# so do we; recent versions of dracut and initramfs-tools will obey this. +debhookdir=${KDEB_HOOKDIR:-/etc/kernel} +for script in postinst postrm preinst prerm ; do + mkdir -p "$tmpdir$debhookdir/$script.d" + cat < "$tmpdir/DEBIAN/$script" +#!/bin/bash + +set -e + +# Pass maintainer script parameters to hook scripts +export DEB_MAINT_PARAMS="\$*" + +# Tell initramfs builder whether it's wanted +export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No) + +test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d +exit 0 +EOF + chmod 755 "$tmpdir/DEBIAN/$script" +done + +## +## Create sym link to kernel image +## +sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst +cat >> $tmpdir/DEBIAN/postinst << EOT +ln -sf $(basename $installed_image_path) /boot/$image_name 2> /dev/null || mv /$installed_image_path /boot/$image_name +touch /boot/.next +exit 0 +EOT + +## +## FAT install workaround +## +sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst +cat >> $tmpdir/DEBIAN/preinst <&2 + # echo "Skip creating postinst prerm scripts for headers" >&2 + deploy_kernel_headers $kernel_headers_dir + create_package $kernel_headers_packagename $kernel_headers_dir + else + # Clean up the executables that are left over from + # cross-compilation for a different host architecture. + (cd $srctree; make M=scripts clean;) + deploy_kernel_headers $kernel_headers_dir + create_package $kernel_headers_packagename $kernel_headers_dir "headers" + fi + fi + +fi + +if [ -n "$BUILD_DEBUG" ] ; then + # Build debug package + # Different tools want the image in different locations + # perf + mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/ + cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/ + # systemtap + mkdir -p $dbg_dir/usr/lib/debug/boot/ + ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version + # kdump-tools + ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version + create_package "$dbg_packagename" "$dbg_dir" +fi + +exit 0 diff --git a/external/packages/orangepi/mkdebian b/external/packages/orangepi/mkdebian new file mode 100755 index 0000000..d5b51b6 --- /dev/null +++ b/external/packages/orangepi/mkdebian @@ -0,0 +1,256 @@ +#!/bin/sh +# +# Copyright 2003 Wichert Akkerman +# +# Simple script to generate a debian/ directory for a Linux kernel. + +set -e + +is_enabled() { + grep -q "^$1=y" include/config/auto.conf +} + +if_enabled_echo() { + if is_enabled "$1"; then + echo -n "$2" + elif [ $# -ge 3 ]; then + echo -n "$3" + fi +} + +set_debarch() { + if [ -n "$KBUILD_DEBARCH" ] ; then + debarch="$KBUILD_DEBARCH" + return + fi + + # Attempt to find the correct Debian architecture + case "$UTS_MACHINE" in + i386|ia64|alpha|m68k|riscv*) + debarch="$UTS_MACHINE" ;; + x86_64) + debarch=amd64 ;; + sparc*) + debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;; + s390*) + debarch=s390x ;; + ppc*) + if is_enabled CONFIG_64BIT; then + debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el) + else + debarch=powerpc$(if_enabled_echo CONFIG_SPE spe) + fi + ;; + parisc*) + debarch=hppa ;; + mips*) + if is_enabled CONFIG_CPU_LITTLE_ENDIAN; then + debarch=mips$(if_enabled_echo CONFIG_64BIT 64)$(if_enabled_echo CONFIG_CPU_MIPSR6 r6)el + elif is_enabled CONFIG_CPU_MIPSR6; then + debarch=mips$(if_enabled_echo CONFIG_64BIT 64)r6 + else + debarch=mips + fi + ;; + aarch64|arm64) + debarch=arm64 ;; + arm*) + if is_enabled CONFIG_AEABI; then + debarch=arm$(if_enabled_echo CONFIG_VFP hf el) + else + debarch=arm + fi + ;; + openrisc) + debarch=or1k ;; + sh) + if is_enabled CONFIG_CPU_SH3; then + debarch=sh3$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb) + elif is_enabled CONFIG_CPU_SH4; then + debarch=sh4$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb) + fi + ;; + esac + if [ -z "$debarch" ]; then + debarch=$(dpkg-architecture -qDEB_HOST_ARCH) + echo "" >&2 + echo "** ** ** WARNING ** ** **" >&2 + echo "" >&2 + echo "Your architecture doesn't have its equivalent" >&2 + echo "Debian userspace architecture defined!" >&2 + echo "Falling back to the current host architecture ($debarch)." >&2 + echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 + echo "" >&2 + fi +} + +# Some variables and settings used throughout the script +KDEB_SOURCENAME=linux-$KERNELRELEASE +version=$KERNELRELEASE +if [ -n "$KDEB_PKGVERSION" ]; then + packageversion=$KDEB_PKGVERSION + revision=${packageversion##*-} +else + revision=$(cat .version 2>/dev/null||echo 1) + packageversion=$version-$revision +fi +sourcename=$KDEB_SOURCENAME +packagename=linux-image-"$BRANCH$LOCALVERSION" +kernel_headers_packagename=linux-headers-"$BRANCH$LOCALVERSION" +libc_headers_packagename=linux-libc-dev +dtb_packagename=linux-dtb-"$BRANCH$LOCALVERSION" +dbg_packagename=$packagename-dbg + +if [ "$ARCH" = "um" ] ; then + packagename=user-mode-linux-$version +fi + +debarch= +set_debarch + +email=${DEBEMAIL-$EMAIL} + +# use email string directly if it contains +if echo $email | grep -q '<.*>'; then + maintainer=$email +else + # or construct the maintainer string + user=${KBUILD_BUILD_USER-$(id -nu)} + name=${DEBFULLNAME-$user} + if [ -z "$email" ]; then + buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)} + email="$user@$buildhost" + fi + maintainer="$name <$email>" +fi + +# Try to determine distribution +if [ -n "$KDEB_CHANGELOG_DIST" ]; then + distribution=$KDEB_CHANGELOG_DIST +# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog +elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then + : # nothing to do in this case +else + distribution="unstable" + echo >&2 "Using default distribution of 'unstable' in the changelog" + echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" +fi + +mkdir -p debian/source/ +echo "1.0" > debian/source/format + +echo $debarch > debian/arch +extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)" +extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)" + +# Generate a simple changelog template +cat < debian/changelog +$sourcename ($packageversion) $distribution; urgency=low + + * Orange Pi built Linux kernel. $BRANCH + + -- $maintainer $(date -R) +EOF + +# Generate copyright file +cat < debian/copyright +This is a packacked orangepi patches version of the Linux kernel. + +The sources may be found at most Linux archive sites, including: +https://www.kernel.org/pub/linux/kernel + +Copyright: 1991 - 2018 Linus Torvalds and others. + +The git repository for mainline kernel development is at: +git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + +On Debian GNU/Linux systems, the complete text of the GNU General Public +License version 2 can be found in \`/usr/share/common-licenses/GPL-2'. +EOF + +# Generate a control file +cat < debian/control +Source: $sourcename +Section: kernel +Priority: optional +Maintainer: $maintainer +Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends +Homepage: https://www.kernel.org/ + +Package: $packagename +Architecture: $debarch +Provides: linux-image, linux-image-orangepi, orangepi-$BRANCH +Description: Linux kernel, orangepi version $version $BRANCH + This package contains the Linux kernel, modules and corresponding other + files, version: $version. + +Package: $libc_headers_packagename +Section: devel +Provides: linux-kernel-headers +Conflicts: linux-kernel-headers +Replaces: linux-kernel-headers +Architecture: $debarch +Description: Orange Pi Linux support headers for userspace development + This package provides userspaces headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system libraries. +Multi-Arch: same + +Package: $dtb_packagename +Architecture: $debarch +Provides: linux-dtb, linux-dtb-orangepi, orangepi-$BRANCH +Description: Orange Pi Linux DTB, version $version $BRANCH + This package contains device blobs from the Linux kernel, version $version +EOF + +if is_enabled CONFIG_MODULES; then +cat <> debian/control + +Package: $kernel_headers_packagename +Section: devel +Architecture: $debarch +Provides: linux-headers, linux-headers-orangepi, orangepi-$BRANCH +Depends: make, gcc, libc6-dev, bison, flex, libssl-dev +Description: Linux kernel headers for $version on $debarch $BRANCH + This package provides kernel header files for $version on $debarch + . + This is useful for people who need to build external modules +EOF +fi + +if is_enabled CONFIG_DEBUG_INFO; then +cat <> debian/control +Package: $dbg_packagename +Section: debug +Architecture: $debarch +Description: Linux kernel debugging symbols for $version + This package will come in handy if you need to debug the kernel. It provides + all the necessary debug symbols for the kernel and its modules. +EOF +fi + +cat < debian/rules +#!$(command -v $MAKE) -f + +srctree ?= . + +build: + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ + KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile + +binary-arch: + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ + KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg + +clean: + rm -rf debian/*tmp debian/files + \$(MAKE) clean + +binary: binary-arch +EOF +chmod +x debian/rules + +exit 0 diff --git a/external/packages/pack-uboot/sun50iw6/bin/dts/orangepi3-lts-u-boot.dts b/external/packages/pack-uboot/sun50iw6/bin/dts/orangepi3-lts-u-boot.dts old mode 100644 new mode 100755 diff --git a/external/packages/pack-uboot/sun50iw9/bin/dts/orangepi400-u-boot.dts b/external/packages/pack-uboot/sun50iw9/bin/dts/orangepi400-u-boot.dts new file mode 100755 index 0000000..ef659c6 --- /dev/null +++ b/external/packages/pack-uboot/sun50iw9/bin/dts/orangepi400-u-boot.dts @@ -0,0 +1,6037 @@ +/dts-v1/; + +/memreserve/ 0x0000000048000000 0x0000000001000000; +/ { + interrupt-parent = <0x1>; + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "Orange Pi 400"; + compatible = "allwinner,h616", "arm,sun50iw9p1"; + + clocks { + compatible = "allwinner,clk-init"; + device_type = "clocks"; + #address-cells = <0x2>; + #size-cells = <0x2>; + ranges; + reg = <0x0 0x3001000 0x0 0x1000 0x0 0x7010000 0x0 0x400 0x0 0x7000000 0x0 0x4>; + + losc { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-clock"; + clock-frequency = <0x8000>; + clock-output-names = "losc"; + linux,phandle = <0x1e>; + phandle = <0x1e>; + }; + + iosc { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-clock"; + clock-frequency = <0xf42400>; + clock-output-names = "iosc"; + linux,phandle = <0x20>; + phandle = <0x20>; + }; + + hosc { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-clock"; + clock-frequency = <0x16e3600>; + clock-output-names = "hosc"; + linux,phandle = <0x9>; + phandle = <0x9>; + }; + + osc48m { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-clock"; + clock-frequency = <0x2dc6c00>; + clock-output-names = "osc48m"; + linux,phandle = <0xa>; + phandle = <0xa>; + }; + + hoscdiv32k { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-clock"; + clock-frequency = <0x8000>; + clock-output-names = "hoscdiv32k"; + linux,phandle = <0xdd>; + phandle = <0xdd>; + }; + + pll_periph0div25m { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-clock"; + clock-frequency = <0x17d7840>; + clock-output-names = "pll_periph0div25m"; + linux,phandle = <0xde>; + phandle = <0xde>; + }; + + pll_cpu { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + clock-output-names = "pll_cpu"; + linux,phandle = <0xd3>; + phandle = <0xd3>; + }; + + pll_ddr0 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + clock-output-names = "pll_ddr0"; + linux,phandle = <0xd8>; + phandle = <0xd8>; + }; + + pll_ddr1 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + clock-output-names = "pll_ddr1"; + linux,phandle = <0xdf>; + phandle = <0xdf>; + }; + + pll_periph0 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + assigned-clocks = <0x2>; + assigned-clock-rates = <0x23c34600>; + lock-mode = "new"; + clock-output-names = "pll_periph0"; + linux,phandle = <0x2>; + phandle = <0x2>; + }; + + pll_periph1 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + assigned-clocks = <0x3>; + assigned-clock-rates = <0x23c34600>; + lock-mode = "new"; + clock-output-names = "pll_periph1"; + linux,phandle = <0x3>; + phandle = <0x3>; + }; + + pll_gpu { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + clock-output-names = "pll_gpu"; + linux,phandle = <0xda>; + phandle = <0xda>; + }; + + pll_video0x4 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + clock-output-names = "pll_video0x4"; + linux,phandle = <0x8>; + phandle = <0x8>; + }; + + pll_video1 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + assigned-clocks = <0x4>; + assigned-clock-rates = <0x19bfcc00>; + clock-output-names = "pll_video1"; + linux,phandle = <0x4>; + phandle = <0x4>; + }; + + pll_video2 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + assigned-clocks = <0x5>; + clock-output-names = "pll_video2"; + linux,phandle = <0x5>; + phandle = <0x5>; + }; + + pll_ve { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + device_type = "clk_pll_ve"; + lock-mode = "new"; + clock-output-names = "pll_ve"; + linux,phandle = <0x26>; + phandle = <0x26>; + }; + + pll_de { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + assigned-clocks = <0x6>; + assigned-clock-rates = <0x297c1e00>; + lock-mode = "new"; + clock-output-names = "pll_de"; + linux,phandle = <0x6>; + phandle = <0x6>; + }; + + pll_csi { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + lock-mode = "new"; + clock-output-names = "pll_csi"; + linux,phandle = <0xa5>; + phandle = <0xa5>; + }; + + pll_audiox4 { + #clock-cells = <0x0>; + compatible = "allwinner,pll-clock"; + assigned-clocks = <0x7>; + assigned-clock-rates = <0x5dc0000>; + lock-mode = "new"; + clock-output-names = "pll_audiox4"; + linux,phandle = <0x7>; + phandle = <0x7>; + }; + + pll_periph0x2 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x2>; + clock-mult = <0x2>; + clock-div = <0x1>; + clock-output-names = "pll_periph0x2"; + linux,phandle = <0xc>; + phandle = <0xc>; + }; + + pll_periph0x4 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x2>; + clock-mult = <0x4>; + clock-div = <0x1>; + clock-output-names = "pll_periph0x4"; + linux,phandle = <0xe0>; + phandle = <0xe0>; + }; + + periph32k { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x2>; + clock-mult = <0x2>; + clock-div = <0x8f0d>; + clock-output-names = "periph32k"; + linux,phandle = <0xe1>; + phandle = <0xe1>; + }; + + pll_periph1x2 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x3>; + clock-mult = <0x2>; + clock-div = <0x1>; + clock-output-names = "pll_periph1x2"; + linux,phandle = <0x86>; + phandle = <0x86>; + }; + + pll_audio { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x7>; + clock-mult = <0x1>; + clock-div = <0x4>; + clock-output-names = "pll_audio"; + linux,phandle = <0x60>; + phandle = <0x60>; + }; + + pll_audiox2 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x7>; + clock-mult = <0x1>; + clock-div = <0x2>; + clock-output-names = "pll_audiox2"; + linux,phandle = <0xe2>; + phandle = <0xe2>; + }; + + pll_video0 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x8>; + clock-mult = <0x1>; + clock-div = <0x4>; + clock-output-names = "pll_video0"; + linux,phandle = <0xe3>; + phandle = <0xe3>; + }; + + pll_video1x4 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x4>; + clock-mult = <0x4>; + clock-div = <0x1>; + clock-output-names = "pll_video1x4"; + linux,phandle = <0xe4>; + phandle = <0xe4>; + }; + + pll_video2x4 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x5>; + clock-mult = <0x4>; + clock-div = <0x1>; + clock-output-names = "pll_video2x4"; + linux,phandle = <0xe5>; + phandle = <0xe5>; + }; + + hoscd2 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x9>; + clock-mult = <0x1>; + clock-div = <0x2>; + clock-output-names = "hoscd2"; + linux,phandle = <0xe6>; + phandle = <0xe6>; + }; + + osc48md4 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0xa>; + clock-mult = <0x1>; + clock-div = <0x4>; + clock-output-names = "osc48md4"; + linux,phandle = <0x52>; + phandle = <0x52>; + }; + + pll_periph0d6 { + #clock-cells = <0x0>; + compatible = "allwinner,fixed-factor-clock"; + clocks = <0x2>; + clock-mult = <0x1>; + clock-div = <0x6>; + clock-output-names = "pll_periph0d6"; + linux,phandle = <0xe7>; + phandle = <0xe7>; + }; + + cpu { + #clock-cells = <0x0>; + compatible = "allwinner,cpu-clock"; + clock-output-names = "cpu"; + linux,phandle = <0xe8>; + phandle = <0xe8>; + }; + + axi { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "axi"; + linux,phandle = <0xe9>; + phandle = <0xe9>; + }; + + cpuapb { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "cpuapb"; + linux,phandle = <0xea>; + phandle = <0xea>; + }; + + psi { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "psi"; + linux,phandle = <0xeb>; + phandle = <0xeb>; + }; + + ahb1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ahb1"; + linux,phandle = <0xec>; + phandle = <0xec>; + }; + + ahb2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ahb2"; + linux,phandle = <0xed>; + phandle = <0xed>; + }; + + ahb3 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ahb3"; + linux,phandle = <0xee>; + phandle = <0xee>; + }; + + apb1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "apb1"; + linux,phandle = <0xef>; + phandle = <0xef>; + }; + + apb2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "apb2"; + linux,phandle = <0xb7>; + phandle = <0xb7>; + }; + + mbus { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "mbus"; + linux,phandle = <0xf0>; + phandle = <0xf0>; + }; + + de { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0x6>; + assigned-clock-rates = <0x297c1e00>; + assigned-clocks = <0xb>; + clock-output-names = "de"; + linux,phandle = <0xb>; + phandle = <0xb>; + }; + + g2d { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0xc>; + assigned-clock-rates = <0x11e1a300>; + assigned-clocks = <0xd>; + clock-output-names = "g2d"; + linux,phandle = <0xd>; + phandle = <0xd>; + }; + + di { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0xc>; + assigned-clock-rates = <0x11e1a300>; + assigned-clocks = <0xe>; + clock-output-names = "di"; + linux,phandle = <0xe>; + phandle = <0xe>; + }; + + gpu0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "gpu0"; + linux,phandle = <0xdb>; + phandle = <0xdb>; + }; + + gpu1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "gpu1"; + linux,phandle = <0xdc>; + phandle = <0xdc>; + }; + + ce { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ce"; + linux,phandle = <0xb5>; + phandle = <0xb5>; + }; + + ve { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ve"; + linux,phandle = <0x27>; + phandle = <0x27>; + }; + + dma { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "dma"; + linux,phandle = <0x1f>; + phandle = <0x1f>; + }; + + msgbox { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "msgbox"; + linux,phandle = <0x21>; + phandle = <0x21>; + }; + + hwspinlock_rst { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "hwspinlock_rst"; + linux,phandle = <0x22>; + phandle = <0x22>; + }; + + hwspinlock_bus { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "hwspinlock_bus"; + linux,phandle = <0x23>; + phandle = <0x23>; + }; + + hstimer { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "hstimer"; + linux,phandle = <0xf1>; + phandle = <0xf1>; + }; + + avs { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "avs"; + linux,phandle = <0xf2>; + phandle = <0xf2>; + }; + + dbgsys { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "dbgsys"; + linux,phandle = <0xf3>; + phandle = <0xf3>; + }; + + pwm { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "pwm"; + linux,phandle = <0x9b>; + phandle = <0x9b>; + }; + + iommu { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "iommu"; + linux,phandle = <0xd9>; + phandle = <0xd9>; + }; + + sdram { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdram"; + linux,phandle = <0xf4>; + phandle = <0xf4>; + }; + + nand0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "nand0"; + linux,phandle = <0xbb>; + phandle = <0xbb>; + }; + + nand1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "nand1"; + linux,phandle = <0xbc>; + phandle = <0xbc>; + }; + + sdmmc0_mod { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc0_mod"; + linux,phandle = <0x8d>; + phandle = <0x8d>; + }; + + sdmmc0_bus { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc0_bus"; + linux,phandle = <0x8e>; + phandle = <0x8e>; + }; + + sdmmc0_rst { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc0_rst"; + linux,phandle = <0x8f>; + phandle = <0x8f>; + }; + + sdmmc1_mod { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc1_mod"; + linux,phandle = <0x93>; + phandle = <0x93>; + }; + + sdmmc1_bus { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc1_bus"; + linux,phandle = <0x94>; + phandle = <0x94>; + }; + + sdmmc1_rst { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc1_rst"; + linux,phandle = <0x95>; + phandle = <0x95>; + }; + + sdmmc2_mod { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc2_mod"; + linux,phandle = <0x87>; + phandle = <0x87>; + }; + + sdmmc2_bus { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc2_bus"; + linux,phandle = <0x88>; + phandle = <0x88>; + }; + + sdmmc2_rst { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "sdmmc2_rst"; + linux,phandle = <0x89>; + phandle = <0x89>; + }; + + uart0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "uart0"; + linux,phandle = <0x29>; + phandle = <0x29>; + }; + + uart1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "uart1"; + linux,phandle = <0x2c>; + phandle = <0x2c>; + }; + + uart2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "uart2"; + linux,phandle = <0x2f>; + phandle = <0x2f>; + }; + + uart3 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "uart3"; + linux,phandle = <0x32>; + phandle = <0x32>; + }; + + uart4 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "uart4"; + linux,phandle = <0x35>; + phandle = <0x35>; + }; + + uart5 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "uart5"; + linux,phandle = <0x38>; + phandle = <0x38>; + }; + + twi0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "twi0"; + linux,phandle = <0x3b>; + phandle = <0x3b>; + }; + + twi1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "twi1"; + linux,phandle = <0x3e>; + phandle = <0x3e>; + }; + + twi2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "twi2"; + linux,phandle = <0x41>; + phandle = <0x41>; + }; + + twi3 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "twi3"; + linux,phandle = <0x44>; + phandle = <0x44>; + }; + + twi4 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "twi4"; + linux,phandle = <0x47>; + phandle = <0x47>; + }; + + scr0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "scr0"; + linux,phandle = <0xb6>; + phandle = <0xb6>; + }; + + spi0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "spi0"; + linux,phandle = <0x7d>; + phandle = <0x7d>; + }; + + spi1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "spi1"; + linux,phandle = <0x81>; + phandle = <0x81>; + }; + + ephy_25m { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ephy_25m"; + linux,phandle = <0xcc>; + phandle = <0xcc>; + }; + + gmac0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "gmac0"; + linux,phandle = <0xcb>; + phandle = <0xcb>; + }; + + gmac1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "gmac1"; + linux,phandle = <0xcf>; + phandle = <0xcf>; + }; + + gpadc { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "gpadc"; + linux,phandle = <0xc9>; + phandle = <0xc9>; + }; + + ts { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ts"; + linux,phandle = <0xc0>; + phandle = <0xc0>; + }; + + ths { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ths"; + linux,phandle = <0xc3>; + phandle = <0xc3>; + }; + + spdif { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "spdif"; + linux,phandle = <0x61>; + phandle = <0x61>; + }; + + dmic { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "dmic"; + linux,phandle = <0x64>; + phandle = <0x64>; + }; + + codec_1x { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "codec_1x"; + linux,phandle = <0x67>; + phandle = <0x67>; + }; + + codec_4x { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "codec_4x"; + linux,phandle = <0xf5>; + phandle = <0xf5>; + }; + + ahub { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "ahub"; + linux,phandle = <0x6a>; + phandle = <0x6a>; + }; + + usbphy0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbphy0"; + linux,phandle = <0x4d>; + phandle = <0x4d>; + }; + + usbphy1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbphy1"; + linux,phandle = <0x54>; + phandle = <0x54>; + }; + + usbphy2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbphy2"; + linux,phandle = <0x58>; + phandle = <0x58>; + }; + + usbphy3 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbphy3"; + linux,phandle = <0x5c>; + phandle = <0x5c>; + }; + + usbohci0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci0"; + linux,phandle = <0x50>; + phandle = <0x50>; + }; + + usbohci0_12m { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci0_12m"; + linux,phandle = <0x51>; + phandle = <0x51>; + }; + + usbohci1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci1"; + linux,phandle = <0x56>; + phandle = <0x56>; + }; + + usbohci1_12m { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci1_12m"; + linux,phandle = <0x57>; + phandle = <0x57>; + }; + + usbohci2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci2"; + linux,phandle = <0x5a>; + phandle = <0x5a>; + }; + + usbohci2_12m { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci2_12m"; + linux,phandle = <0x5b>; + phandle = <0x5b>; + }; + + usbohci3 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci3"; + linux,phandle = <0x5e>; + phandle = <0x5e>; + }; + + usbohci3_12m { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbohci3_12m"; + linux,phandle = <0x5f>; + phandle = <0x5f>; + }; + + usbehci0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbehci0"; + linux,phandle = <0x4f>; + phandle = <0x4f>; + }; + + usbehci1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbehci1"; + linux,phandle = <0x55>; + phandle = <0x55>; + }; + + usbehci2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbehci2"; + linux,phandle = <0x59>; + phandle = <0x59>; + }; + + usbehci3 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbehci3"; + linux,phandle = <0x5d>; + phandle = <0x5d>; + }; + + usb3_0_host { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usb3_0_host"; + linux,phandle = <0xf6>; + phandle = <0xf6>; + }; + + usbotg { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "usbotg"; + linux,phandle = <0x4e>; + phandle = <0x4e>; + }; + + lradc { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "lradc"; + linux,phandle = <0xca>; + phandle = <0xca>; + }; + + hdmi { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0x5>; + assigned-clocks = <0xf>; + clock-output-names = "hdmi"; + linux,phandle = <0xf>; + phandle = <0xf>; + }; + + hdmi_slow { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clocks = <0x10>; + clock-output-names = "hdmi_slow"; + linux,phandle = <0x10>; + phandle = <0x10>; + }; + + hdmi_cec { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clocks = <0x11>; + clock-output-names = "hdmi_cec"; + linux,phandle = <0x11>; + phandle = <0x11>; + }; + + display_top { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "display_top"; + linux,phandle = <0x98>; + phandle = <0x98>; + }; + + tcon_lcd { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "tcon_lcd"; + assigned-clock-parents = <0x8>; + assigned-clocks = <0x12>; + linux,phandle = <0x12>; + phandle = <0x12>; + }; + + tcon_lcd1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "tcon_lcd1"; + assigned-clock-parents = <0x4>; + assigned-clocks = <0x13>; + linux,phandle = <0x13>; + phandle = <0x13>; + }; + + tcon_tv { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0x5>; + assigned-clocks = <0x14>; + clock-output-names = "tcon_tv"; + linux,phandle = <0x14>; + phandle = <0x14>; + }; + + tcon_tv1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0x4>; + assigned-clocks = <0x15>; + clock-output-names = "tcon_tv1"; + linux,phandle = <0x15>; + phandle = <0x15>; + }; + + lvds { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "lvds"; + assigned-clocks = <0x16>; + linux,phandle = <0x16>; + phandle = <0x16>; + }; + + tve { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "tve"; + assigned-clock-parents = <0x4>; + assigned-clocks = <0x17>; + linux,phandle = <0x17>; + phandle = <0x17>; + }; + + tve_top { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "tve_top"; + assigned-clock-parents = <0x4>; + assigned-clocks = <0x18>; + linux,phandle = <0x18>; + phandle = <0x18>; + }; + + csi_top { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "csi_top"; + linux,phandle = <0xa4>; + phandle = <0xa4>; + }; + + csi_master0 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "csi_master0"; + linux,phandle = <0xa6>; + phandle = <0xa6>; + }; + + csi_master1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "csi_master1"; + linux,phandle = <0xa7>; + phandle = <0xa7>; + }; + + hdmi_hdcp { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + assigned-clock-parents = <0x3>; + assigned-clocks = <0x19>; + clock-output-names = "hdmi_hdcp"; + linux,phandle = <0x19>; + phandle = <0x19>; + }; + + pio { + #clock-cells = <0x0>; + compatible = "allwinner,periph-clock"; + clock-output-names = "pio"; + linux,phandle = <0x1d>; + phandle = <0x1d>; + }; + + cpurcir { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurcir"; + linux,phandle = <0x25>; + phandle = <0x25>; + }; + + hosc32k { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "hosc32k"; + linux,phandle = <0x1a>; + phandle = <0x1a>; + }; + + losc_out { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + assigned-clock-parents = <0x1a>; + assigned-clocks = <0x1b>; + clock-output-names = "losc_out"; + linux,phandle = <0x1b>; + phandle = <0x1b>; + }; + + cpurcpus_pll { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurcpus_pll"; + linux,phandle = <0xf7>; + phandle = <0xf7>; + }; + + cpurcpus { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurcpus"; + linux,phandle = <0xf8>; + phandle = <0xf8>; + }; + + cpurahbs { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurahbs"; + linux,phandle = <0xf9>; + phandle = <0xf9>; + }; + + cpurapbs1 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurapbs1"; + linux,phandle = <0xfa>; + phandle = <0xfa>; + }; + + cpurapbs2_pll { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurapbs2_pll"; + linux,phandle = <0xfb>; + phandle = <0xfb>; + }; + + cpurapbs2 { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurapbs2"; + linux,phandle = <0xfc>; + phandle = <0xfc>; + }; + + cpurpio { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "cpurpio"; + linux,phandle = <0x1c>; + phandle = <0x1c>; + }; + + dcxo_out { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "dcxo_out"; + linux,phandle = <0xfd>; + phandle = <0xfd>; + }; + + stwi { + #clock-cells = <0x0>; + compatible = "allwinner,periph-cpus-clock"; + clock-output-names = "stwi"; + linux,phandle = <0x4a>; + phandle = <0x4a>; + }; + }; + + soc@03000000 { + compatible = "simple-bus"; + #address-cells = <0x2>; + #size-cells = <0x2>; + ranges; + device_type = "soc"; + linux,phandle = <0xfe>; + phandle = <0xfe>; + + pinctrl@07022000 { + compatible = "allwinner,sun50iw9p1-r-pinctrl"; + reg = <0x0 0x7022000 0x0 0x400>; + clocks = <0x1c>; + device_type = "r_pio"; + gpio-controller; + interrupt-controller; + #interrupt-cells = <0x3>; + #size-cells = <0x0>; + #gpio-cells = <0x6>; + linux,phandle = <0xff>; + phandle = <0xff>; + + s_rsb0@0 { + allwinner,pins = "PL0", "PL1"; + allwinner,function = "s_rsb0"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x2>; + allwinner,pull = <0x1>; + linux,phandle = <0x100>; + phandle = <0x100>; + }; + + s_twi0@0 { + allwinner,pins = "PL0", "PL1"; + allwinner,pname = "s_twi0_scl", "s_twi0_sda"; + allwinner,function = "s_twi0"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x4b>; + phandle = <0x4b>; + }; + + s_twi0@1 { + allwinner,pins = "PL0", "PL1"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x4c>; + phandle = <0x4c>; + }; + }; + + pinctrl@0300b000 { + compatible = "allwinner,sun50iw9p1-pinctrl"; + reg = <0x0 0x300b000 0x0 0x400>; + interrupts = <0x0 0x33 0x4 0x0 0x34 0x4 0x0 0x35 0x4 0x0 0x2b 0x4 0x0 0x36 0x4 0x0 0x37 0x4 0x0 0x38 0x4 0x0 0x39 0x4>; + device_type = "pio"; + clocks = <0x1d 0x1e 0x9>; + gpio-controller; + interrupt-controller; + #interrupt-cells = <0x3>; + #size-cells = <0x0>; + #gpio-cells = <0x6>; + input-debounce = <0x0 0x0 0x0 0x0 0x0 0x0 0x0>; + linux,phandle = <0x53>; + phandle = <0x53>; + + clk_losc@0 { + allwinner,pins = "PG10"; + allwinner,function = "x32kfout"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x2>; + allwinner,pull = <0x1>; + linux,phandle = <0xd2>; + phandle = <0xd2>; + }; + + /*s_cir0@0 { + allwinner,pins = "PH10"; + allwinner,function = "ir"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x2>; + allwinner,pull = <0x1>; + linux,phandle = <0x24>; + phandle = <0x24>; + };*/ + + hp_det: hp-det { + allwinner,pins = "PH10"; + allwinner,function = "gpio_in"; + allwinner,muxsel = <0x0>; + allwinner,drive = <0x2>; + allwinner,pull = <0x1>; + }; + + vdevice@0 { + allwinner,pins = "PA1", "PA2"; + allwinner,function = "Vdevice"; + allwinner,muxsel = <0x5>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0xb4>; + phandle = <0xb4>; + }; + + uart0@1 { + allwinner,pins = "PH0", "PH1"; + allwinner,function = "uart0"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x2b>; + phandle = <0x2b>; + }; + + uart1@0 { + allwinner,pins = "PG6", "PG7", "PG8", "PG9"; + allwinner,pname = "uart1_tx", "uart1_rx", "uart1_rts", "uart1_cts"; + allwinner,function = "uart1"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x2d>; + phandle = <0x2d>; + }; + + uart1@1 { + allwinner,pins = "PG6", "PG7", "PG8", "PG9"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x2e>; + phandle = <0x2e>; + }; + + uart2@0 { + allwinner,pins = "PG15", "PG16", "PG17", "PG18"; + allwinner,pname = "uart2_tx", "uart2_rx", "uart2_rts", "uart2_cts"; + allwinner,function = "uart2"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x30>; + phandle = <0x30>; + }; + + uart2@1 { + allwinner,pins = "PG15", "PG16", "PG17", "PG18"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x31>; + phandle = <0x31>; + }; + + uart3@0 { + allwinner,pins = "PI9", "PI10", "PI11", "PI12"; + allwinner,pname = "uart3_tx", "uart3_rx", "uart3_rts", "uart3_cts"; + allwinner,function = "uart3"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x33>; + phandle = <0x33>; + }; + + uart3@1 { + allwinner,pins = "PI9", "PI10", "PI11", "PI12"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x34>; + phandle = <0x34>; + }; + + uart4@0 { + allwinner,pins = "PI13", "PI14", "PI15", "PI16"; + allwinner,pname = "uart4_tx", "uart4_rx", "uart4_rts", "uart4_cts"; + allwinner,function = "uart4"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x36>; + phandle = <0x36>; + }; + + uart4@1 { + allwinner,pins = "PI13", "PI14", "PI15", "PI16"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x37>; + phandle = <0x37>; + }; + + uart5@0 { + allwinner,pins = "PH2", "PH3"; + allwinner,pname = "uart3_tx", "uart3_rx"; + allwinner,function = "uart5"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x39>; + phandle = <0x39>; + }; + + uart5@1 { + allwinner,pins = "PH2", "PH3"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x3a>; + phandle = <0x3a>; + }; + + twi0@0 { + allwinner,pins = "PA0", "PA1"; + allwinner,pname = "twi0_scl", "twi0_sda"; + allwinner,function = "twi0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x3c>; + phandle = <0x3c>; + }; + + twi0@1 { + allwinner,pins = "PA0", "PA1"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x3d>; + phandle = <0x3d>; + }; + + twi1@0 { + allwinner,pins = "PA2", "PA3"; + allwinner,pname = "twi1_scl", "twi1_sda"; + allwinner,function = "twi1"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x3f>; + phandle = <0x3f>; + }; + + twi1@1 { + allwinner,pins = "PA2", "PA3"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x40>; + phandle = <0x40>; + }; + + twi2@0 { + allwinner,pins = "PH2", "PH3"; + allwinner,pname = "twi2_scl", "twi2_sda"; + allwinner,function = "twi2"; + allwinner,muxsel = <0x5>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x42>; + phandle = <0x42>; + }; + + twi2@1 { + allwinner,pins = "PH2", "PH3"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x43>; + phandle = <0x43>; + }; + + twi3@0 { + allwinner,pins = "PH4", "PH5"; + allwinner,pname = "twi3_scl", "twi3_sda"; + allwinner,function = "twi3"; + allwinner,muxsel = <0x5>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x45>; + phandle = <0x45>; + }; + + twi3@1 { + allwinner,pins = "PH4", "PH5"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x46>; + phandle = <0x46>; + }; + + twi4@0 { + allwinner,pins = "PG15", "PG16"; + allwinner,pname = "twi4_scl", "twi4_sda"; + allwinner,function = "twi4"; + allwinner,muxsel = <0x5>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x48>; + phandle = <0x48>; + }; + + twi4@1 { + allwinner,pins = "PG15", "PG16"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x49>; + phandle = <0x49>; + }; + + ts0@0 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11"; + allwinner,pname = "ts0_clk", "ts0_err", "ts0_sync", "ts0_dvld", "ts0_d0", "ts0_d1", "ts0_d2", "ts0_d3", "ts0_d4", "ts0_d5", "ts0_d6", "ts0_d7"; + allwinner,function = "ts0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0xc1>; + phandle = <0xc1>; + }; + + ts0_sleep@0 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11"; + allwinner,pname = "ts0_clk", "ts0_err", "ts0_sync", "ts0_dvld", "ts0_d0", "ts0_d1", "ts0_d2", "ts0_d3", "ts0_d4", "ts0_d5", "ts0_d6", "ts0_d7"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0xc2>; + phandle = <0xc2>; + }; + + spi0@0 { + allwinner,pins = "PC0", "PC2", "PC4"; + allwinner,pname = "spi0_sclk", "spi0_mosi", "spi0_miso"; + allwinner,function = "spi0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x7e>; + phandle = <0x7e>; + }; + + spi0@1 { + allwinner,pins = "PC3"; + allwinner,pname = "spi0_cs0"; + allwinner,function = "spi0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x7f>; + phandle = <0x7f>; + }; + + spi0@2 { + allwinner,pins = "PC0", "PC2", "PC3", "PC4"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x80>; + phandle = <0x80>; + }; + + spi1@0 { + allwinner,pins = "PH6", "PH7", "PH8"; + allwinner,pname = "spi1_sclk", "spi1_mosi", "spi1_miso"; + allwinner,function = "spi1"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x82>; + phandle = <0x82>; + }; + + spi1@1 { + allwinner,pins = "PH9"; + allwinner,pname = "spi1_cs1"; + allwinner,function = "spi1"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x83>; + phandle = <0x83>; + }; + + spi1@2 { + allwinner,pins = "PH6", "PH7", "PH8", "PH9"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x84>; + phandle = <0x84>; + }; + + sdc0@0 { + allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; + allwinner,function = "sdc0"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x3>; + allwinner,pull = <0x1>; + linux,phandle = <0x90>; + phandle = <0x90>; + }; + + sdc0@1 { + allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x91>; + phandle = <0x91>; + }; + + sdc0@2 { + allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; + allwinner,function = "uart0_jtag"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x92>; + phandle = <0x92>; + }; + + sdc1@0 { + allwinner,pins = "PG0", "PG1", "PG2", "PG3", "PG4", "PG5"; + allwinner,function = "sdc1"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x3>; + allwinner,pull = <0x1>; + linux,phandle = <0x96>; + phandle = <0x96>; + }; + + sdc1@1 { + allwinner,pins = "PG0", "PG1", "PG2", "PG3", "PG4", "PG5"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x97>; + phandle = <0x97>; + }; + + sdc2@0 { + allwinner,pins = "PC1", "PC5", "PC6", "PC8", "PC9", "PC10", "PC11", "PC13", "PC14", "PC15", "PC16"; + allwinner,function = "sdc2"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x2>; + allwinner,pull = <0x1>; + linux,phandle = <0x8a>; + phandle = <0x8a>; + }; + + sdc2@1 { + allwinner,pins = "PC0", "PC1", "PC5", "PC6", "PC8", "PC9", "PC10", "PC11", "PC13", "PC14", "PC15", "PC16"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x8c>; + phandle = <0x8c>; + }; + + sdc2@2 { + allwinner,pins = "PC0"; + allwinner,function = "sdc2"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x2>; + allwinner,pull = <0x2>; + linux,phandle = <0x8b>; + phandle = <0x8b>; + }; + + spdif@0 { + allwinner,pins = "PH2", "PH3", "PH4"; + allwinner,function = "spdif"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x62>; + phandle = <0x62>; + }; + + spdif_sleep@0 { + allwinner,pins = "PH2", "PH3", "PH4"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x63>; + phandle = <0x63>; + }; + + dmic@0 { + allwinner,pins = "PI0", "PI1", "PI2", "PI3", "PI4"; + allwinner,function = "dmic"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x65>; + phandle = <0x65>; + }; + + dmic_sleep@0 { + allwinner,pins = "PI0", "PI1", "PI2", "PI3", "PI4"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x66>; + phandle = <0x66>; + }; + + ahub_daudio0@0 { + allwinner,pins = "PA6", "PA7", "PA8", "PA9"; + allwinner,function = "h_pcm0"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x101>; + phandle = <0x101>; + }; + + ahub_daudio0_sleep@0 { + allwinner,pins = "PA6", "PA7", "PA8", "PA9"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x102>; + phandle = <0x102>; + }; + + h_ahub_daudio0@0 { + allwinner,pins = "PI0", "PI1", "PI2", "PI3", "PI4"; + allwinner,function = "h_pcm0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x6b>; + phandle = <0x6b>; + }; + + h_ahub_daudio0_sleep@0 { + allwinner,pins = "PI0", "PI1", "PI2", "PI3", "PI4"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x6c>; + phandle = <0x6c>; + }; + + ahub_daudio2@0 { + allwinner,pins = "PG11", "PG12", "PG13", "PG14"; + allwinner,function = "h_i2s2"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x6d>; + phandle = <0x6d>; + }; + + ahub_daudio2_sleep@0 { + allwinner,pins = "PG11", "PG12", "PG13", "PG14"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x6e>; + phandle = <0x6e>; + }; + + ahub_daudio3@0 { + allwinner,pins = "PH5", "PH6", "PH7", "PH8", "PH9"; + allwinner,function = "h_i2s3"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x6f>; + phandle = <0x6f>; + }; + + ahub_daudio3_sleep@0 { + allwinner,pins = "PH5", "PH6", "PH7", "PH8", "PH9"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x70>; + phandle = <0x70>; + }; + + csi1@0 { + allwinner,pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "PE18", "PE19"; + allwinner,pname = "csi1_pck", "csi1_hsync", "csi1_vsync", "csi1_d0", "csi1_d1", "csi1_d2", "csi1_d3", "csi1_d4", "csi1_d5", "csi1_d6", "csi1_d7", "csi1_d8", "csi1_d9", "csi1_d10", "csi1_d11", "csi1_d12", "csi1_d13", "csi1_d14", "csi1_d15"; + allwinner,function = "csi1"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0xb0>; + phandle = <0xb0>; + }; + + csi1@1 { + allwinner,pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "PE18", "PE19"; + allwinner,pname = "csi1_pck", "csi1_hsync", "csi1_vsync", "csi1_d0", "csi1_d1", "csi1_d2", "csi1_d3", "csi1_d4", "csi1_d5", "csi1_d6", "csi1_d7", "csi1_d8", "csi1_d9", "csi1_d10", "csi1_d11", "csi1_d12", "csi1_d13", "csi1_d14", "csi1_d15"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0xb1>; + phandle = <0xb1>; + }; + + csi_mclk0@0 { + allwinner,pins = "PG19"; + allwinner,pname = "csi_mclk0"; + allwinner,function = "csi_mclk0"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xa8>; + phandle = <0xa8>; + }; + + csi_mclk0@1 { + allwinner,pins = "PG19"; + allwinner,pname = "csi_mclk0"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xa9>; + phandle = <0xa9>; + }; + + csi_cci0@0 { + allwinner,pins = "PG17", "PG18"; + allwinner,pname = "csi_cci0_sck", "csi_cci0_sda"; + allwinner,function = "csi_cci0"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xac>; + phandle = <0xac>; + }; + + csi_cci0@1 { + allwinner,pins = "PG17", "PG18"; + allwinner,pname = "csi_cci0_sck", "csi_cci0_sda"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xad>; + phandle = <0xad>; + }; + + csi_mclk1@0 { + allwinner,pins = "PE1"; + allwinner,pname = "csi_mclk1"; + allwinner,function = "csi_mclk1"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xaa>; + phandle = <0xaa>; + }; + + csi_mclk1@1 { + allwinner,pins = "PE1"; + allwinner,pname = "csi_mclk1"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xab>; + phandle = <0xab>; + }; + + csi_cci1@0 { + allwinner,pins = "PE20", "PE21"; + allwinner,pname = "csi_cci1_sck", "csi_cci1_sda"; + allwinner,function = "csi_cci1"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xae>; + phandle = <0xae>; + }; + + csi_cci1@1 { + allwinner,pins = "PE20", "PE21"; + allwinner,pname = "csi_cci1_sck", "csi_cci1_sda"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x2>; + allwinner,pull = <0x0>; + linux,phandle = <0xaf>; + phandle = <0xaf>; + }; + + scr0@0 { + allwinner,pins = "PG13", "PG14", "PG10", "PG11", "PG12"; + allwinner,pname = "scr0_rst", "scr0_det", "scr0_vccen", "scr0_sck", "scr0_sda"; + allwinner,function = "sim0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x0>; + allwinner,pull = <0x1>; + linux,phandle = <0xb8>; + phandle = <0xb8>; + }; + + scr0@1 { + allwinner,pins = "PG8", "PG9"; + allwinner,pname = "scr0_vppen", "scr0_vppp"; + allwinner,function = "sim0"; + allwinner,muxsel = <0x4>; + allwinner,drive = <0x0>; + allwinner,pull = <0x1>; + linux,phandle = <0xb9>; + phandle = <0xb9>; + }; + + scr0@2 { + allwinner,pins = "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x0>; + allwinner,pull = <0x0>; + linux,phandle = <0xba>; + phandle = <0xba>; + }; + + scr1@0 { + allwinner,pins = "PH5", "PH6", "PH2", "PH3", "PH4"; + allwinner,pname = "scr1_rst", "scr1_det", "scr1_vccen", "scr1_sck", "scr1_sda"; + allwinner,function = "sim1"; + allwinner,muxsel = <0x5>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x103>; + phandle = <0x103>; + }; + + scr1@1 { + allwinner,pins = "PH0", "PH1"; + allwinner,pname = "scr1_vppen", "scr1_vppp"; + allwinner,function = "sim1"; + allwinner,muxsel = <0x5>; + allwinner,drive = <0x1>; + allwinner,pull = <0x1>; + linux,phandle = <0x104>; + phandle = <0x104>; + }; + + scr1@2 { + allwinner,pins = "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x105>; + phandle = <0x105>; + }; + + nand0@2 { + allwinner,pins = "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0xbf>; + phandle = <0xbf>; + }; + + ac200@2 { + allwinner,pins = "PB0"; + allwinner,function = "ac200"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x106>; + phandle = <0x106>; + }; + + ac200@3 { + allwinner,pins = "PB0"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x1>; + allwinner,pull = <0x0>; + linux,phandle = <0x107>; + phandle = <0x107>; + }; + + gmac@0 { + allwinner,pins = "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15"; + allwinner,function = "gmac0"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0xcd>; + phandle = <0xcd>; + }; + + gmac@1 { + allwinner,pins = "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0xce>; + phandle = <0xce>; + }; + + gmac1@0 { + allwinner,pins = "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9"; + allwinner,function = "gmac1"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0xd0>; + phandle = <0xd0>; + }; + + gmac1@1 { + allwinner,pins = "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0xd1>; + phandle = <0xd1>; + }; + + lvds0@0 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7"; + allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7"; + allwinner,function = "lvds0"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x108>; + phandle = <0x108>; + }; + + lvds0@1 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7"; + allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7"; + allwinner,function = "lvds0_suspend"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x109>; + phandle = <0x109>; + }; + + lvds1@0 { + allwinner,pins = "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,pname = "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,function = "lvds1"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x10a>; + phandle = <0x10a>; + }; + + lvds1@1 { + allwinner,pins = "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,pname = "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,function = "lvds1_suspend"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x10b>; + phandle = <0x10b>; + }; + + lvds2link@0 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,function = "lvds1"; + allwinner,muxsel = <0x3>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x10c>; + phandle = <0x10c>; + }; + + lvds2link@1 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD18", "PD19", "PD16", "PD17"; + allwinner,function = "lvds1_suspend"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x10d>; + phandle = <0x10d>; + }; + + rgb24@0 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21", "PD22", "PD23", "PD24", "PD25", "PD26", "PD27"; + allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21", "PD22", "PD23", "PD24", "PD25", "PD26", "PD27"; + allwinner,function = "rgb24"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x99>; + phandle = <0x99>; + }; + + rgb24@1 { + allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21", "PD22", "PD23", "PD24", "PD25", "PD26", "PD27"; + allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21", "PD22", "PD23", "PD24", "PD25", "PD26", "PD27"; + allwinner,function = "rgb24_suspend"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0x3>; + allwinner,pull = <0x0>; + linux,phandle = <0x9a>; + phandle = <0x9a>; + }; + + pwm5@0 { + allwinner,pins = "PA12"; + allwinner,function = "pwm5"; + allwinner,muxsel = <0x2>; + allwinner,drive = <0xffffffff>; + allwinner,pull = <0x0>; + allwinner,data = <0xffffffff>; + linux,phandle = <0xa2>; + phandle = <0xa2>; + }; + + pwm5@1 { + allwinner,pins = "PA12"; + allwinner,function = "io_disabled"; + allwinner,muxsel = <0x7>; + allwinner,drive = <0xffffffff>; + allwinner,pull = <0x0>; + allwinner,data = <0xffffffff>; + linux,phandle = <0xa3>; + phandle = <0xa3>; + }; + + standby@0 { + allwinner,pins = "PH6"; + allwinner,function = "gpio_out"; + allwinner,muxsel = <0x1>; + allwinner,data = <0x1>; + allwinner,drive = <0x0>; + allwinner,pull = <0x0>; + linux,phandle = <0x10e>; + phandle = <0x10e>; + }; + + standby@1 { + allwinner,pins = "PH7"; + allwinner,function = "gpio_out"; + allwinner,muxsel = <0x1>; + allwinner,data = <0x0>; + allwinner,drive = <0x2>; + allwinner,pull = <0x2>; + linux,phandle = <0x10f>; + phandle = <0x10f>; + }; + + standby@2 { + allwinner,pins = "PG16"; + allwinner,function = "gpio_in"; + allwinner,muxsel = <0x0>; + allwinner,data = <0x0>; + allwinner,drive = <0x0>; + allwinner,pull = <0x0>; + linux,phandle = <0x110>; + phandle = <0x110>; + }; + + card0_boot_para@0 { + linux,phandle = <0x181>; + phandle = <0x181>; + allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; + allwinner,function = "card0_boot_para"; + allwinner,pname = "sdc_d1", "sdc_d0", "sdc_clk", "sdc_cmd", "sdc_d3", "sdc_d2"; + allwinner,muxsel = <0x2>; + allwinner,pull = <0x1>; + allwinner,drive = <0x3>; + allwinner,data = <0xffffffff>; + }; + + card2_boot_para@0 { + linux,phandle = <0x182>; + phandle = <0x182>; + allwinner,pins = "PC5", "PC6", "PC10", "PC13", "PC15", "PC8", "PC9", "PC11", "PC14", "PC16", "PC1"; + allwinner,function = "card2_boot_para"; + allwinner,pname = "sdc_clk", "sdc_cmd", "sdc_d0", "sdc_d1", "sdc_d2", "sdc_d3", "sdc_d4", "sdc_d5", "sdc_d6", "sdc_d7", "sdc_emmc_rst"; + allwinner,muxsel = <0x3>; + allwinner,pull = <0x1>; + allwinner,drive = <0x3>; + allwinner,data = <0xffffffff>; + }; + + card2_boot_para@1 { + linux,phandle = <0x183>; + phandle = <0x183>; + allwinner,pins = "PC0"; + allwinner,function = "card2_boot_para"; + allwinner,pname = "sdc_ds"; + allwinner,muxsel = <0x3>; + allwinner,pull = <0x2>; + allwinner,drive = <0x3>; + allwinner,data = <0xffffffff>; + }; + + twi_para@0 { + linux,phandle = <0x184>; + phandle = <0x184>; + allwinner,pins = "PH14", "PH15"; + allwinner,function = "twi_para"; + allwinner,pname = "twi_scl", "twi_sda"; + allwinner,muxsel = <0x2>; + allwinner,pull = <0xffffffff>; + allwinner,drive = <0xffffffff>; + allwinner,data = <0xffffffff>; + }; + + uart_para@0 { + linux,phandle = <0x185>; + phandle = <0x185>; + allwinner,pins = "PH0", "PH1"; + allwinner,function = "uart_para"; + allwinner,pname = "uart_debug_tx", "uart_debug_rx"; + allwinner,muxsel = <0x2>; + allwinner,pull = <0x1>; + allwinner,drive = <0xffffffff>; + allwinner,data = <0xffffffff>; + }; + + jtag_para@0 { + linux,phandle = <0x186>; + phandle = <0x186>; + allwinner,pins = "PH9", "PH10", "PH11", "PH12"; + allwinner,function = "jtag_para"; + allwinner,pname = "jtag_ms", "jtag_ck", "jtag_do", "jtag_di"; + allwinner,muxsel = <0x3>; + allwinner,pull = <0xffffffff>; + allwinner,drive = <0xffffffff>; + allwinner,data = <0xffffffff>; + }; + + uart0@0 { + linux,phandle = <0x187>; + phandle = <0x187>; + allwinner,pins = "PH0", "PH1"; + allwinner,function = "uart0"; + allwinner,pname = "uart0_tx", "uart0_rx"; + allwinner,muxsel = <0x2>; + allwinner,pull = <0x1>; + allwinner,drive = <0xffffffff>; + allwinner,data = <0xffffffff>; + }; + + nand0@0 { + linux,phandle = <0x188>; + phandle = <0x188>; + allwinner,pins = "PC0", "PC1", "PC2", "PC4", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14"; + allwinner,function = "nand0"; + allwinner,pname = "nand0_we", "nand0_ale", "nand0_cle", "nand0_nre", "nand0_d0", "nand0_d1", "nand0_d2", "nand0_d3", "nand0_d4", "nand0_d5", "nand0_d6", "nand0_d7", "nand0_ndqs"; + allwinner,muxsel = <0x2>; + allwinner,pull = <0x0>; + allwinner,drive = <0x1>; + allwinner,data = <0xffffffff>; + }; + + nand0@1 { + linux,phandle = <0x189>; + phandle = <0x189>; + allwinner,pins = "PC3", "PC5", "PC15", "PC16"; + allwinner,function = "nand0"; + allwinner,pname = "nand0_ce0", "nand0_rb0", "nand0_ce1", "nand0_rb1"; + allwinner,muxsel = <0x2>; + allwinner,pull = <0x1>; + allwinner,drive = <0x1>; + allwinner,data = <0xffffffff>; + }; + }; + + auto_print { + device_type = "auto_print"; + status = "disabled"; + }; + + dma-controller@03002000 { + compatible = "allwinner,sun50i-dma"; + reg = <0x0 0x3002000 0x0 0x1000>; + interrupts = <0x0 0x2a 0x4>; + clocks = <0x1f>; + #dma-cells = <0x1>; + linux,phandle = <0x111>; + phandle = <0x111>; + }; + + mbus-controller@047fa000 { + compatible = "allwinner,sun50i-mbus"; + reg = <0x0 0x47fa000 0x0 0x1000>; + #mbus-cells = <0x1>; + linux,phandle = <0x112>; + phandle = <0x112>; + }; + + arisc { + compatible = "allwinner,sunxi-arisc"; + #address-cells = <0x2>; + #size-cells = <0x2>; + clocks = <0x1e 0x20 0x9 0x2>; + clock-names = "losc", "iosc", "hosc", "pll_periph0"; + powchk_used = <0x0>; + power_reg = <0x2309621>; + system_power = <0x32>; + }; + + arisc_space { + compatible = "allwinner,arisc_space"; + space1 = <0x48040000 0x0 0x14000>; + space2 = <0x48100000 0x18000 0x4000>; + space3 = <0x48104000 0x0 0x1000>; + space4 = <0x48105000 0x0 0x1000>; + }; + + standby_space { + compatible = "allwinner,sun50iw9-usbstandby"; + space1 = <0x40020000 0x0 0x800>; + }; + + msgbox@03003000 { + compatible = "allwinner,msgbox"; + clocks = <0x21>; + clock-names = "clk_msgbox"; + reg = <0x0 0x3003000 0x0 0x1000>; + interrupts = <0x0 0x27 0x1>; + status = "okay"; + linux,phandle = <0x113>; + phandle = <0x113>; + }; + + hwspinlock@3004000 { + compatible = "allwinner,sunxi-hwspinlock"; + clocks = <0x22 0x23>; + clock-names = "clk_hwspinlock_rst", "clk_hwspinlock_bus"; + reg = <0x0 0x3004000 0x0 0x1000>; + num-locks = <0x8>; + status = "okay"; + linux,phandle = <0x114>; + phandle = <0x114>; + }; + + s_cir@07040000 { + compatible = "allwinner,s_cir"; + reg = <0x0 0x7040000 0x0 0x400>; + interrupts = <0x0 0x6a 0x4>; + pinctrl-names = "default"; + pinctrl-0 = <0x24>; + clocks = <0x9 0x25>; + supply = "vcc-pl"; + supply_vol = "3300000"; + status = "disabled"; + s_cir0_used = <0x1>; + ir_power_key_code0 = <0x40>; + ir_addr_code0 = <0xfe01>; + ir_power_key_code1 = <0x1a>; + ir_addr_code1 = <0xfb04>; + ir_power_key_code2 = <0xf2>; + ir_addr_code2 = <0x2992>; + ir_power_key_code3 = <0x57>; + ir_addr_code3 = <0x9f00>; + ir_power_key_code4 = <0xdc>; + ir_addr_code4 = <0x4cb3>; + ir_power_key_code5 = <0x18>; + ir_addr_code5 = <0xff00>; + ir_power_key_code6 = <0xdc>; + ir_addr_code6 = <0xdd22>; + ir_power_key_code7 = <0xd>; + ir_addr_code7 = <0xbc00>; + ir_power_key_code8 = <0x4d>; + ir_addr_code8 = <0x4040>; + wakeup-source; + linux,phandle = <0x115>; + phandle = <0x115>; + }; + + timer@03009000 { + compatible = "allwinner,sun4i-a10-timer"; + device_type = "soc_timer"; + reg = <0x0 0x3009000 0x0 0x400>; + interrupts = <0x0 0x30 0x4>; + clocks = <0x9>; + linux,phandle = <0x116>; + phandle = <0x116>; + }; + + rtc@07000000 { + compatible = "allwinner,sunxi-rtc"; + device_type = "rtc"; + auto_switch; + wakeup-source; + reg = <0x0 0x7000000 0x0 0x200>; + interrupts = <0x0 0x68 0x4>; + gpr_offset = <0x100>; + gpr_len = <0x8>; + gpr_cur_pos = <0x6>; + linux,phandle = <0x117>; + phandle = <0x117>; + }; + + watchdog@030090a0 { + compatible = "allwinner,sun50i-wdt"; + reg = <0x0 0x30090a0 0x0 0x20>; + interrupts = <0x0 0x32 0x4>; + linux,phandle = <0x118>; + phandle = <0x118>; + }; + + ve@01c0e000 { + compatible = "allwinner,sunxi-cedar-ve"; + reg = <0x0 0x1c0e000 0x0 0x1000 0x0 0x3000000 0x0 0x10 0x0 0x3001000 0x0 0x1000>; + interrupts = <0x0 0x5d 0x4>; + clocks = <0x26 0x27>; + iommus = <0x28 0x3 0x1>; + linux,phandle = <0x119>; + phandle = <0x119>; + }; + + vp9@01c00000 { + compatible = "allwinner,sunxi-google-vp9"; + reg = <0x0 0x1c00000 0x0 0x1000 0x0 0x3000000 0x0 0x10 0x0 0x3001000 0x0 0x1000>; + interrupts = <0x0 0x5a 0x4>; + clocks = <0x26>; + iommus = <0x28 0x2 0x1>; + #clocks = <0xc>; + linux,phandle = <0x11a>; + phandle = <0x11a>; + }; + + uart@05000000 { + compatible = "allwinner,sun50i-uart"; + device_type = "uart0"; + reg = <0x0 0x5000000 0x0 0x400>; + interrupts = <0x0 0x0 0x4>; + clocks = <0x29>; + pinctrl-names = "default", "sleep"; + pinctrl-1 = <0x2b>; + uart0_port = <0x0>; + uart0_type = <0x2>; + status = "okay"; + linux,phandle = <0x11b>; + phandle = <0x11b>; + pinctrl-0 = <0x187>; + }; + + uart@05000400 { + compatible = "allwinner,sun50i-uart"; + device_type = "uart1"; + reg = <0x0 0x5000400 0x0 0x400>; + interrupts = <0x0 0x1 0x4>; + clocks = <0x2c>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x2d>; + pinctrl-1 = <0x2e>; + uart1_port = <0x1>; + uart1_type = <0x4>; + status = "okay"; + linux,phandle = <0x11c>; + phandle = <0x11c>; + }; + + uart@05000800 { + compatible = "allwinner,sun50i-uart"; + device_type = "uart2"; + reg = <0x0 0x5000800 0x0 0x400>; + interrupts = <0x0 0x2 0x4>; + clocks = <0x2f>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x30>; + pinctrl-1 = <0x31>; + uart2_port = <0x2>; + uart2_type = <0x4>; + status = "disabled"; + linux,phandle = <0x11d>; + phandle = <0x11d>; + }; + + uart@05000c00 { + compatible = "allwinner,sun50i-uart"; + device_type = "uart3"; + reg = <0x0 0x5000c00 0x0 0x400>; + interrupts = <0x0 0x3 0x4>; + clocks = <0x32>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x33>; + pinctrl-1 = <0x34>; + uart3_port = <0x3>; + uart3_type = <0x4>; + status = "disabled"; + linux,phandle = <0x11e>; + phandle = <0x11e>; + }; + + uart@05001000 { + compatible = "allwinner,sun50i-uart"; + device_type = "uart4"; + reg = <0x0 0x5001000 0x0 0x400>; + interrupts = <0x0 0x4 0x4>; + clocks = <0x35>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x36>; + pinctrl-1 = <0x37>; + uart4_port = <0x4>; + uart4_type = <0x4>; + status = "disabled"; + linux,phandle = <0x11f>; + phandle = <0x11f>; + }; + + uart@05001400 { + compatible = "allwinner,sun50i-uart"; + device_type = "uart5"; + reg = <0x0 0x5001400 0x0 0x400>; + interrupts = <0x0 0x5 0x4>; + clocks = <0x38>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x39>; + pinctrl-1 = <0x3a>; + uart5_port = <0x5>; + uart5_type = <0x2>; + status = "disabled"; + linux,phandle = <0x120>; + phandle = <0x120>; + }; + + twi@0x05002000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-twi"; + device_type = "twi0"; + reg = <0x0 0x5002000 0x0 0x400>; + interrupts = <0x0 0x6 0x4>; + clocks = <0x3b>; + clock-frequency = <0x61a80>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x3c>; + pinctrl-1 = <0x3d>; + status = "disabled"; + linux,phandle = <0x121>; + phandle = <0x121>; + }; + + twi@0x05002400 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-twi"; + device_type = "twi1"; + reg = <0x0 0x5002400 0x0 0x400>; + interrupts = <0x0 0x7 0x4>; + clocks = <0x3e>; + clock-frequency = <0x30d40>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x3f>; + pinctrl-1 = <0x40>; + status = "disabled"; + linux,phandle = <0x122>; + phandle = <0x122>; + }; + + twi@0x05002c00 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-twi"; + device_type = "twi3"; + reg = <0x0 0x5002c00 0x0 0x400>; + interrupts = <0x0 0x9 0x4>; + clocks = <0x44>; + clock-frequency = <0x30d40>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x45>; + pinctrl-1 = <0x46>; + status = "disabled"; + linux,phandle = <0x124>; + phandle = <0x124>; + }; + + twi@0x05003000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-twi"; + device_type = "twi4"; + reg = <0x0 0x5003000 0x0 0x400>; + interrupts = <0x0 0xa 0x4>; + clocks = <0x47>; + clock-frequency = <0x30d40>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x48>; + pinctrl-1 = <0x49>; + status = "disabled"; + linux,phandle = <0x125>; + phandle = <0x125>; + }; + + twi@0x07081400 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-twi"; + device_type = "twi5"; + reg = <0x0 0x7081400 0x0 0x400>; + interrupts = <0x0 0x69 0x4>; + clocks = <0x4a>; + clock-frequency = <0x30d40>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x4b>; + pinctrl-1 = <0x4c>; + status = "okay"; + no_suspend = <0x1>; + linux,phandle = <0x126>; + phandle = <0x126>; + + pmu { + compatible = "x-powers,axp1530"; + //compatible = "x-powers,axp806"; + reg = <0x36>; + wakeup-source; + linux,phandle = <0x127>; + phandle = <0x127>; + + interrupt-parent = <0x53>; + interrupts = <0x8 0x6 0x8>; + interrupt-controller; + #interrupt-cells = <1>; + + standby_param { + vcc-dram = <0x4>; + linux,phandle = <0x128>; + phandle = <0x128>; + }; + + regulators { + + dcdc1 { + regulator-name = "axp1530-dcdc1"; + regulator-min-microvolt = <0x7a120>; + regulator-max-microvolt = <0x33e140>; + regulator-step-delay-us = <0x19>; + regulator-final-delay-us = <0x32>; + regulator-always-on; + linux,phandle = <0x129>; + phandle = <0x129>; + }; + + dcdc2 { + regulator-name = "axp1530-dcdc2"; + regulator-min-microvolt = <0x7a120>; + regulator-max-microvolt = <0x177fa0>; + regulator-step-delay-us = <0x19>; + regulator-final-delay-us = <0x32>; + regulator-ramp-delay = <0xc8>; + regulator-always-on; + linux,phandle = <0xd6>; + phandle = <0xd6>; + }; + + dcdc3 { + regulator-name = "axp1530-dcdc3"; + regulator-min-microvolt = <0x16e360>; + regulator-max-microvolt = <0x16e360>; + regulator-step-delay-us = <0x19>; + regulator-final-delay-us = <0x32>; + regulator-always-on; + linux,phandle = <0x12a>; + phandle = <0x12a>; + }; + + ldo1 { + regulator-name = "axp1530-aldo1"; + regulator-min-microvolt = <0x1b7740>; + regulator-max-microvolt = <0x1b7740>; + regulator-step-delay-us = <0x19>; + regulator-final-delay-us = <0x32>; + regulator-always-on; + linux,phandle = <0x68>; + phandle = <0x68>; + }; + + ldo2 { + regulator-name = "axp1530-dldo1"; + regulator-min-microvolt = <0x325aa0>; + regulator-max-microvolt = <0x325aa0>; + regulator-step-delay-us = <0x19>; + regulator-final-delay-us = <0x32>; + regulator-always-on; + linux,phandle = <0x69>; + phandle = <0x69>; + }; + + /* cldo2 { + regulator-name = "axp806-cldo2"; + regulator-min-microvolt = <0x00325aa0>; + regulator-max-microvolt = <0x00325aa0>; + regulator-step-delay-us = <0x00000019>; + regulator-final-delay-us = <0x00000032>; + regulator-always-on; + linux,phandle = <0x579>; + phandle = <0x579>; + };*/ + }; + }; + }; + + twi@0x05002800 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-twi"; + device_type = "twi2"; + reg = <0x0 0x5002800 0x0 0x400>; + interrupts = <0x0 0x8 0x4>; + clocks = <0x41>; + clock-frequency = <0x61A80>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x42>; + pinctrl-1 = <0x43>; + status = "okay"; + linux,phandle = <0x123>; + phandle = <0x123>; + + pca9555: pca9555@20{ + compatible = "nxp,pca9555"; + interrupt-parent = <0x53>; + interrupts = <0x7 0x4 0x4>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x20>; + }; + + es8316: es8316@11 { + #sound-dai-cells = <0>; + compatible = "everest,es8316"; + //pinctrl-names = "default"; + //pinctrl-0 = <&hp_det>; + //hp-det-gpio = <0x53 7 10 0x6 1 0xffffffff 0xffffffff>; + reg = <0x11>; + }; + }; + + + i2c-gpio@1 { + #address-cells = <1>; + #size-cells = <0>; + + compatible = "i2c-gpio"; + gpios = <&pca9555 2 3 /* sda */ + &pca9555 3 3 /* scl */ >; + + i2c-gpio,delay-us = <2>; + + /* status = "okay"; */ + status = "disabled"; + }; + + usbc0@0 { + device_type = "usbc0"; + compatible = "allwinner,sunxi-otg-manager"; + usb_port_type = <0x1>; + usb_detect_type = <0x0>; + usb_id_gpio; + usb_det_vbus_gpio; + usb_drv_vbus_gpio; + usb_host_init_state = <0x1>; + usb_regulator_io = "nocare"; + usb_wakeup_suspend = <0x1>; + usb_luns = <0x3>; + usb_serial_unique = <0x0>; + usb_serial_number = "20080411"; + rndis_wceis = <0x1>; + wakeup-source; + status = "okay"; + usb_detect_mode = <0x0>; + linux,phandle = <0x12b>; + phandle = <0x12b>; + }; + + udc-controller@0x05100000 { + compatible = "allwinner,sunxi-udc"; + reg = <0x0 0x5100000 0x0 0x1000 0x0 0x0 0x0 0x100>; + interrupts = <0x0 0x19 0x4>; + clocks = <0x4d 0x4e>; + status = "okay"; + linux,phandle = <0x12c>; + phandle = <0x12c>; + }; + + ehci0-controller@0x05101000 { + compatible = "allwinner,sunxi-ehci0"; + reg = <0x0 0x5101000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x1a 0x4>; + clocks = <0x4d 0x4f>; + hci_ctrl_no = <0x0>; + status = "okay"; + linux,phandle = <0x12d>; + phandle = <0x12d>; + }; + + ohci0-controller@0x05101400 { + compatible = "allwinner,sunxi-ohci0"; + reg = <0x0 0x5101000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x1b 0x4>; + clocks = <0x4d 0x50 0x51 0x52 0x9 0x1e>; + hci_ctrl_no = <0x0>; + status = "okay"; + linux,phandle = <0x12e>; + phandle = <0x12e>; + }; + + usbc1@0 { + device_type = "usbc1"; + usb_drv_vbus_gpio = <0x53 0x2 0x10 0x0 0x1 0xffffffff 0xffffffff>; + usb_host_init_state = <0x1>; + usb_regulator_io = "nocare"; + usb_wakeup_suspend = <0x2>; + wakeup-source; + status = "okay"; + linux,phandle = <0x12f>; + phandle = <0x12f>; + }; + + ehci1-controller@0x05200000 { + compatible = "allwinner,sunxi-ehci1"; + reg = <0x0 0x5200000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x1c 0x4>; + clocks = <0x54 0x55>; + hci_ctrl_no = <0x1>; + status = "okay"; + linux,phandle = <0x130>; + phandle = <0x130>; + }; + + ohci1-controller@0x05200400 { + compatible = "allwinner,sunxi-ohci1"; + reg = <0x0 0x5200000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x1d 0x4>; + clocks = <0x54 0x56 0x57 0x52 0x9 0x1e>; + hci_ctrl_no = <0x1>; + status = "okay"; + linux,phandle = <0x131>; + phandle = <0x131>; + }; + + usbc2@0 { + device_type = "usbc2"; + usb_drv_vbus_gpio; + usb_host_init_state = <0x1>; + usb_regulator_io = "nocare"; + usb_wakeup_suspend = <0x2>; + wakeup-source; + status = "okay"; + linux,phandle = <0x132>; + phandle = <0x132>; + }; + + ehci2-controller@0x05310000 { + compatible = "allwinner,sunxi-ehci2"; + reg = <0x0 0x5310000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x1e 0x4>; + clocks = <0x58 0x59>; + hci_ctrl_no = <0x2>; + status = "okay"; + linux,phandle = <0x133>; + phandle = <0x133>; + }; + + ohci2-controller@0x05310400 { + compatible = "allwinner,sunxi-ohci2"; + reg = <0x0 0x5310000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x1f 0x4>; + clocks = <0x58 0x5a 0x5b 0x52 0x9 0x1e>; + hci_ctrl_no = <0x2>; + status = "okay"; + linux,phandle = <0x134>; + phandle = <0x134>; + }; + + usbc3@0 { + device_type = "usbc3"; + usb_drv_vbus_gpio; + usb_host_init_state = <0x1>; + usb_regulator_io = "nocare"; + usb_wakeup_suspend = <0x2>; + wakeup-source; + status = "okay"; + linux,phandle = <0x135>; + phandle = <0x135>; + }; + + ehci3-controller@0x05311000 { + compatible = "allwinner,sunxi-ehci3"; + reg = <0x0 0x5311000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x20 0x4>; + clocks = <0x5c 0x5d>; + hci_ctrl_no = <0x3>; + status = "okay"; + linux,phandle = <0x136>; + phandle = <0x136>; + }; + + ohci3-controller@0x05311400 { + compatible = "allwinner,sunxi-ohci3"; + reg = <0x0 0x5311000 0x0 0xfff 0x0 0x0 0x0 0x100 0x0 0x5100000 0x0 0x1000>; + interrupts = <0x0 0x21 0x4>; + clocks = <0x5c 0x5e 0x5f 0x52 0x9 0x1e>; + hci_ctrl_no = <0x3>; + status = "okay"; + linux,phandle = <0x137>; + phandle = <0x137>; + }; + + ac200_codec { + compatible = "allwinner,ac200_codec"; + status = "disabled"; + linux,phandle = <0x138>; + phandle = <0x138>; + }; + + spdif-controller@0x05093000 { + compatible = "allwinner,sunxi-spdif"; + reg = <0x0 0x5093000 0x0 0x40>; + clocks = <0x60 0x7 0x61>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x62>; + pinctrl-1 = <0x63>; + device_type = "spdif"; + status = "disabled"; + linux,phandle = <0x75>; + phandle = <0x75>; + }; + + dmic-controller@0x05095000 { + compatible = "allwinner,sunxi-dmic"; + reg = <0x0 0x5095000 0x0 0x50>; + clocks = <0x60 0x7 0x64>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x65>; + pinctrl-1 = <0x66>; + device_type = "dmic"; + status = "disabled"; + linux,phandle = <0x76>; + phandle = <0x76>; + }; + + codec@0x05096000 { + compatible = "allwinner,sunxi-internal-codec"; + reg = <0x0 0x5096000 0x0 0x31c>; + clocks = <0x60 0x7 0x67>; + device_type = "codec"; + status = "okay"; + adcdrc_cfg = <0x0>; + adchpf_cfg = <0x0>; + dacdrc_cfg = <0x0>; + dachpf_cfg = <0x0>; + fmin_gain = <0x3>; + linein_gain = <0x3>; + digital_vol = <0x0>; + lineout_vol = <0x1a>; + gpio-spk = <&pca9555 0 1>; + pa_ctl_level = <0x0>; + pa_msleep_time = <0x64>; + ramp_func_used = <0x1>; + avcc-supply = <0x68>; + vcc33_audio-supply = <0x69>; + linux,phandle = <0x78>; + phandle = <0x78>; + }; + + cpudai-controller@0x05096000 { + compatible = "allwinner,sunxi-internal-cpudai"; + reg = <0x0 0x5096000 0x0 0x31c>; + device_type = "cpudai"; + status = "okay"; + linux,phandle = <0x77>; + phandle = <0x77>; + }; + + cpudai0-controller@0x05097000 { + compatible = "allwinner,sunxi-ahub-cpudai"; + reg = <0x0 0x5097000 0x0 0xadf>; + id = <0x0>; + status = "okay"; + linux,phandle = <0x79>; + phandle = <0x79>; + }; + + cpudai1-controller@0x05097000 { + compatible = "allwinner,sunxi-ahub-cpudai"; + reg = <0x0 0x5097000 0x0 0xadf>; + id = <0x1>; + status = "okay"; + linux,phandle = <0x7a>; + phandle = <0x7a>; + }; + + cpudai2-controller@0x05097000 { + compatible = "allwinner,sunxi-ahub-cpudai"; + reg = <0x0 0x5097000 0x0 0xadf>; + id = <0x2>; + status = "okay"; + linux,phandle = <0x7b>; + phandle = <0x7b>; + }; + + ahub_codec@0x05097000 { + compatible = "allwinner,sunxi-ahub"; + reg = <0x0 0x5097000 0x0 0xadf>; + clocks = <0x60 0x7 0x6a>; + status = "okay"; + linux,phandle = <0x7c>; + phandle = <0x7c>; + }; + + ahub_daudio0@0x05097000 { + compatible = "allwinner,sunxi-ahub-daudio"; + reg = <0x0 0x5097000 0x0 0xadf>; + clocks = <0x60 0x7 0x6a>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x6b>; + pinctrl-1 = <0x6c>; + tdm_num = <0x0>; + device_type = "ahub_daudio0"; + status = "disabled"; + pinconfig = <0x1>; + frametype = <0x0>; + pcm_lrck_period = <0x20>; + slot_width_select = <0x20>; + daudio_master = <0x4>; + audio_format = <0x1>; + signal_inversion = <0x1>; + tdm_config = <0x1>; + mclk_div = <0x0>; + linux,phandle = <0x71>; + phandle = <0x71>; + }; + + ahub_daudio1@0x05097000 { + compatible = "allwinner,sunxi-ahub-daudio"; + reg = <0x0 0x5097000 0x0 0xadf>; + clocks = <0x60 0x7 0x6a>; + tdm_num = <0x1>; + device_type = "ahub_daudio1"; + status = "okay"; + pinconfig = <0x0>; + frametype = <0x0>; + pcm_lrck_period = <0x20>; + slot_width_select = <0x20>; + daudio_master = <0x4>; + audio_format = <0x1>; + signal_inversion = <0x1>; + tdm_config = <0x1>; + mclk_div = <0x1>; + linux,phandle = <0x72>; + phandle = <0x72>; + }; + + ahub_daudio2@0x05097000 { + compatible = "allwinner,sunxi-ahub-daudio"; + reg = <0x0 0x5097000 0x0 0xadf>; + clocks = <0x60 0x7 0x6a>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x6d>; + pinctrl-1 = <0x6e>; + tdm_num = <0x2>; + device_type = "ahub_daudio2"; + status = "disabled"; + pinconfig = <0x1>; + frametype = <0x0>; + pcm_lrck_period = <0x20>; + slot_width_select = <0x20>; + daudio_master = <0x4>; + audio_format = <0x1>; + signal_inversion = <0x1>; + tdm_config = <0x1>; + mclk_div = <0x4>; + linux,phandle = <0x73>; + phandle = <0x73>; + }; + + ahub_daudio3:ahub_daudio3@0x05097000 { + compatible = "allwinner,sunxi-ahub-daudio"; + #sound-dai-cells = <0>; + reg = <0x0 0x5097000 0x0 0xadf>; + clocks = <0x60 0x7 0x6a>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x6f>; + pinctrl-1 = <0x70>; + tdm_num = <0x3>; + device_type = "ahub_daudio3"; + status = "okay"; + pinconfig = <0x1>; + frametype = <0x0>; + pcm_lrck_period = <0x20>; + slot_width_select = <0x20>; + daudio_master = <0x4>; + audio_format = <0x1>; + signal_inversion = <0x1>; + tdm_config = <0x1>; + mclk_div = <0x4>; + linux,phandle = <0x74>; + phandle = <0x74>; + }; + + sound@0 { + compatible = "allwinner,sunxi-daudio0-machine"; + sunxi,cpudai-controller = <0x71>; + device_type = "snddaudio0"; + status = "disabled"; + linux,phandle = <0x13a>; + phandle = <0x13a>; + }; + + sound@1 { + compatible = "allwinner,sunxi-hdmi-machine"; + sunxi,cpudai-controller = <0x72>; + device_type = "sndhdmi"; + status = "okay"; + linux,phandle = <0x13b>; + phandle = <0x13b>; + }; + + sound@2 { + compatible = "allwinner,sunxi-daudio2-machine"; + sunxi,cpudai-controller = <0x73>; + device_type = "snddaudio2"; + status = "disabled"; + linux,phandle = <0x13c>; + phandle = <0x13c>; + }; + + sound@3 { + compatible = "allwinner,sunxi-rt5651-sound"; + sunxi,cpudai-controller = <0x74>; + device_type = "snddaudio3"; + status = "disabled"; + sunxi,snddaudio-codec = "rt5651.2-001a"; + sunxi,snddaudio-codec-dai = "rt5651-aif1"; + linux,phandle = <0x13d>; + phandle = <0x13d>; + }; + + sound@4 { + compatible = "allwinner,sunxi-spdif-machine"; + sunxi,spdif-controller = <0x75>; + device_type = "sndspdif"; + status = "disabled"; + linux,phandle = <0x13e>; + phandle = <0x13e>; + }; + + sound@5 { + compatible = "allwinner,sunxi-dmic-machine"; + sunxi,dmic-controller = <0x76>; + device_type = "snddmic"; + status = "disabled"; + linux,phandle = <0x13f>; + phandle = <0x13f>; + }; + + sound@6 { + compatible = "allwinner,sunxi-codec-machine"; + sunxi,cpudai-controller = <0x77>; + sunxi,audio-codec = <0x78>; + device_type = "sndcodec"; + status = "okay"; + linux,phandle = <0x140>; + phandle = <0x140>; + }; + + sound@7 { + compatible = "allwinner,sunxi-ahub-machine"; + sunxi,cpudai-controller0 = <0x79>; + sunxi,cpudai-controller1 = <0x7a>; + sunxi,cpudai-controller2 = <0x7b>; + sunxi,audio-codec = <0x7c>; + device_type = "sndahub"; + status = "okay"; + linux,phandle = <0x141>; + phandle = <0x141>; + }; + + spi@05010000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-spi"; + device_type = "spi0"; + reg = <0x0 0x5010000 0x0 0x1000>; + interrupts = <0x0 0xc 0x4>; + clocks = <0x2 0x7d>; + clock-frequency = <0x5f5e100>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x7e 0x7f>; + pinctrl-1 = <0x80>; + spi0_cs_number = <0x1>; + spi0_cs_bitmap = <0x1>; + status = "disabled"; + spi_slave_mode = <0x0>; + linux,phandle = <0x142>; + phandle = <0x142>; + }; + + spi@05011000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sun50i-spi"; + device_type = "spi1"; + reg = <0x0 0x5011000 0x0 0x1000>; + interrupts = <0x0 0xd 0x4>; + clocks = <0x2 0x81>; + clock-frequency = <0x5f5e100>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x82 0x83>; + pinctrl-1 = <0x84>; + spi1_cs_number = <0x2>; + spi1_cs_bitmap = <0x2>; + status = "disabled"; + spi_slave_mode = <0x0>; + linux,phandle = <0x143>; + phandle = <0x143>; + }; + + spi-gpio@0 { + compatible = "spi-gpio"; + #address-cells = <0x1>; + + gpio-sck = <&pca9555 4 0>; + gpio-miso = <&pca9555 5 0>; + gpio-mosi = <&pca9555 6 0>; + cs-gpios = <&pca9555 7 0>; + num-chipselects = <1>; + status = "disabled"; + + device_0@0 { + compatible = "rohm,dh2228fv"; + spi-max-frequency = <500000>; + reg = <0x0>; + #address-cells = <1>; + #size-cells = <1>; + spi-rx-bus-width = <0x1>; + spi-tx-bus-width = <0x1>; + bits-per-word = <8>; + }; + }; + + pcie@0x05400000 { + #address-cells = <0x3>; + #size-cells = <0x2>; + compatible = "allwinner,sun50i-pcie"; + reg = <0x0 0x5400000 0x0 0x2000 0x0 0x5410000 0x0 0x10000>; + reg-names = "dbi", "config"; + device_type = "pci"; + ranges = <0x800 0x0 0x5410000 0x0 0x5410000 0x0 0x10000 0x81000000 0x0 0x0 0x0 0x5e00000 0x0 0x10000 0x82000000 0x0 0x5500000 0x0 0x5500000 0x0 0x800000>; + num-lanes = <0x1>; + interrupts = <0x0 0x7f 0x4 0x0 0x7e 0x4>; + interrupt-names = "msi"; + #interrupt-cells = <0x1>; + interrupt-map-mask = <0x0 0x0 0x0 0x0>; + interrupt-map = <0x0 0x0 0x0 0x1 0x85 0x0 0x7f 0x4>; + status = "disabled"; + linux,phandle = <0x144>; + phandle = <0x144>; + }; + + sdmmc@04020000 { + compatible = "allwinner,sunxi-mmc-v4p1x"; + device_type = "sdc0"; + reg = <0x0 0x4020000 0x0 0x1000>; + interrupts = <0x0 0x23 0x4>; + clocks = <0x9 0x86 0x8d 0x8e 0x8f>; + clock-names = "osc24m", "pll_periph", "mmc", "ahb", "rst"; + pinctrl-names = "default", "sleep", "uart_jtag"; + pinctrl-0 = <0x90>; + pinctrl-1 = <0x91>; + pinctrl-2 = <0x92>; + max-frequency = <0x8f0d180>; + bus-width = <0x4>; + cd-gpios = <0x53 0x5 0x6 0x6 0x1 0x3 0xffffffff>; + cap-sd-highspeed; + cap-wait-while-busy; + no-sdio; + no-mmc; + sunxi-power-save-mode; + status = "okay"; + cd-used-24M; + sd-uhs-sdr50; + sd-uhs-ddr50; + sd-uhs-sdr104; + ctl-spec-caps = <0x8>; + vmmc-supply; + vqmmc33sw-supply; + vdmmc33sw-supply; + vqmmc18sw-supply; + vdmmc18sw-supply; + linux,phandle = <0x146>; + phandle = <0x146>; + }; + + sdmmc@04022000 { + compatible = "allwinner,sunxi-mmc-v4p6x"; + device_type = "sdc2"; + reg = <0x0 0x4022000 0x0 0x1000>; + interrupts = <0x0 0x25 0x4>; + clocks = <0x9 0x86 0x87 0x88 0x89>; + clock-names = "osc24m", "pll_periph", "mmc", "ahb", "rst"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x8a 0x8b>; + pinctrl-1 = <0x8c>; + bus-width = <0x8>; + cap-mmc-highspeed; + cap-cmd23; + mmc-cache-ctrl; + non-removable; + max-frequency = <0x5f5e100>; + //max-frequency = <0x2FAF080>; + cap-erase; + mmc-high-capacity-erase-size; + no-sdio; + no-sd; + + sdc_tm4_sm0_freq0 = <0x0>; + sdc_tm4_sm0_freq1 = <0x0>; + sdc_tm4_sm1_freq0 = <0x0>; + sdc_tm4_sm1_freq1 = <0x0>; + sdc_tm4_sm2_freq0 = <0x0>; + sdc_tm4_sm2_freq1 = <0x0>; + sdc_tm4_sm3_freq0 = <0x5000000>; + sdc_tm4_sm3_freq1 = <0x5>; + sdc_tm4_sm4_freq0 = <0x50000>; + sdc_tm4_sm4_freq1 = <0x4>; + + //sdc_tm4_sm0_freq0 = <0xffffffff>; + //sdc_tm4_sm0_freq1 = <0xffffffff>; + //sdc_tm4_sm1_freq0 = <0xff17ffff>; + //sdc_tm4_sm1_freq1 = <0xffffffff>; + //sdc_tm4_sm2_freq0 = <0xff0d14ff>; + //sdc_tm4_sm2_freq1 = <0xffffffff>; + //sdc_tm4_sm3_freq0 = <0x1414ffff>; + //sdc_tm4_sm3_freq1 = <0xffff1d19>; + //sdc_tm4_sm4_freq0 = <0x0f18ffff>; + //sdc_tm4_sm4_freq1 = <0xffffff07>; + + status = "okay"; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + mmc-hs400-1_8v; + sunxi-power-save-mode; + sunxi-dis-signal-vol-sw; + ctl-spec-caps = <0x8>; + vmmc-supply; + vqmmc-supply; + linux,phandle = <0x145>; + phandle = <0x145>; + }; + + sdmmc@04021000 { + compatible = "allwinner,sunxi-mmc-v4p1x"; + device_type = "sdc1"; + reg = <0x0 0x4021000 0x0 0x1000>; + interrupts = <0x0 0x24 0x4>; + clocks = <0x9 0x86 0x93 0x94 0x95>; + clock-names = "osc24m", "pll_periph", "mmc", "ahb", "rst"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0x96>; + pinctrl-1 = <0x97>; + max-frequency = <0x8f0d180>; + bus-width = <0x4>; + keep-power-in-suspend; + sunxi-dly-52M-ddr4 = <0x1 0x0 0x0 0x0 0x2>; + sunxi-dly-104M = <0x1 0x0 0x0 0x0 0x1>; + sunxi-dly-208M = <0x1 0x0 0x0 0x0 0x1>; + status = "okay"; + no-mmc; + no-sd; + cap-sd-highspeed; + sd-uhs-sdr50; + sd-uhs-ddr50; + sd-uhs-sdr104; + sunxi-dis-signal-vol-sw; + sdio-used-1v8; + cap-sdio-irq; + ignore-pm-notify; + ctl-spec-caps = <0x8>; + linux,phandle = <0x147>; + phandle = <0x147>; + }; + + disp@01000000 { + compatible = "allwinner,sunxi-disp"; + reg = <0x0 0x1000000 0x0 0x1400000 0x0 0x6510000 0x0 0x200 0x0 0x6511000 0x0 0x1000 0x0 0x6512000 0x0 0x1000 0x0 0x6515000 0x0 0x1000 0x0 0x6516000 0x0 0x1000>; + interrupts = <0x0 0x58 0x4 0x0 0x40 0x4 0x0 0x41 0x4 0x0 0x42 0x4 0x0 0x43 0x4>; + clocks = <0xb 0x98 0x12 0x13 0x14 0x15 0x16>; + boot_disp = <0x0>; + fb_base = <0x0>; + iommus = <0x28 0x0 0x0>; + status = "okay"; + disp_init_enable = <0x1>; + disp_mode = <0x0>; + screen0_output_type = <0x3>; + screen0_output_mode = <0xa>; + screen0_output_format = <0x0>; + screen0_output_bits = <0x0>; + screen0_output_eotf = <0x4>; + screen0_output_cs = <0x101>; + screen0_output_dvi_hdmi = <0x2>; + screen0_output_range = <0x2>; + screen0_output_scan = <0x0>; + screen0_output_aspect_ratio = <0x8>; + screen1_output_type = <0x2>; + screen1_output_mode = <0xb>; + screen1_output_format = <0x1>; + screen1_output_bits = <0x0>; + screen1_output_eotf = <0x4>; + screen1_output_cs = <0x104>; + screen1_output_dvi_hdmi = <0x0>; + screen1_output_range = <0x2>; + screen1_output_scan = <0x0>; + screen1_output_aspect_ratio = <0x8>; + dev0_output_type = <0x4>; + dev0_output_mode = <0xa>; + dev0_screen_id = <0x0>; + dev0_do_hpd = <0x1>; + dev1_output_type = <0x2>; + dev1_output_mode = <0xb>; + dev1_screen_id = <0x1>; + dev1_do_hpd = <0x1>; + dev2_output_type = <0x0>; + def_output_dev = <0x0>; + hdmi_mode_check = <0x1>; + fb0_format = <0x0>; + fb0_width = <0x500>; + fb0_height = <0x2d0>; + fb1_format = <0x0>; + fb1_width = <0x0>; + fb1_height = <0x0>; + chn_cfg_mode = <0x1>; + disp_para_zone = <0x1>; + linux,phandle = <0x148>; + phandle = <0x148>; + }; + + tv0@01c94000 { + compatible = "allwinner,sunxi-tv"; + reg = <0x0 0x6520000 0x0 0x100 0x0 0x6524000 0x0 0x3fc>; + clocks = <0x18 0x17>; + device_type = "tv0"; + pinctrl-names = "active", "sleep"; + status = "disabled"; + dac_src0 = <0x0>; + dac_type0 = <0x0>; + interface = <0x1>; + linux,phandle = <0x149>; + phandle = <0x149>; + }; + + lcd0@01c0c000 { + compatible = "allwinner,sunxi-lcd0"; + pinctrl-names = "active", "sleep"; + status = "okay"; + lcd_used = <0x0>; + lcd_driver_name = "default_lcd"; + lcd_backlight = <0x32>; + lcd_if = <0x0>; + lcd_x = <0x500>; + lcd_y = <0x320>; + lcd_width = <0x96>; + lcd_height = <0x5e>; + lcd_dclk_freq = <0x46>; + lcd_pwm_used = <0x0>; + lcd_pwm_ch = <0x0>; + lcd_pwm_freq = <0xc350>; + lcd_pwm_pol = <0x0>; + lcd_pwm_max_limit = <0xff>; + lcd_hbp = <0x14>; + lcd_ht = <0x58a>; + lcd_hspw = <0xa>; + lcd_vbp = <0xa>; + lcd_vt = <0x32e>; + lcd_vspw = <0x5>; + lcd_lvds_if = <0x0>; + lcd_lvds_colordepth = <0x0>; + lcd_lvds_mode = <0x0>; + lcd_frm = <0x0>; + lcd_hv_clk_phase = <0x0>; + lcd_hv_sync_polarity = <0x0>; + lcd_gamma_en = <0x0>; + lcd_bright_curve_en = <0x0>; + lcd_cmap_en = <0x0>; + deu_mode = <0x0>; + lcdgamma4iep = <0x16>; + smart_color = <0x5a>; + lcd_pin_power = "bldo1"; + lcd_power = "dc1sw"; + pinctrl-0 = <0x99>; + pinctrl-1 = <0x9a>; + linux,phandle = <0x14a>; + phandle = <0x14a>; + }; + + lcd1@01c0c001 { + compatible = "allwinner,sunxi-lcd1"; + pinctrl-names = "active", "sleep"; + status = "okay"; + linux,phandle = <0x14b>; + phandle = <0x14b>; + }; + + boot_disp { + compatible = "allwinner,boot_disp"; + linux,phandle = <0x14c>; + phandle = <0x14c>; + }; + + hdmi@06000000 { + compatible = "allwinner,sunxi-hdmi"; + reg = <0x0 0x6000000 0x0 0x100000>; + interrupts = <0x0 0x3f 0x0>; + clocks = <0xf 0x10 0x19 0x11>; + status = "okay"; + hdmi_used = <0x1>; + hdmi_power_cnt = <0x2>; + hdmi_power0 = "vcc-hdmi"; + hdmi_power1 = "vdd-hdmi"; + hdmi_hdcp_enable = <0x1>; + hdmi_hdcp22_enable = <0x1>; + hdmi_cts_compatibility = <0x0>; + hdmi_cec_support = <0x1>; + hdmi_cec_super_standby = <0x0>; + hdmi_skip_bootedid = <0x1>; + ddc_en_io_ctrl = <0x0>; + power_io_ctrl = <0x0>; + hdmi_det_io = <0x53 0x8 0x10 0x0 0x0 0x0 0x0>; + vga_det_io = <0x53 0x6 0x13 0x0 0x0 0x0 0x0>; + hhpd_set_io = <0x53 0x2 0x3 0x1 0x0 0x0 0x0>; + vga_reset_io = <0x53 0x2 0x4 0x1 0x0 0x0 0x0>; + linux,phandle = <0x14d>; + phandle = <0x14d>; + }; + + g2d@01480000 { + compatible = "allwinner,sunxi-g2d"; + reg = <0x0 0x1480000 0x0 0x3ffff>; + interrupts = <0x0 0x5a 0x4>; + clocks = <0xd>; + iommus = <0x28 0x6 0x1>; + linux,phandle = <0x14e>; + phandle = <0x14e>; + }; + + tr@01000000 { + compatible = "allwinner,sun50i-tr"; + reg = <0x0 0x1000000 0x0 0x200bc>; + interrupts = <0x0 0x60 0x4>; + clocks = <0xb>; + status = "okay"; + linux,phandle = <0x14f>; + phandle = <0x14f>; + }; + + pwm@0300a000 { + compatible = "allwinner,sunxi-pwm"; + reg = <0x0 0x300a000 0x0 0x3ff>; + clocks = <0x9b>; + pwm-number = <0x6>; + pwm-base = <0x0>; + pwms = <0x9c 0x9d 0x9e 0x9f 0xa0 0xa1>; + linux,phandle = <0x150>; + phandle = <0x150>; + }; + + pwm0@0300a000 { + compatible = "allwinner,sunxi-pwm0"; + pinctrl-names = "active", "sleep"; + reg_base = <0x300a000>; + linux,phandle = <0x9c>; + phandle = <0x9c>; + }; + + pwm1@0300a000 { + compatible = "allwinner,sunxi-pwm1"; + pinctrl-names = "active", "sleep"; + reg_base = <0x300a000>; + linux,phandle = <0x9d>; + phandle = <0x9d>; + }; + + pwm2@0300a000 { + compatible = "allwinner,sunxi-pwm2"; + pinctrl-names = "active", "sleep"; + reg_base = <0x300a000>; + linux,phandle = <0x9e>; + phandle = <0x9e>; + }; + + pwm3@0300a000 { + compatible = "allwinner,sunxi-pwm3"; + pinctrl-names = "active", "sleep"; + reg_base = <0x300a000>; + linux,phandle = <0x9f>; + phandle = <0x9f>; + }; + + pwm4@0300a000 { + compatible = "allwinner,sunxi-pwm4"; + pinctrl-names = "active", "sleep"; + reg_base = <0x300a000>; + linux,phandle = <0xa0>; + phandle = <0xa0>; + }; + + pwm5@0300a000 { + compatible = "allwinner,sunxi-pwm5"; + pinctrl-names = "active", "sleep"; + reg_base = <0x300a000>; + pinctrl-0 = <0xa2>; + pinctrl-1 = <0xa3>; + clk_bypass_output = <0x1>; + linux,phandle = <0xa1>; + phandle = <0xa1>; + }; + + ac200 { + compatible = "allwinner,sunxi-ac200"; + status = "disabled"; + tv_used = <0x0>; + tv_twi_used = <0x0>; + tv_twi_id = <0x3>; + tv_twi_addr = <0x10>; + tv_pwm_ch = <0x5>; + linux,phandle = <0x151>; + phandle = <0x151>; + }; + + vind@0 { + compatible = "allwinner,sunxi-vin-media", "simple-bus"; + #address-cells = <0x2>; + #size-cells = <0x2>; + ranges; + device_id = <0x0>; + vind0_clk = <0x16e36000>; + reg = <0x0 0x6600800 0x0 0x200 0x0 0x6600000 0x0 0x800>; + clocks = <0xa4 0xa5 0xa6 0x9 0xa5 0xa7 0x9 0xa5>; + pinctrl-names = "mclk0-default", "mclk0-sleep", "mclk1-default", "mclk1-sleep"; + pinctrl-0 = <0xa8>; + pinctrl-1 = <0xa9>; + pinctrl-2 = <0xaa>; + pinctrl-3 = <0xab>; + status = "okay"; + linux,phandle = <0x152>; + phandle = <0x152>; + + cci@0 { + compatible = "allwinner,sunxi-csi_cci"; + reg = <0x0 0x6614000 0x0 0x400>; + interrupts = <0x0 0x4b 0x4>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0xac>; + pinctrl-1 = <0xad>; + device_id = <0x0>; + status = "okay"; + linux,phandle = <0x153>; + phandle = <0x153>; + }; + + cci@1 { + compatible = "allwinner,sunxi-csi_cci"; + reg = <0x0 0x6614400 0x0 0x400>; + interrupts = <0x0 0x4c 0x4>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0xae>; + pinctrl-1 = <0xaf>; + device_id = <0x1>; + status = "okay"; + linux,phandle = <0x154>; + phandle = <0x154>; + }; + + csi@0 { + device_type = "csi0"; + compatible = "allwinner,sunxi-csi"; + reg = <0x0 0x6601000 0x0 0x1000>; + interrupts = <0x0 0x49 0x4>; + device_id = <0x0>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x155>; + phandle = <0x155>; + }; + + csi@1 { + device_type = "csi1"; + compatible = "allwinner,sunxi-csi"; + reg = <0x0 0x6602000 0x0 0x1000>; + interrupts = <0x0 0x4a 0x4>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0xb0>; + pinctrl-1 = <0xb1>; + device_id = <0x1>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x156>; + phandle = <0x156>; + }; + + mipi@0 { + compatible = "allwinner,sunxi-mipi"; + reg = <0x0 0x660c000 0x0 0x1000>; + interrupts = <0x0 0x4d 0x4>; + device_id = <0x0>; + status = "okay"; + linux,phandle = <0x157>; + phandle = <0x157>; + }; + + isp@0 { + compatible = "allwinner,sunxi-isp"; + device_id = <0x0>; + status = "okay"; + linux,phandle = <0x158>; + phandle = <0x158>; + }; + + isp@1 { + compatible = "allwinner,sunxi-isp"; + device_id = <0x1>; + status = "okay"; + linux,phandle = <0x159>; + phandle = <0x159>; + }; + + scaler@0 { + compatible = "allwinner,sunxi-scaler"; + device_id = <0x0>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x15a>; + phandle = <0x15a>; + }; + + scaler@1 { + compatible = "allwinner,sunxi-scaler"; + device_id = <0x1>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x15b>; + phandle = <0x15b>; + }; + + scaler@2 { + compatible = "allwinner,sunxi-scaler"; + device_id = <0x2>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x15c>; + phandle = <0x15c>; + }; + + scaler@3 { + compatible = "allwinner,sunxi-scaler"; + device_id = <0x3>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x15d>; + phandle = <0x15d>; + }; + + scaler@4 { + compatible = "allwinner,sunxi-scaler"; + device_id = <0x4>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x15e>; + phandle = <0x15e>; + }; + + scaler@5 { + compatible = "allwinner,sunxi-scaler"; + device_id = <0x5>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x15f>; + phandle = <0x15f>; + }; + + actuator@0 { + device_type = "actuator0"; + compatible = "allwinner,sunxi-actuator"; + actuator0_name = "ad5820_act"; + actuator0_slave = <0x18>; + actuator0_af_pwdn; + actuator0_afvdd = "afvcc-csi"; + actuator0_afvdd_vol = <0x2ab980>; + status = "disabled"; + linux,phandle = <0xb3>; + phandle = <0xb3>; + }; + + flash@0 { + device_type = "flash0"; + compatible = "allwinner,sunxi-flash"; + flash0_type = <0x2>; + flash0_en; + flash0_mode; + flash0_flvdd = [00]; + flash0_flvdd_vol; + device_id = <0x0>; + status = "disabled"; + linux,phandle = <0xb2>; + phandle = <0xb2>; + }; + + sensor@0 { + device_type = "sensor0"; + compatible = "allwinner,sunxi-sensor"; + sensor0_mname = "ov5640"; + sensor0_twi_cci_id = <0x0>; + sensor0_twi_addr = <0x78>; + sensor0_mclk_id = <0x0>; + sensor0_pos = "rear"; + sensor0_isp_used = <0x0>; + sensor0_fmt = <0x0>; + sensor0_stby_mode = <0x0>; + sensor0_vflip = <0x0>; + sensor0_hflip = <0x0>; + sensor0_cameravdd-supply; + sensor0_cameravdd_vol = <0x2ab980>; + sensor0_iovdd-supply; + sensor0_iovdd_vol = <0x2ab980>; + sensor0_avdd-supply; + sensor0_avdd_vol = <0x2ab980>; + sensor0_dvdd-supply; + sensor0_dvdd_vol = <0x16e360>; + sensor0_power_en; + sensor0_reset = <0x53 0x4 0xe 0x1 0x0 0x1 0x0>; + sensor0_pwdn = <0x53 0x4 0x10 0x1 0x0 0x1 0x0>; + sensor0_sm_vs; + flash_handle = <0xb2>; + act_handle = <0xb3>; + device_id = <0x0>; + status = "okay"; + linux,phandle = <0x160>; + phandle = <0x160>; + }; + + sensor@1 { + device_type = "sensor1"; + compatible = "allwinner,sunxi-sensor"; + sensor1_mname = "ov5647"; + sensor1_twi_cci_id = <0x1>; + sensor1_twi_addr = <0x6c>; + sensor1_mclk_id = <0x1>; + sensor1_pos = "front"; + sensor1_isp_used = <0x0>; + sensor1_fmt = <0x0>; + sensor1_stby_mode = <0x0>; + sensor1_vflip = <0x0>; + sensor1_hflip = <0x0>; + sensor1_cameravdd-supply; + sensor1_cameravdd_vol = <0x2ab980>; + sensor1_iovdd-supply; + sensor1_iovdd_vol = <0x2ab980>; + sensor1_avdd-supply; + sensor1_avdd_vol = <0x2ab980>; + sensor1_dvdd-supply; + sensor1_dvdd_vol = <0x16e360>; + sensor1_power_en; + sensor1_reset = <0x53 0x4 0xe 0x1 0x0 0x1 0x0>; + sensor1_pwdn = <0x53 0x4 0xf 0x1 0x0 0x1 0x0>; + sensor1_sm_vs; + flash_handle; + act_handle; + device_id = <0x1>; + status = "okay"; + linux,phandle = <0x161>; + phandle = <0x161>; + }; + + vinc@0 { + device_type = "vinc0"; + compatible = "allwinner,sunxi-vin-core"; + reg = <0x0 0x6609000 0x0 0x200>; + interrupts = <0x0 0x45 0x4>; + vinc0_csi_sel = <0x0>; + vinc0_mipi_sel = <0x0>; + vinc0_isp_sel = <0x0>; + vinc0_isp_tx_ch = <0x0>; + vinc0_rear_sensor_sel = <0x0>; + vinc0_front_sensor_sel = <0x0>; + vinc0_sensor_list = <0x0>; + device_id = <0x0>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x162>; + phandle = <0x162>; + }; + + vinc@1 { + device_type = "vinc1"; + compatible = "allwinner,sunxi-vin-core"; + reg = <0x0 0x6609200 0x0 0x200>; + interrupts = <0x0 0x46 0x4>; + vinc1_csi_sel = <0x0>; + vinc1_mipi_sel = <0x0>; + vinc1_isp_sel = <0x0>; + vinc1_isp_tx_ch = <0x0>; + vinc1_rear_sensor_sel = <0x0>; + vinc1_front_sensor_sel = <0x0>; + vinc1_sensor_list = <0x0>; + device_id = <0x1>; + iommus = <0x28 0x4 0x1>; + status = "okay"; + linux,phandle = <0x163>; + phandle = <0x163>; + }; + + vinc@2 { + device_type = "vinc2"; + compatible = "allwinner,sunxi-vin-core"; + reg = <0x0 0x6609400 0x0 0x200>; + interrupts = <0x0 0x47 0x4>; + vinc2_csi_sel = <0x0>; + vinc2_mipi_sel = <0x0>; + vinc2_isp_sel = <0x0>; + vinc2_isp_tx_ch = <0x0>; + vinc2_rear_sensor_sel = <0x0>; + vinc2_front_sensor_sel = <0x0>; + vinc2_sensor_list = <0x0>; + device_id = <0x2>; + iommus = <0x28 0x4 0x1>; + status = "disabled"; + linux,phandle = <0x164>; + phandle = <0x164>; + }; + + vinc@3 { + device_type = "vinc3"; + compatible = "allwinner,sunxi-vin-core"; + reg = <0x0 0x6609600 0x0 0x200>; + interrupts = <0x0 0x48 0x4>; + vinc3_csi_sel = <0x0>; + vinc3_mipi_sel = <0x0>; + vinc3_isp_sel = <0x0>; + vinc3_isp_tx_ch = <0x0>; + vinc3_rear_sensor_sel = <0x0>; + vinc3_front_sensor_sel = <0x0>; + vinc3_sensor_list = <0x0>; + device_id = <0x3>; + iommus = <0x28 0x4 0x1>; + status = "disabled"; + linux,phandle = <0x165>; + phandle = <0x165>; + }; + + vinc@4 { + device_type = "vinc4"; + compatible = "allwinner,sunxi-vin-core"; + reg = <0x0 0x6609800 0x0 0x200>; + interrupts = <0x0 0x4f 0x4>; + vinc4_csi_sel = <0x1>; + vinc4_mipi_sel = <0xff>; + vinc4_isp_sel = <0x1>; + vinc4_isp_tx_ch = <0x0>; + vinc4_rear_sensor_sel = <0x1>; + vinc4_front_sensor_sel = <0x1>; + vinc4_sensor_list = <0x0>; + device_id = <0x4>; + iommus = <0x28 0x5 0x1>; + status = "disabled"; + linux,phandle = <0x166>; + phandle = <0x166>; + }; + + vinc@5 { + device_type = "vinc5"; + compatible = "allwinner,sunxi-vin-core"; + reg = <0x0 0x6609a00 0x0 0x200>; + interrupts = <0x0 0x50 0x4>; + vinc5_csi_sel = <0x1>; + vinc5_mipi_sel = <0xff>; + vinc5_isp_sel = <0x1>; + vinc5_isp_tx_ch = <0x0>; + vinc5_rear_sensor_sel = <0x1>; + vinc5_front_sensor_sel = <0x1>; + vinc5_sensor_list = <0x0>; + device_id = <0x5>; + iommus = <0x28 0x5 0x1>; + status = "disabled"; + linux,phandle = <0x167>; + phandle = <0x167>; + }; + }; + + vdevice@0 { + compatible = "allwinner,sun50i-vdevice"; + device_type = "Vdevice"; + pinctrl-names = "default"; + interrupt-parent = <0x53>; + interrupts = <0x0 0x3 0x4>; + pinctrl-0 = <0xb4>; + test-gpios = <0x53 0x0 0x0 0x1 0x2 0x2 0x1>; + status = "okay"; + linux,phandle = <0x168>; + phandle = <0x168>; + }; + + emce@01905000 { + compatible = "allwinner,sunxi-emce"; + device_name = "emce"; + reg = <0x0 0x1905000 0x0 0x100>; + clock-frequency = <0x11e1a300>; + linux,phandle = <0x169>; + phandle = <0x169>; + }; + + ce@1904000 { + compatible = "allwinner,sunxi-ce"; + device_name = "ce"; + reg = <0x0 0x1904000 0x0 0xa0 0x0 0x1904800 0x0 0xa0>; + interrupts = <0x0 0x5b 0x1 0x0 0x5c 0x1>; + clock-frequency = <0x11e1a300>; + clocks = <0xb5 0xc>; + linux,phandle = <0x16a>; + phandle = <0x16a>; + }; + + deinterlace@0x01420000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sunxi-deinterlace"; + reg = <0x0 0x1420000 0x0 0x40000>; + interrupts = <0x0 0x59 0x4>; + clocks = <0xe 0xc>; + iommus = <0x28 0x1 0x1>; + status = "okay"; + linux,phandle = <0x16b>; + phandle = <0x16b>; + }; + + smartcard@0x05005000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "allwinner,sunxi-scr"; + device_type = "scr0"; + reg = <0x0 0x5005000 0x0 0x400>; + interrupts = <0x0 0x8 0x4>; + clocks = <0xb6 0xb7>; + clock-frequency = <0x16e3600>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <0xb8 0xb9>; + pinctrl-1 = <0xba>; + status = "disabled"; + linux,phandle = <0x16c>; + phandle = <0x16c>; + }; + + nand0@04011000 { + compatible = "allwinner,sun50iw9-nand"; + device_type = "nand0"; + reg = <0x0 0x4011000 0x0 0x1000>; + interrupts = <0x0 0x22 0x4>; + clocks = <0xc 0xbb 0xbc>; + pinctrl-names = "default", "sleep"; + pinctrl-1 = <0xbf>; + nand0_regulator1 = "vcc-nand"; + nand0_regulator2 = "none"; + nand0_cache_level = <0x55aaaa55>; + nand0_flush_cache_num = <0x55aaaa55>; + nand0_capacity_level = <0x55aaaa55>; + nand0_id_number_ctl = <0x55aaaa55>; + nand0_print_level = <0x55aaaa55>; + nand0_p0 = <0x55aaaa55>; + nand0_p1 = <0x55aaaa55>; + nand0_p2 = <0x55aaaa55>; + nand0_p3 = <0x55aaaa55>; + chip_code = "sun50iw9"; + status = "disabled"; + linux,phandle = <0x16d>; + phandle = <0x16d>; + nand0_support_2ch = <0x0>; + pinctrl-0 = <0x188 0x189>; + }; + + ts0@05060000 { + compatible = "allwinner,sun50i-tsc"; + device_type = "ts0"; + reg = <0x0 0x5060000 0x0 0x1000>; + interrupts = <0x0 0x11 0x4>; + clocks = <0x2 0xc0>; + clock-frequency = <0x7270e00>; + pinctrl-names = "ts0-default", "ts0-sleep"; + pinctrl-0 = <0xc1>; + pinctrl-1 = <0xc2>; + ts0config = <0x1>; + status = "okay"; + linux,phandle = <0x16e>; + phandle = <0x16e>; + }; + + thermal_sensor { + compatible = "arm,sun50iw9p1"; + reg = <0x0 0x5070400 0x0 0x400>; + clocks = <0xc3>; + clock-names = "bus"; + nvmem-cells = <0xc4>; + nvmem-cell-names = "calibration"; + #thermal-sensor-cells = <0x1>; + linux,phandle = <0xc5>; + phandle = <0xc5>; + }; + + thermal-zones { + + cpu_thermal_zone { + polling-delay-passive = <0x1f4>; + polling-delay = <0x3e8>; + thermal-sensors = <0xc5 0x2>; + sustainable-power = <0x3e8>; + k_po = <0x14>; + k_pu = <0x28>; + k_i = <0x0>; + + trips { + linux,phandle = <0x16f>; + phandle = <0x16f>; + + trip-point@0 { + temperature = <0xea60>; + type = "passive"; + hysteresis = <0x0>; + linux,phandle = <0x170>; + phandle = <0x170>; + }; + + trip-point@1 { + temperature = <0x11170>; + type = "passive"; + hysteresis = <0x0>; + linux,phandle = <0xc6>; + phandle = <0xc6>; + }; + + cpu_crit@0 { + temperature = <0x1c138>; + type = "critical"; + hysteresis = <0x0>; + linux,phandle = <0x171>; + phandle = <0x171>; + }; + }; + + cooling-maps { + + map0 { + trip = <0xc6>; + cooling-device = <0xc7 0xffffffff 0xffffffff>; + contribution = <0x400>; + }; + + map1 { + trip = <0xc6>; + cooling-device = <0xc8 0xffffffff 0xffffffff>; + contribution = <0x400>; + }; + }; + }; + + gpu_thermal_zone { + polling-delay-passive = <0x1f4>; + polling-delay = <0x3e8>; + thermal-sensors = <0xc5 0x0>; + sustainable-power = <0x44c>; + }; + + ve_thermal_zone { + polling-delay-passive = <0x0>; + polling-delay = <0x0>; + thermal-sensors = <0xc5 0x1>; + }; + + ddr_thermal_zone { + polling-delay-passive = <0x0>; + polling-delay = <0x0>; + thermal-sensors = <0xc5 0x3>; + }; + }; + + gpadc { + compatible = "allwinner,sunxi-gpadc"; + reg = <0x0 0x5070000 0x0 0x400>; + interrupts = <0x0 0x12 0x0>; + clocks = <0xc9>; + status = "okay"; + channel_num = <0x1>; + channel_select = <0x1>; + channel_data_select = <0x0>; + channel_compare_select = <0x1>; + channel_cld_select = <0x1>; + channel_chd_select = <0x0>; + channel0_compare_lowdata = <0x19f0a0>; + channel0_compare_higdata = <0x124f80>; + key_cnt = <0x5>; + key0_vol = <0x73>; + key0_val = <0x73>; + key1_vol = <0xf0>; + key1_val = <0x72>; + key2_vol = <0x168>; + key2_val = <0x8b>; + key3_vol = <0x1e0>; + key3_val = <0x1c>; + key4_vol = <0x258>; + key4_val = <0x66>; + linux,phandle = <0x172>; + phandle = <0x172>; + }; + + keyboard { + compatible = "allwinner,keyboard_1350mv"; + reg = <0x0 0x5070800 0x0 0x400>; + clocks = <0xca>; + interrupts = <0x0 0x14 0x0>; + status = "disabled"; + key_cnt = <0x5>; + key0 = <0xd2 0x73>; + key1 = <0x19a 0x72>; + key2 = <0x24e 0x8b>; + key3 = <0x2ee 0x1c>; + key4 = <0x370 0xac>; + linux,phandle = <0x173>; + phandle = <0x173>; + }; + + eth@05020000 { + compatible = "allwinner,sunxi-gmac"; + reg = <0x0 0x5020000 0x0 0x10000 0x0 0x3000030 0x0 0x4>; + interrupts = <0x0 0xe 0x4>; + interrupt-names = "gmacirq"; + clocks = <0xcb 0xcc>; + clock-names = "gmac", "ephy"; + device_type = "gmac0"; + pinctrl-0 = <0xcd>; + pinctrl-1 = <0xce>; + pinctrl-names = "default", "sleep"; + phy-mode = "rgmii"; + tx-delay = <0x6>; + rx-delay = <0x0>; + phy-rst; + gmac-power0; + gmac-power1; + gmac-power2; + status = "okay"; + use_ephy25m = <0x0>; + linux,phandle = <0x174>; + phandle = <0x174>; + }; + + eth@05030000 { + compatible = "allwinner,sunxi-gmac"; + reg = <0x0 0x5030000 0x0 0x10000 0x0 0x3000034 0x0 0x4>; + interrupts = <0x0 0xf 0x4>; + interrupt-names = "gmacirq"; + clocks = <0xcf>; + clock-names = "gmac"; + device_type = "gmac1"; + pinctrl-0 = <0xd0>; + pinctrl-1 = <0xd1>; + pinctrl-names = "default", "sleep"; + phy-mode = "rmii"; + tx-delay = <0x7>; + rx-delay = <0x1f>; + phy-rst; + gmac-power0; + gmac-power1; + gmac-power2; + status = "disabled"; + linux,phandle = <0x175>; + phandle = <0x175>; + }; + + wlan { + compatible = "allwinner,sunxi-wlan"; + clocks = <0x1b>; + pinctrl-0 = <0xd2>; + pinctrl-names = "default"; + wlan_busnum = <0x1>; + wlan_power; + wlan_io_regulator; + wlan_regon = <0x53 0x6 0x12 0x1 0xffffffff 0xffffffff 0x0>; + wlan_hostwake = <0x53 0x6 0xf 0x6 0xffffffff 0xffffffff 0x0>; + chip_en; + power_en; + status = "okay"; + linux,phandle = <0x176>; + phandle = <0x176>; + }; + + bt { + compatible = "allwinner,sunxi-bt"; + clocks = <0x1b>; + bt_power; + bt_io_regulator; + //bt_rst_n = <0x53 0x6 0x13 0x1 0xffffffff 0xffffffff 0x0>; + status = "okay"; + linux,phandle = <0x177>; + phandle = <0x177>; + }; + + btlpm { + compatible = "allwinner,sunxi-btlpm"; + uart_index = <0x1>; + bt_wake = <0x53 0x6 0x11 0x1 0xffffffff 0xffffffff 0x1>; + bt_hostwake = <0x53 0x6 0x10 0x6 0xffffffff 0xffffffff 0x0>; + status = "okay"; + linux,phandle = <0x178>; + phandle = <0x178>; + }; + + addr_mgt { + compatible = "allwinner,sunxi-addr_mgt"; + type_addr_wifi = <0x0>; + type_addr_bt = <0x0>; + type_addr_eth = <0x0>; + status = "okay"; + linux,phandle = <0x179>; + phandle = <0x179>; + }; + + gpio_para { + device_type = "gpio_para"; + status = "disabled"; + compatible = "allwinner,sunxi-init-gpio"; + gpio_num = <0x0>; + //gpio_pin_1 = <0x53 8 16 0x1 1 0xffffffff 0xffffffff>; /* PI16 for USBC0 VBUS */ + }; + + leds { + compatible = "gpio-leds"; + + power { + label = "power_led"; + gpios = <0x53 0x2 0x7 0x1 0xffffffff 0xffffffff 0x0>; /* PC7 */ + default-state = "on"; + }; + + capslock { + label = "caps_led"; + gpios = <0x53 0x2 0x2 0x1 0xffffffff 0xffffffff 0x0>; // PC2 + linux,default-trigger = "kbd-capslock"; + default-state = "off"; + }; + + numlock { + label = "num_led"; + gpios = <0x53 0x2 0xc 0x1 0xffffffff 0xffffffff 0x0>; // PC12 + linux,default-trigger = "kbd-numlock"; + default-state = "off"; + }; + }; + + product { + device_type = "product"; + version = "100"; + machine = "evb"; + }; + + platform { + device_type = "platform"; + eraseflag = <0x1>; + debug_mode = <0x3>; + }; + + target { + device_type = "target"; + boot_clock = <0x3f0>; + storage_type = <0xffffffff>; + advert_enable = <0x0>; + burn_key = <0x1>; + dragonboard_test = <0x0>; + }; + + power_sply { + device_type = "power_sply"; + dcdc2_vol = <0xf4628>; + aldo1_vol = <0xf4948>; + dldo1_vol = <0xf4f24>; + bldo2_vol = <0xf4948>; + cldo2_vol = <0xf4f24>; + cldo3_vol = <0xf4948>; + }; + + axp1530_power_sply { + device_type = "axp1530_power_sply"; + dcdc2_vol = <0xf4628>; + aldo1_vol = <0xf4948>; + dldo1_vol = <0xf4f24>; + bldo2_vol = <0xf4948>; + cldo2_vol = <0xf4f24>; + cldo3_vol = <0xf4948>; + }; + + axp806_power_sply { + device_type = "axp806_power_sply"; + dcdce_vol = <0xf4f24>; + aldo1_vol = <0xf4f24>; + bldo1_vol = <0xf4948>; + bldo2_vol = <0xf4948>; + cldo2_vol = <0xf4f24>; + cldo3_vol = <0xf4948>; + }; + + card_boot { + device_type = "card_boot"; + logical_start = <0xa000>; + sprite_gpio0; + }; + + boot_init_gpio { + device_type = "boot_init_gpio"; + status = "okay"; + gpio0 = <0x53 0x2 12 0x1 0xffffffff 0xffffffff 0x0>; + gpio1 = <0x53 0x2 0x2 0x1 0xffffffff 0xffffffff 0x0>; + gpio2 = <0x53 0x2 0x7 0x1 0xffffffff 0xffffffff 0x1>; + }; + + ir_boot_recovery { + device_type = "ir_boot_recovery"; + status = "disabled"; + ir_work_mode = <0x1>; + ir_press_times = <0x2>; + ir_detect_time = <0x1>; + ir_key_no_duplicate = <0x0>; + ir_recovery_key_code0 = <0x11>; + ir_addr_code0 = <0xfe01>; + ir_recovery_key_code1 = <0x19>; + ir_addr_code1 = <0xfe01>; + ir_recovery_key_code2 = <0x4c>; + ir_addr_code2 = <0xfe01>; + ir_recovery_key_code3 = <0x0>; + ir_addr_code3 = <0xfe01>; + }; + + key_boot_recovery { + device_type = "key_boot_recovery"; + recovery_key_used = <0x1>; + press_mode_enable = <0x0>; + key_work_mode = <0x0>; + short_press_mode = <0x0>; + long_press_mode = <0x1>; + key_press_time = <0x7d0>; + recovery_key; + }; + + pm_para { + device_type = "pm_para"; + standby_mode = <0x1>; + }; + + card0_boot_para { + device_type = "card0_boot_para"; + card_ctrl = <0x0>; + card_high_speed = <0x1>; + card_line = <0x4>; + pinctrl-0 = <0x181>; + }; + + card2_boot_para { + device_type = "card2_boot_para"; + card_ctrl = <0x2>; + card_high_speed = <0x1>; + card_line = <0x8>; + pinctrl-0 = <0x182 0x183>; + sdc_ex_dly_used = <0x2>; + sdc_io_1v8 = <0x1>; + }; + + gpio_bias { + device_type = "gpio_bias"; + pc_bias = <0x708>; + }; + + twi_para { + device_type = "twi_para"; + twi_port = <0x0>; + pinctrl-0 = <0x184>; + }; + + uart_para { + device_type = "uart_para"; + uart_debug_port = <0x0>; + pinctrl-0 = <0x185>; + }; + + jtag_para { + device_type = "jtag_para"; + jtag_enable = <0x0>; + pinctrl-0 = <0x186>; + }; + + clock { + device_type = "clock"; + pll4 = <0x12c>; + pll6 = <0x258>; + pll8 = <0x168>; + pll9 = <0x129>; + pll10 = <0x108>; + }; + + dram_select_para { + device_type = "dram_select_para"; + select_mode = <0x0>; + gpadc_channel = <0x1>; + select_gpio0; + select_gpio1; + select_gpio2; + select_gpio3; + }; + + dram_para1 { + device_type = "dram_para1"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para2 { + device_type = "dram_para2"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para3 { + device_type = "dram_para3"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para4 { + device_type = "dram_para4"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para5 { + device_type = "dram_para5"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para6 { + device_type = "dram_para6"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para7 { + device_type = "dram_para7"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para8 { + device_type = "dram_para8"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para9 { + device_type = "dram_para9"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para10 { + device_type = "dram_para10"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para11 { + device_type = "dram_para11"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para12 { + device_type = "dram_para12"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para13 { + device_type = "dram_para13"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para14 { + device_type = "dram_para14"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + dram_para15 { + device_type = "dram_para15"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + }; + + //sunxi_hdmi_detect { + // compatible = "allwinner,sun50iw9-hdmi-detect"; + // status = "okay"; + // key_io = <0x53 0x8 0x10 0x0 0x0 0x0 0x0>; + // hhpd_io = <0x53 0x2 0x3 0x1 0x0 0x0 0x0>; + //}; + + secure { + device_type = "secure"; + dram_region_mbytes = <0x50>; + drm_region_mbytes = <0x0>; + drm_region_start_mbytes = <0x0>; + }; + }; + + aliases { + serial0 = "/soc@03000000/uart@05000000", "/soc@03000000/uart@05000000"; + serial1 = "/soc@03000000/uart@05000400", "/soc@03000000/uart@05000400"; + serial2 = "/soc@03000000/uart@05000800", "/soc@03000000/uart@05000800"; + serial3 = "/soc@03000000/uart@05000c00", "/soc@03000000/uart@05000c00"; + serial4 = "/soc@03000000/uart@05001000", "/soc@03000000/uart@05001000"; + serial5 = "/soc@03000000/uart@05001400", "/soc@03000000/uart@05001400"; + twi0 = "/soc@03000000/twi@0x05002000", "/soc@03000000/twi@0x05002000"; + twi1 = "/soc@03000000/twi@0x05002400", "/soc@03000000/twi@0x05002400"; + twi2 = "/soc@03000000/twi@0x05002800", "/soc@03000000/twi@0x05002800"; + twi3 = "/soc@03000000/twi@0x05002c00", "/soc@03000000/twi@0x05002c00"; + twi4 = "/soc@03000000/twi@0x05003000", "/soc@03000000/twi@0x05003000"; + twi5 = "/soc@03000000/twi@0x07081400", "/soc@03000000/twi@0x07081400"; + spi0 = "/soc@03000000/spi@05010000", "/soc@03000000/spi@05010000"; + spi1 = "/soc@03000000/spi@05011000", "/soc@03000000/spi@05011000"; + ir0 = "/soc@03000000/s_cir@07040000", "/soc@03000000/s_cir@07040000"; + pcie = "/soc@03000000/pcie@0x05400000", "/soc@03000000/pcie@0x05400000"; + scr0 = "/soc@03000000/smartcard@0x05005000", "/soc@03000000/smartcard@0x05005000"; + gmac0 = "/soc@03000000/eth@05020000", "/soc@03000000/eth@05020000"; + gmac1 = "/soc@03000000/eth@05030000", "/soc@03000000/eth@05030000"; + global_timer0 = "/soc@03000000/timer@03009000", "/soc@03000000/timer@03009000"; + mmc0 = "/soc@03000000/sdmmc@04020000", "/soc@03000000/sdmmc@04020000"; + mmc2 = "/soc@03000000/sdmmc@04022000", "/soc@03000000/sdmmc@04022000"; + nand0 = "/soc@03000000/nand0@04011000", "/soc@03000000/nand0@04011000"; + disp = "/soc@03000000/disp@01000000", "/soc@03000000/disp@01000000"; + lcd0 = "/soc@03000000/lcd0@01c0c000", "/soc@03000000/lcd0@01c0c000"; + lcd1 = "/soc@03000000/lcd1@01c0c001", "/soc@03000000/lcd1@01c0c001"; + hdmi = "/soc@03000000/hdmi@06000000", "/soc@03000000/hdmi@06000000"; + pwm = "/soc@03000000/pwm@0300a000", "/soc@03000000/pwm@0300a000"; + tv0 = "/soc@03000000/tv0@01c94000", "/soc@03000000/tv0@01c94000"; + ac200 = "/soc@03000000/ac200", "/soc@03000000/ac200"; + boot_disp = "/soc@03000000/boot_disp", "/soc@03000000/boot_disp"; + pmu0 = "/soc@03000000/twi@0x07081400/pmu", "/soc@03000000/twi@0x07081400/pmu"; + standby_param = "/soc@03000000/twi@0x07081400/pmu/standby_param", "/soc@03000000/twi@0x07081400/pmu/standby_param"; + linux,phandle = <0x17a>; + phandle = <0x17a>; + }; + + chosen { + bootargs = "earlyprintk=sunxi-uart,0x05000000 loglevel=8 initcall_debug=1 console=ttyS0 init=/init"; + linux,initrd-start = <0x0 0x0>; + linux,initrd-end = <0x0 0x0>; + }; + + firmware { + + android { + compatible = "android,firmware"; + boot_devices = "soc/sdc0,soc/sdc2,soc"; + + vbmeta { + compatible = "android,vbmeta"; + parts = "vbmeta,vbmeta_system,vbmeta_vendor,boot,super,recovery"; + }; + }; + + optee { + compatible = "linaro,optee-tz"; + method = "smc"; + }; + }; + + cpus { + #address-cells = <0x2>; + #size-cells = <0x0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x0>; + enable-method = "psci"; + clocks = <0xd3>; + operating-points-v2 = <0xd4>; + cpu-idle-states = <0xd5>; + dynamic-power-coefficient = <0x64>; + #cooling-cells = <0x2>; + cpu-supply = <0xd6>; + linux,phandle = <0xc7>; + phandle = <0xc7>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x1>; + enable-method = "psci"; + clocks = <0xd3>; + operating-points-v2 = <0xd4>; + cpu-idle-states = <0xd5>; + #cooling-cells = <0x2>; + }; + + cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x2>; + enable-method = "psci"; + clocks = <0xd3>; + operating-points-v2 = <0xd4>; + cpu-idle-states = <0xd5>; + #cooling-cells = <0x2>; + }; + + cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x3>; + enable-method = "psci"; + clocks = <0xd3>; + operating-points-v2 = <0xd4>; + cpu-idle-states = <0xd5>; + #cooling-cells = <0x2>; + }; + + idle-states { + entry-method = "arm,psci"; + + cpu-sleep-0 { + compatible = "arm,idle-state"; + arm,psci-suspend-param = <0x10000>; + entry-latency-us = <0x2e>; + exit-latency-us = <0x3b>; + min-residency-us = <0xdf2>; + local-timer-stop; + linux,phandle = <0xd5>; + phandle = <0xd5>; + }; + }; + }; + + opp_l_table { + compatible = "allwinner,sun50i-operating-points"; + nvmem-cells = <0xd7>; + nvmem-cell-names = "speed"; + opp-shared; + linux,phandle = <0xd4>; + phandle = <0xd4>; + + opp@480000000-0 { + opp-hz = <0x0 0x1c9c3800>; + opp-microvolt = <0xc8320>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x3>; + }; + + opp@480000000-1 { + opp-hz = <0x0 0x1c9c3800>; + opp-microvolt = <0xd6d80>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x4>; + }; + + opp@600000000-0 { + opp-hz = <0x0 0x23c34600>; + opp-microvolt = <0xc8320>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x3>; + }; + + opp@600000000-1 { + opp-hz = <0x0 0x23c34600>; + opp-microvolt = <0xd6d80>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x4>; + }; + + opp@792000000-0 { + opp-hz = <0x0 0x2f34f600>; + opp-microvolt = <0xd1f60>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x3>; + }; + + opp@792000000-1 { + opp-hz = <0x0 0x2f34f600>; + opp-microvolt = <0xe57e0>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x4>; + }; + + opp@1008000000-0 { + opp-hz = <0x0 0x3c14dc00>; + opp-microvolt = <0xdbba0>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x3>; + }; + + opp@1008000000-1 { + opp-hz = <0x0 0x3c14dc00>; + opp-microvolt = <0xf9060>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x4>; + }; + + opp@1200000000-0 { + opp-hz = <0x0 0x47868c00>; + opp-microvolt = <0xea600>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x3>; + }; + + opp@1200000000-1 { + opp-hz = <0x0 0x47868c00>; + opp-microvolt = <0x10c8e0>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x4>; + }; + + opp@1296000000 { + opp-hz = <0x0 0x4d3f6400>; + opp-microvolt = <0x10c8e0>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x2>; + }; + + opp@1344000000 { + opp-hz = <0x0 0x501bd000>; + opp-microvolt = <0x111700>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x4>; + }; + + opp@1512000000 { + opp-hz = <0x0 0x5a1f4a00>; + opp-microvolt = <0x10c8e0>; + clock-latency-ns = <0x3b9b0>; + opp-supported-hw = <0x1>; + }; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + + n_brom { + compatible = "allwinner,n-brom"; + reg = <0x0 0x0 0x0 0xa000>; + }; + + s_brom { + compatible = "allwinner,s-brom"; + reg = <0x0 0x0 0x0 0x10000>; + }; + + sram_ctrl { + device_type = "sram_ctrl"; + compatible = "allwinner,sram_ctrl"; + reg = <0x0 0x3000000 0x0 0x100>; + }; + + sram_a1 { + compatible = "allwinner,sram_a1"; + reg = <0x0 0x20000 0x0 0x8000>; + }; + + sram_a2 { + compatible = "allwinner,sram_a2"; + reg = <0x0 0x100000 0x0 0x14000>; + }; + + prcm { + compatible = "allwinner,prcm"; + reg = <0x0 0x1f01400 0x0 0x400>; + }; + + s_cpuscfg { + compatible = "allwinner,s_cpuscfg"; + reg = <0x0 0x1f01c00 0x0 0x400>; + }; + + ion { + compatible = "allwinner,sunxi-ion"; + + heap_sys_user@0 { + compatible = "allwinner,sys_user"; + heap-name = "sys_user"; + heap-id = <0x0>; + heap-base = <0x0>; + heap-size = <0x0>; + heap-type = "ion_system"; + }; + + heap_cma@0 { + compatible = "allwinner,cma"; + heap-name = "cma"; + heap-id = <0x4>; + heap-base = <0x0>; + heap-size = <0x0>; + heap-type = "ion_cma"; + }; + + heap_secure@0 { + compatible = "allwinner,secure"; + heap-name = "secure"; + heap-id = <0x6>; + heap-base = <0x0>; + heap-size = <0x0>; + heap-type = "ion_secure"; + }; + }; + + dram { + compatible = "allwinner,dram"; + clocks = <0xd8>; + clock-names = "pll_ddr"; + dram_clk = <0x2d0>; + dram_type = <0x3>; + dram_zq = <0x3f3fdd>; + dram_odt_en = <0x1>; + dram_para1 = <0x30fa>; + dram_para2 = <0x1000>; + dram_mr0 = <0x840>; + dram_mr1 = <0x4>; + dram_mr2 = <0x8>; + dram_mr3 = <0x0>; + dram_tpr0 = <0x0>; + dram_tpr1 = <0x0>; + dram_tpr2 = <0x0>; + dram_tpr3 = <0x0>; + dram_tpr4 = <0x0>; + dram_tpr5 = <0x0>; + dram_tpr6 = <0x33808080>; + dram_tpr7 = <0x0>; + dram_tpr8 = <0x0>; + dram_tpr9 = <0x0>; + dram_tpr10 = <0xf83438>; + dram_tpr11 = <0x0>; + dram_tpr12 = <0x0>; + dram_tpr13 = <0x40>; + linux,phandle = <0x17b>; + phandle = <0x17b>; + device_type = "dram"; + dram_dx_odt = <0x8080808>; + dram_dx_dri = <0xe0e0e0e>; + dram_ca_dri = <0xe0e>; + dram_mr4 = <0x0>; + dram_mr5 = <0x0>; + dram_mr6 = <0x0>; + dram_mr11 = <0x0>; + dram_mr12 = <0x0>; + dram_mr13 = <0x0>; + dram_mr14 = <0x0>; + dram_mr16 = <0x0>; + dram_mr17 = <0x0>; + dram_mr22 = <0x0>; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x0 0x40000000 0x0 0x20000000>; + }; + + interrupt-controller@03020000 { + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; + #interrupt-cells = <0x3>; + #address-cells = <0x0>; + device_type = "gic"; + interrupt-controller; + reg = <0x0 0x3021000 0x0 0x1000 0x0 0x3022000 0x0 0x2000 0x0 0x3024000 0x0 0x2000 0x0 0x3026000 0x0 0x2000>; + interrupts = <0x1 0x9 0xf04>; + interrupt-parent = <0x85>; + linux,phandle = <0x85>; + phandle = <0x85>; + }; + + interrupt-controller@0 { + compatible = "allwinner,sunxi-wakeupgen"; + interrupt-controller; + #interrupt-cells = <0x3>; + interrupt-parent = <0x85>; + linux,phandle = <0x1>; + phandle = <0x1>; + }; + + intc-nmi@07010320 { + compatible = "allwinner,sun8i-nmi"; + interrupt-parent = <0x85>; + #interrupt-cells = <0x2>; + #address-cells = <0x0>; + interrupt-controller; + reg = <0x0 0x7010320 0x0 0xc>; + pad-control-v1 = <0x7000208>; + interrupts = <0x0 0x67 0x4>; + linux,phandle = <0x17c>; + phandle = <0x17c>; + }; + + sunxi-sid@03006000 { + compatible = "allwinner,sunxi-sid"; + device_type = "sid"; + reg = <0x0 0x3006000 0x0 0x1000>; + linux,phandle = <0x17d>; + phandle = <0x17d>; + }; + + sunxi-sid-ng@03006000 { + compatible = "allwinner,sun50iw9p1-sid"; + reg = <0x0 0x3006000 0x0 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + + speed@00 { + reg = <0x0 0x2>; + linux,phandle = <0xd7>; + phandle = <0xd7>; + }; + + calib@14 { + reg = <0x14 0x8>; + linux,phandle = <0xc4>; + phandle = <0xc4>; + }; + }; + + sunxi-chipid@03006200 { + compatible = "allwinner,sunxi-chipid"; + device_type = "chipid"; + reg = <0x0 0x3006200 0x0 0x200>; + linux,phandle = <0x17e>; + phandle = <0x17e>; + }; + + timer_arch { + compatible = "arm,armv8-timer"; + interrupts = <0x1 0xd 0xf08 0x1 0xe 0xf08 0x1 0xb 0xf08 0x1 0xa 0xf08>; + clock-frequency = <0x16e3600>; + interrupt-parent = <0x85>; + arm,no-tick-in-suspend; + }; + + pmu { + compatible = "arm,armv8-pmuv3"; + interrupts = <0x0 0x8c 0x4 0x0 0x8d 0x4 0x0 0x8e 0x4 0x0 0x8f 0x4>; + }; + + dramfreq { + compatible = "allwinner,sunxi-dramfreq"; + reg = <0x0 0x4002000 0x0 0x1000 0x0 0x4003000 0x0 0x3000 0x0 0x3001000 0x0 0x1000>; + interrupts = <0x0 0x21 0x4>; + clocks = <0xd8>; + status = "okay"; + }; + + uboot { + linux,phandle = <0x17f>; + phandle = <0x17f>; + }; + + iommu@030f0000 { + compatible = "allwinner,sunxi-iommu"; + reg = <0x0 0x30f0000 0x0 0x1000>; + interrupts = <0x0 0x3d 0x4>; + interrupt-names = "iommu-irq"; + clocks = <0xd9>; + clock-names = "iommu"; + #iommu-cells = <0x2>; + status = "okay"; + linux,phandle = <0x28>; + phandle = <0x28>; + }; + + headphones-sound { + status = "okay"; + compatible = "simple-audio-card"; + pinctrl-names = "default"; + pinctrl-0 = <&hp_det>; + simple-audio-card,format = "i2s"; + simple-audio-card,name = "rk-es8316-hp-sound"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,hp-det-gpio = <0x53 7 10 0x6 1 0xffffffff 0xffffffff>; + simple-audio-card,cpu { + sound-dai = <&ahub_daudio3>; + }; + simple-audio-card,codec { + sound-dai = <&es8316>; + }; + }; + + gpu@0x01800000 { + device_type = "gpu"; + compatible = "arm,mali-midgard"; + reg = <0x0 0x1800000 0x0 0x10000>; + interrupts = <0x0 0x5f 0x4 0x0 0x60 0x4 0x0 0x61 0x4>; + interrupt-names = "JOB", "MMU", "GPU"; + clocks = <0xda 0xdb 0xdc>; + clock-names = "clk_parent", "clk_mali", "clk_bak"; + #cooling-cells = <0x2>; + gpu_idle = <0x1>; + dvfs_status = <0x0>; + operating-points = <0x927c0 0xe7ef0 0x8ca00 0xe7ef0 0x83d60 0xe7ef0 0x7b0c0 0xe7ef0>; + linux,phandle = <0xc8>; + phandle = <0xc8>; + + ipa_dvfs { + compatible = "arm,mali-simple-power-model"; + static-coefficient = <0x4268>; + dynamic-coefficient = <0x2ee>; + ts = <0x3e2da 0x2568 0xffffff98 0x4>; + thermal-zone = "gpu_thermal_zone"; + ss-coefficient = <0x24>; + ff-coefficient = <0x123>; + linux,phandle = <0x180>; + phandle = <0x180>; + }; + }; + + box_start_os0 { + compatible = "allwinner,box_start_os"; + start_type = <0x1>; + irkey_used = <0x0>; + pmukey_used = <0x0>; + pmukey_num = <0x0>; + led_power = <0x0>; + led_state = <0x0>; + }; + + __symbols__ { + clk_losc = "/clocks/losc"; + clk_iosc = "/clocks/iosc"; + clk_hosc = "/clocks/hosc"; + clk_osc48m = "/clocks/osc48m"; + clk_hoscdiv32k = "/clocks/hoscdiv32k"; + clk_pll_periph0div25m = "/clocks/pll_periph0div25m"; + clk_pll_cpu = "/clocks/pll_cpu"; + clk_pll_ddr0 = "/clocks/pll_ddr0"; + clk_pll_ddr1 = "/clocks/pll_ddr1"; + clk_pll_periph0 = "/clocks/pll_periph0"; + clk_pll_periph1 = "/clocks/pll_periph1"; + clk_pll_gpu = "/clocks/pll_gpu"; + clk_pll_video0x4 = "/clocks/pll_video0x4"; + clk_pll_video1 = "/clocks/pll_video1"; + clk_pll_video2 = "/clocks/pll_video2"; + clk_pll_ve = "/clocks/pll_ve"; + clk_pll_de = "/clocks/pll_de"; + clk_pll_csi = "/clocks/pll_csi"; + clk_pll_audiox4 = "/clocks/pll_audiox4"; + clk_pll_periph0x2 = "/clocks/pll_periph0x2"; + clk_pll_periph0x4 = "/clocks/pll_periph0x4"; + clk_periph32k = "/clocks/periph32k"; + clk_pll_periph1x2 = "/clocks/pll_periph1x2"; + clk_pll_audio = "/clocks/pll_audio"; + clk_pll_audiox2 = "/clocks/pll_audiox2"; + clk_pll_video0 = "/clocks/pll_video0"; + clk_pll_video1x4 = "/clocks/pll_video1x4"; + clk_pll_video2x4 = "/clocks/pll_video2x4"; + clk_hoscd2 = "/clocks/hoscd2"; + clk_osc48md4 = "/clocks/osc48md4"; + clk_pll_periph0d6 = "/clocks/pll_periph0d6"; + clk_cpu = "/clocks/cpu"; + clk_axi = "/clocks/axi"; + clk_cpuapb = "/clocks/cpuapb"; + clk_psi = "/clocks/psi"; + clk_ahb1 = "/clocks/ahb1"; + clk_ahb2 = "/clocks/ahb2"; + clk_ahb3 = "/clocks/ahb3"; + clk_apb1 = "/clocks/apb1"; + clk_apb2 = "/clocks/apb2"; + clk_mbus = "/clocks/mbus"; + clk_de = "/clocks/de"; + clk_g2d = "/clocks/g2d"; + clk_di = "/clocks/di"; + clk_gpu0 = "/clocks/gpu0"; + clk_gpu1 = "/clocks/gpu1"; + clk_ce = "/clocks/ce"; + clk_ve = "/clocks/ve"; + clk_dma = "/clocks/dma"; + clk_msgbox = "/clocks/msgbox"; + clk_hwspinlock_rst = "/clocks/hwspinlock_rst"; + clk_hwspinlock_bus = "/clocks/hwspinlock_bus"; + clk_hstimer = "/clocks/hstimer"; + clk_avs = "/clocks/avs"; + clk_dbgsys = "/clocks/dbgsys"; + clk_pwm = "/clocks/pwm"; + clk_iommu = "/clocks/iommu"; + clk_sdram = "/clocks/sdram"; + clk_nand0 = "/clocks/nand0"; + clk_nand1 = "/clocks/nand1"; + clk_sdmmc0_mod = "/clocks/sdmmc0_mod"; + clk_sdmmc0_bus = "/clocks/sdmmc0_bus"; + clk_sdmmc0_rst = "/clocks/sdmmc0_rst"; + clk_sdmmc1_mod = "/clocks/sdmmc1_mod"; + clk_sdmmc1_bus = "/clocks/sdmmc1_bus"; + clk_sdmmc1_rst = "/clocks/sdmmc1_rst"; + clk_sdmmc2_mod = "/clocks/sdmmc2_mod"; + clk_sdmmc2_bus = "/clocks/sdmmc2_bus"; + clk_sdmmc2_rst = "/clocks/sdmmc2_rst"; + clk_uart0 = "/clocks/uart0"; + clk_uart1 = "/clocks/uart1"; + clk_uart2 = "/clocks/uart2"; + clk_uart3 = "/clocks/uart3"; + clk_uart4 = "/clocks/uart4"; + clk_uart5 = "/clocks/uart5"; + clk_twi0 = "/clocks/twi0"; + clk_twi1 = "/clocks/twi1"; + clk_twi2 = "/clocks/twi2"; + clk_twi3 = "/clocks/twi3"; + clk_twi4 = "/clocks/twi4"; + clk_scr0 = "/clocks/scr0"; + clk_spi0 = "/clocks/spi0"; + clk_spi1 = "/clocks/spi1"; + clk_ephy_25m = "/clocks/ephy_25m"; + clk_gmac0 = "/clocks/gmac0"; + clk_gmac1 = "/clocks/gmac1"; + clk_gpadc = "/clocks/gpadc"; + clk_ts = "/clocks/ts"; + clk_ths = "/clocks/ths"; + clk_spdif = "/clocks/spdif"; + clk_dmic = "/clocks/dmic"; + clk_codec_1x = "/clocks/codec_1x"; + clk_codec_4x = "/clocks/codec_4x"; + clk_ahub = "/clocks/ahub"; + clk_usbphy0 = "/clocks/usbphy0"; + clk_usbphy1 = "/clocks/usbphy1"; + clk_usbphy2 = "/clocks/usbphy2"; + clk_usbphy3 = "/clocks/usbphy3"; + clk_usbohci0 = "/clocks/usbohci0"; + clk_usbohci0_12m = "/clocks/usbohci0_12m"; + clk_usbohci1 = "/clocks/usbohci1"; + clk_usbohci1_12m = "/clocks/usbohci1_12m"; + clk_usbohci2 = "/clocks/usbohci2"; + clk_usbohci2_12m = "/clocks/usbohci2_12m"; + clk_usbohci3 = "/clocks/usbohci3"; + clk_usbohci3_12m = "/clocks/usbohci3_12m"; + clk_usbehci0 = "/clocks/usbehci0"; + clk_usbehci1 = "/clocks/usbehci1"; + clk_usbehci2 = "/clocks/usbehci2"; + clk_usbehci3 = "/clocks/usbehci3"; + clk_usb3_0_host = "/clocks/usb3_0_host"; + clk_usbotg = "/clocks/usbotg"; + clk_lradc = "/clocks/lradc"; + clk_hdmi = "/clocks/hdmi"; + clk_hdmi_slow = "/clocks/hdmi_slow"; + clk_hdmi_cec = "/clocks/hdmi_cec"; + clk_display_top = "/clocks/display_top"; + clk_tcon_lcd = "/clocks/tcon_lcd"; + clk_tcon_lcd1 = "/clocks/tcon_lcd1"; + clk_tcon_tv = "/clocks/tcon_tv"; + clk_tcon_tv1 = "/clocks/tcon_tv1"; + clk_lvds = "/clocks/lvds"; + clk_tve = "/clocks/tve"; + clk_tve_top = "/clocks/tve_top"; + clk_csi_top = "/clocks/csi_top"; + clk_csi_master0 = "/clocks/csi_master0"; + clk_csi_master1 = "/clocks/csi_master1"; + clk_hdmi_hdcp = "/clocks/hdmi_hdcp"; + clk_pio = "/clocks/pio"; + clk_cpurcir = "/clocks/cpurcir"; + clk_hosc32k = "/clocks/hosc32k"; + clk_losc_out = "/clocks/losc_out"; + clk_cpurcpus_pll = "/clocks/cpurcpus_pll"; + clk_cpurcpus = "/clocks/cpurcpus"; + clk_cpurahbs = "/clocks/cpurahbs"; + clk_cpurapbs1 = "/clocks/cpurapbs1"; + clk_cpurapbs2_pll = "/clocks/cpurapbs2_pll"; + clk_cpurapbs2 = "/clocks/cpurapbs2"; + clk_cpurpio = "/clocks/cpurpio"; + clk_dcxo_out = "/clocks/dcxo_out"; + clk_stwi = "/clocks/stwi"; + soc = "/soc@03000000"; + r_pio = "/soc@03000000/pinctrl@07022000"; + s_rsb0_pins_a = "/soc@03000000/pinctrl@07022000/s_rsb0@0"; + s_twi0_pins_a = "/soc@03000000/pinctrl@07022000/s_twi0@0"; + s_twi0_pins_b = "/soc@03000000/pinctrl@07022000/s_twi0@1"; + pio = "/soc@03000000/pinctrl@0300b000"; + clk_losc_pins_a = "/soc@03000000/pinctrl@0300b000/clk_losc@0"; + s_cir0_pins_a = "/soc@03000000/pinctrl@0300b000/s_cir0@0"; + vdevice_pins_a = "/soc@03000000/pinctrl@0300b000/vdevice@0"; + uart0_pins_a = "/soc@03000000/pinctrl@0300b000/uart0@0"; + uart0_pins_b = "/soc@03000000/pinctrl@0300b000/uart0@1"; + uart1_pins_a = "/soc@03000000/pinctrl@0300b000/uart1@0"; + uart1_pins_b = "/soc@03000000/pinctrl@0300b000/uart1@1"; + uart2_pins_a = "/soc@03000000/pinctrl@0300b000/uart2@0"; + uart2_pins_b = "/soc@03000000/pinctrl@0300b000/uart2@1"; + uart3_pins_a = "/soc@03000000/pinctrl@0300b000/uart3@0"; + uart3_pins_b = "/soc@03000000/pinctrl@0300b000/uart3@1"; + uart4_pins_a = "/soc@03000000/pinctrl@0300b000/uart4@0"; + uart4_pins_b = "/soc@03000000/pinctrl@0300b000/uart4@1"; + uart5_pins_a = "/soc@03000000/pinctrl@0300b000/uart5@0"; + uart5_pins_b = "/soc@03000000/pinctrl@0300b000/uart5@1"; + twi0_pins_a = "/soc@03000000/pinctrl@0300b000/twi0@0"; + twi0_pins_b = "/soc@03000000/pinctrl@0300b000/twi0@1"; + twi1_pins_a = "/soc@03000000/pinctrl@0300b000/twi1@0"; + twi1_pins_b = "/soc@03000000/pinctrl@0300b000/twi1@1"; + twi2_pins_a = "/soc@03000000/pinctrl@0300b000/twi2@0"; + twi2_pins_b = "/soc@03000000/pinctrl@0300b000/twi2@1"; + twi3_pins_a = "/soc@03000000/pinctrl@0300b000/twi3@0"; + twi3_pins_b = "/soc@03000000/pinctrl@0300b000/twi3@1"; + twi4_pins_a = "/soc@03000000/pinctrl@0300b000/twi4@0"; + twi4_pins_b = "/soc@03000000/pinctrl@0300b000/twi4@1"; + ts0_pins_a = "/soc@03000000/pinctrl@0300b000/ts0@0"; + ts0_pins_b = "/soc@03000000/pinctrl@0300b000/ts0_sleep@0"; + spi0_pins_a = "/soc@03000000/pinctrl@0300b000/spi0@0"; + spi0_pins_b = "/soc@03000000/pinctrl@0300b000/spi0@1"; + spi0_pins_c = "/soc@03000000/pinctrl@0300b000/spi0@2"; + spi1_pins_a = "/soc@03000000/pinctrl@0300b000/spi1@0"; + spi1_pins_b = "/soc@03000000/pinctrl@0300b000/spi1@1"; + spi1_pins_c = "/soc@03000000/pinctrl@0300b000/spi1@2"; + sdc0_pins_a = "/soc@03000000/pinctrl@0300b000/sdc0@0"; + sdc0_pins_b = "/soc@03000000/pinctrl@0300b000/sdc0@1"; + sdc0_pins_c = "/soc@03000000/pinctrl@0300b000/sdc0@2"; + sdc1_pins_a = "/soc@03000000/pinctrl@0300b000/sdc1@0"; + sdc1_pins_b = "/soc@03000000/pinctrl@0300b000/sdc1@1"; + sdc2_pins_a = "/soc@03000000/pinctrl@0300b000/sdc2@0"; + sdc2_pins_b = "/soc@03000000/pinctrl@0300b000/sdc2@1"; + sdc2_pins_c = "/soc@03000000/pinctrl@0300b000/sdc2@2"; + spdif_pins_a = "/soc@03000000/pinctrl@0300b000/spdif@0"; + spdif_pins_b = "/soc@03000000/pinctrl@0300b000/spdif_sleep@0"; + dmic_pins_a = "/soc@03000000/pinctrl@0300b000/dmic@0"; + dmic_pins_b = "/soc@03000000/pinctrl@0300b000/dmic_sleep@0"; + ahub_daudio0_pins_a = "/soc@03000000/pinctrl@0300b000/ahub_daudio0@0"; + ahub_daudio0_pins_b = "/soc@03000000/pinctrl@0300b000/ahub_daudio0_sleep@0"; + ahub_daudio0_pins_c = "/soc@03000000/pinctrl@0300b000/h_ahub_daudio0@0"; + ahub_daudio0_pins_d = "/soc@03000000/pinctrl@0300b000/h_ahub_daudio0_sleep@0"; + ahub_daudio2_pins_a = "/soc@03000000/pinctrl@0300b000/ahub_daudio2@0"; + ahub_daudio2_pins_b = "/soc@03000000/pinctrl@0300b000/ahub_daudio2_sleep@0"; + ahub_daudio3_pins_a = "/soc@03000000/pinctrl@0300b000/ahub_daudio3@0"; + ahub_daudio3_pins_b = "/soc@03000000/pinctrl@0300b000/ahub_daudio3_sleep@0"; + csi1_pins_a = "/soc@03000000/pinctrl@0300b000/csi1@0"; + csi1_pins_b = "/soc@03000000/pinctrl@0300b000/csi1@1"; + csi_mclk0_pins_a = "/soc@03000000/pinctrl@0300b000/csi_mclk0@0"; + csi_mclk0_pins_b = "/soc@03000000/pinctrl@0300b000/csi_mclk0@1"; + csi_cci0_pins_a = "/soc@03000000/pinctrl@0300b000/csi_cci0@0"; + csi_cci0_pins_b = "/soc@03000000/pinctrl@0300b000/csi_cci0@1"; + csi_mclk1_pins_a = "/soc@03000000/pinctrl@0300b000/csi_mclk1@0"; + csi_mclk1_pins_b = "/soc@03000000/pinctrl@0300b000/csi_mclk1@1"; + csi_cci1_pins_a = "/soc@03000000/pinctrl@0300b000/csi_cci1@0"; + csi_cci1_pins_b = "/soc@03000000/pinctrl@0300b000/csi_cci1@1"; + scr0_pins_a = "/soc@03000000/pinctrl@0300b000/scr0@0"; + scr0_pins_b = "/soc@03000000/pinctrl@0300b000/scr0@1"; + scr0_pins_c = "/soc@03000000/pinctrl@0300b000/scr0@2"; + scr1_pins_a = "/soc@03000000/pinctrl@0300b000/scr1@0"; + scr1_pins_b = "/soc@03000000/pinctrl@0300b000/scr1@1"; + scr1_pins_c = "/soc@03000000/pinctrl@0300b000/scr1@2"; + nand0_pins_a = "/soc@03000000/pinctrl@0300b000/nand0@0"; + nand0_pins_b = "/soc@03000000/pinctrl@0300b000/nand0@1"; + nand0_pins_c = "/soc@03000000/pinctrl@0300b000/nand0@2"; + ccir_clk_pin_a = "/soc@03000000/pinctrl@0300b000/ac200@2"; + ccir_clk_pin_b = "/soc@03000000/pinctrl@0300b000/ac200@3"; + gmac_pins_a = "/soc@03000000/pinctrl@0300b000/gmac@0"; + gmac_pins_b = "/soc@03000000/pinctrl@0300b000/gmac@1"; + gmac1_pins_a = "/soc@03000000/pinctrl@0300b000/gmac1@0"; + gmac1_pins_b = "/soc@03000000/pinctrl@0300b000/gmac1@1"; + lvds0_pins_a = "/soc@03000000/pinctrl@0300b000/lvds0@0"; + lvds0_pins_b = "/soc@03000000/pinctrl@0300b000/lvds0@1"; + lvds1_pins_a = "/soc@03000000/pinctrl@0300b000/lvds1@0"; + lvds1_pins_b = "/soc@03000000/pinctrl@0300b000/lvds1@1"; + lvds2link_pins_a = "/soc@03000000/pinctrl@0300b000/lvds2link@0"; + lvds2link_pins_b = "/soc@03000000/pinctrl@0300b000/lvds2link@1"; + rgb24_pins_a = "/soc@03000000/pinctrl@0300b000/rgb24@0"; + rgb24_pins_b = "/soc@03000000/pinctrl@0300b000/rgb24@1"; + pwm5_pin_a = "/soc@03000000/pinctrl@0300b000/pwm5@0"; + pwm5_pin_b = "/soc@03000000/pinctrl@0300b000/pwm5@1"; + standby_red = "/soc@03000000/pinctrl@0300b000/standby@0"; + standby_blue = "/soc@03000000/pinctrl@0300b000/standby@1"; + standby_bt = "/soc@03000000/pinctrl@0300b000/standby@2"; + dma0 = "/soc@03000000/dma-controller@03002000"; + mbus0 = "/soc@03000000/mbus-controller@047fa000"; + msgbox = "/soc@03000000/msgbox@03003000"; + hwspinlock = "/soc@03000000/hwspinlock@3004000"; + s_cir0 = "/soc@03000000/s_cir@07040000"; + soc_timer0 = "/soc@03000000/timer@03009000"; + rtc = "/soc@03000000/rtc@07000000"; + wdt = "/soc@03000000/watchdog@030090a0"; + ve = "/soc@03000000/ve@01c0e000"; + vp9 = "/soc@03000000/vp9@01c00000"; + uart0 = "/soc@03000000/uart@05000000"; + uart1 = "/soc@03000000/uart@05000400"; + uart2 = "/soc@03000000/uart@05000800"; + uart3 = "/soc@03000000/uart@05000c00"; + uart4 = "/soc@03000000/uart@05001000"; + uart5 = "/soc@03000000/uart@05001400"; + twi0 = "/soc@03000000/twi@0x05002000"; + twi1 = "/soc@03000000/twi@0x05002400"; + twi2 = "/soc@03000000/twi@0x05002800"; + twi3 = "/soc@03000000/twi@0x05002c00"; + twi4 = "/soc@03000000/twi@0x05003000"; + twi5 = "/soc@03000000/twi@0x07081400"; + pmu0 = "/soc@03000000/twi@0x07081400/pmu"; + standby_param = "/soc@03000000/twi@0x07081400/pmu/standby_param"; + reg_dcdc1 = "/soc@03000000/twi@0x07081400/pmu/regulators/dcdc1"; + reg_dcdc2 = "/soc@03000000/twi@0x07081400/pmu/regulators/dcdc2"; + reg_dcdc3 = "/soc@03000000/twi@0x07081400/pmu/regulators/dcdc3"; + reg_aldo1 = "/soc@03000000/twi@0x07081400/pmu/regulators/ldo1"; + reg_dldo1 = "/soc@03000000/twi@0x07081400/pmu/regulators/ldo2"; + usbc0 = "/soc@03000000/usbc0@0"; + udc = "/soc@03000000/udc-controller@0x05100000"; + ehci0 = "/soc@03000000/ehci0-controller@0x05101000"; + ohci0 = "/soc@03000000/ohci0-controller@0x05101400"; + usbc1 = "/soc@03000000/usbc1@0"; + ehci1 = "/soc@03000000/ehci1-controller@0x05200000"; + ohci1 = "/soc@03000000/ohci1-controller@0x05200400"; + usbc2 = "/soc@03000000/usbc2@0"; + ehci2 = "/soc@03000000/ehci2-controller@0x05310000"; + ohci2 = "/soc@03000000/ohci2-controller@0x05310400"; + usbc3 = "/soc@03000000/usbc3@0"; + ehci3 = "/soc@03000000/ehci3-controller@0x05311000"; + ohci3 = "/soc@03000000/ohci3-controller@0x05311400"; + ac200_codec = "/soc@03000000/ac200_codec"; + spdif = "/soc@03000000/spdif-controller@0x05093000"; + dmic = "/soc@03000000/dmic-controller@0x05095000"; + codec = "/soc@03000000/codec@0x05096000"; + cpudai = "/soc@03000000/cpudai-controller@0x05096000"; + ahub_cpudai0 = "/soc@03000000/cpudai0-controller@0x05097000"; + ahub_cpudai1 = "/soc@03000000/cpudai1-controller@0x05097000"; + ahub_cpudai2 = "/soc@03000000/cpudai2-controller@0x05097000"; + ahub_cpudai3 = "/soc@03000000/cpudai3-controller@0x05097000"; + ahub_codec = "/soc@03000000/ahub_codec@0x05097000"; + ahub_daudio0 = "/soc@03000000/ahub_daudio0@0x05097000"; + ahub_daudio1 = "/soc@03000000/ahub_daudio1@0x05097000"; + ahub_daudio2 = "/soc@03000000/ahub_daudio2@0x05097000"; + ahub_daudio3 = "/soc@03000000/ahub_daudio3@0x05097000"; + snddaudio0 = "/soc@03000000/sound@0"; + sndhdmi = "/soc@03000000/sound@1"; + snddaudio2 = "/soc@03000000/sound@2"; + snddaudio3 = "/soc@03000000/sound@3"; + sndspdif = "/soc@03000000/sound@4"; + snddmic = "/soc@03000000/sound@5"; + sndcodec = "/soc@03000000/sound@6"; + sndahub = "/soc@03000000/sound@7"; + spi0 = "/soc@03000000/spi@05010000"; + spi1 = "/soc@03000000/spi@05011000"; + pcie = "/soc@03000000/pcie@0x05400000"; + sdc2 = "/soc@03000000/sdmmc@04022000"; + sdc0 = "/soc@03000000/sdmmc@04020000"; + sdc1 = "/soc@03000000/sdmmc@04021000"; + disp = "/soc@03000000/disp@01000000"; + tv0 = "/soc@03000000/tv0@01c94000"; + lcd0 = "/soc@03000000/lcd0@01c0c000"; + lcd1 = "/soc@03000000/lcd1@01c0c001"; + boot_disp = "/soc@03000000/boot_disp"; + hdmi = "/soc@03000000/hdmi@06000000"; + g2d = "/soc@03000000/g2d@01480000"; + soc_tr = "/soc@03000000/tr@01000000"; + pwm = "/soc@03000000/pwm@0300a000"; + pwm0 = "/soc@03000000/pwm0@0300a000"; + pwm1 = "/soc@03000000/pwm1@0300a000"; + pwm2 = "/soc@03000000/pwm2@0300a000"; + pwm3 = "/soc@03000000/pwm3@0300a000"; + pwm4 = "/soc@03000000/pwm4@0300a000"; + pwm5 = "/soc@03000000/pwm5@0300a000"; + ac200 = "/soc@03000000/ac200"; + vind0 = "/soc@03000000/vind@0"; + csi_cci0 = "/soc@03000000/vind@0/cci@0"; + csi_cci1 = "/soc@03000000/vind@0/cci@1"; + csi0 = "/soc@03000000/vind@0/csi@0"; + csi1 = "/soc@03000000/vind@0/csi@1"; + mipi0 = "/soc@03000000/vind@0/mipi@0"; + isp0 = "/soc@03000000/vind@0/isp@0"; + isp1 = "/soc@03000000/vind@0/isp@1"; + scaler0 = "/soc@03000000/vind@0/scaler@0"; + scaler1 = "/soc@03000000/vind@0/scaler@1"; + scaler2 = "/soc@03000000/vind@0/scaler@2"; + scaler3 = "/soc@03000000/vind@0/scaler@3"; + scaler4 = "/soc@03000000/vind@0/scaler@4"; + scaler5 = "/soc@03000000/vind@0/scaler@5"; + actuator0 = "/soc@03000000/vind@0/actuator@0"; + flash0 = "/soc@03000000/vind@0/flash@0"; + sensor0 = "/soc@03000000/vind@0/sensor@0"; + sensor1 = "/soc@03000000/vind@0/sensor@1"; + vinc0 = "/soc@03000000/vind@0/vinc@0"; + vinc1 = "/soc@03000000/vind@0/vinc@1"; + vinc2 = "/soc@03000000/vind@0/vinc@2"; + vinc3 = "/soc@03000000/vind@0/vinc@3"; + vinc4 = "/soc@03000000/vind@0/vinc@4"; + vinc5 = "/soc@03000000/vind@0/vinc@5"; + Vdevice = "/soc@03000000/vdevice@0"; + emce = "/soc@03000000/emce@01905000"; + cryptoengine = "/soc@03000000/ce@1904000"; + di = "/soc@03000000/deinterlace@0x01420000"; + scr0 = "/soc@03000000/smartcard@0x05005000"; + nand0 = "/soc@03000000/nand0@04011000"; + ts0 = "/soc@03000000/ts0@05060000"; + ths = "/soc@03000000/thermal_sensor"; + cpu_trips = "/soc@03000000/thermal-zones/cpu_thermal_zone/trips"; + cpu_threshold = "/soc@03000000/thermal-zones/cpu_thermal_zone/trips/trip-point@0"; + cpu_target = "/soc@03000000/thermal-zones/cpu_thermal_zone/trips/trip-point@1"; + cpu_crit = "/soc@03000000/thermal-zones/cpu_thermal_zone/trips/cpu_crit@0"; + gpadc = "/soc@03000000/gpadc"; + keyboard0 = "/soc@03000000/keyboard"; + gmac0 = "/soc@03000000/eth@05020000"; + gmac1 = "/soc@03000000/eth@05030000"; + wlan = "/soc@03000000/wlan"; + bt = "/soc@03000000/bt"; + btlpm = "/soc@03000000/btlpm"; + addr_mgt = "/soc@03000000/addr_mgt"; + aliases = "/aliases"; + cpu0 = "/cpus/cpu@0"; + CPU_SLEEP_0 = "/cpus/idle-states/cpu-sleep-0"; + cpu_opp_l_table = "/opp_l_table"; + dram = "/dram"; + gic = "/interrupt-controller@03020000"; + wakeupgen = "/interrupt-controller@0"; + nmi_intc = "/intc-nmi@07010320"; + sid = "/sunxi-sid@03006000"; + speedbin_efuse = "/sunxi-sid-ng@03006000/speed@00"; + ths_calib = "/sunxi-sid-ng@03006000/calib@14"; + chipid = "/sunxi-chipid@03006200"; + uboot = "/uboot"; + mmu_aw = "/iommu@030f0000"; + gpu = "/gpu@0x01800000"; + ipa_dvfs = "/gpu@0x01800000/ipa_dvfs"; + }; +}; diff --git a/external/packages/pack-uboot/sun50iw9/bin/dts/orangepizero2-u-boot.dts b/external/packages/pack-uboot/sun50iw9/bin/dts/orangepizero2-u-boot.dts old mode 100755 new mode 100644 diff --git a/external/packages/pack-uboot/sun50iw9/bin/sys_config/sys_config_orangepi400.fex b/external/packages/pack-uboot/sun50iw9/bin/sys_config/sys_config_orangepi400.fex new file mode 100755 index 0000000..8d18b63 --- /dev/null +++ b/external/packages/pack-uboot/sun50iw9/bin/sys_config/sys_config_orangepi400.fex @@ -0,0 +1,810 @@ +;sunxi platform application +;--------------------------------------------------------------------------------------------------------- +; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串 +; 描述gpio的形式:Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态> +;--------------------------------------------------------------------------------------------------------- + +[product] +version = "100" +machine = "evb" + +[platform] +eraseflag = 1 +debug_mode = 3 + +;---------------------------------------------------------------------------------- +;[target] system bootup configuration +;boot_clock = CPU boot frequency, Unit: MHz +;storage_type = boot medium, 0-nand, 1-card0, 2-card2, -1(defualt)auto scan +;advert_enable = 0-close advert logo 1-open advert logo (只有多核启动下有效) +;---------------------------------------------------------------------------------- +[target] +boot_clock = 1008 +storage_type = -1 +advert_enable = 0 +burn_key = 1 +dragonboard_test= 0 + +;---------------------------------------------------------------------------------- +; system configuration +; ? +;dcdc2_vol ---set dcdc2 voltage,mV,500-1200,10mV/step +; 1220-1540,20mV/step +;aldo1_vol ---set aldo1 voltage,mV,500-3500,100mV/step +;dldo1_vol ---set dldo1 voltage,mV,500-3500,100mV/step +;---------------------------------------------------------------------------------- +[power_sply] +dcdc2_vol = 1001000 +aldo1_vol = 1001800 +dldo1_vol = 1003300 +cldo2_vol = 1003300 + +[axp1530_power_sply] +dcdc2_vol = 1001000 +aldo1_vol = 1001800 +dldo1_vol = 1003300 +cldo2_vol = 1003300 + +[axp806_power_sply] +dcdce_vol = 1003300 +aldo1_vol = 1003300 +bldo1_vol = 1001800 +cldo2_vol = 1003300 + +[card_boot] +logical_start = 40960 +sprite_gpio0 = + +;---------------------------------------------------------------------------------- +; GPIO init on uboot +;---------------------------------------------------------------------------------- +[boot_init_gpio] +boot_init_gpio_used = 1 +gpio0 = port:PC12<1><0> +gpio1 = port:PC2<1><0> +gpio2 = port:PC7<1><1> + +;---------------------------------------------------------------------------------- +; ir_boot_recovery_used : 1: used this function 0: not used +; ir_work_mode : 模式选择 +; 0: 刷机, +; 1: 一键恢复(uboot阶段), +; 2: 安卓recovery, +; 3: 安卓恢复出厂设置. +; 如果不设置,默认为安卓recovery . +; ir_press_times : ir遥控器连续按几次才生效,如果不设置默认为按1次生效 +; ir_detect_time : ir遥控检测时间,单位:ms,如果不设置默认为3000ms +; ir_key_no_duplicate : ir遥控按键是否可重复,0:可重复(默认),1:不可重复; +; 不可重复表示一个按键无论被按下几次,都只算ir_press_times的一次; +; 不可重复的应用场景为组合按键功能,如:交替按下'菜单键'和'音量-键'进入安卓recovery. +; ir_recovery_key_code0 : ir check key code +; ir_addr_code0 : ir key addr +; you can increase ir support num, like: +; ir_recovery_key_code1, or 2, 3, but limit to 16 +;---------------------------------------------------------------------------------- + +[ir_boot_recovery] +ir_boot_recovery_used = 0 +ir_work_mode = 1 +ir_press_times = 2 +ir_detect_time = 1 +ir_key_no_duplicate = 0 +ir_recovery_key_code0 = 0x11 +ir_addr_code0 = 0xfe01 +ir_recovery_key_code1 = 0x19 +ir_addr_code1 = 0xfe01 +ir_recovery_key_code2 = 0x4c +ir_addr_code2 = 0xfe01 +ir_recovery_key_code3 = 0x00 +ir_addr_code3 = 0xfe01 + + +;---------------------------------------------------------------------------------- +; recovery_key_used : 模块使能端, 1:开启,0:关闭 +; press_mode_enable : 长短按模式使能,1:开启,0:关闭 +; a)如果开启了该模式,则key_work_mode失效,short_press_mode和long_press_mode生>效, + ; recovery按键可以通过长按和短按来触发两种不同的模式; +; b)如果关闭了该模式,则key_work_mode生效,recovery按键只能触发一种模式. +; key_work_mode : 模式选择 +; 0: 刷机, +; 1: 一键恢复(uboot阶段), +; 2: 安卓recovery, +; 3: 安卓恢复出厂设置. +; 如果不设置,模式为安卓recovery. +; short_press_mode : 长按触发的模式,选项同上. +; long_press_mode : 短按触发的模式,选项同上. +; key_press_time : 定义长按的时间,单位:毫秒. +; recovery_key : 按键配置. +;---------------------------------------------------------------------------------- +[key_boot_recovery] +recovery_key_used = 0 +press_mode_enable = 0 +key_work_mode = 0 +short_press_mode = 0 +long_press_mode = 1 +key_press_time = 2000 +recovery_key = + + +;--------------------------------------------------------------------------------------------------------- +; if 1 == standby_mode, then support super standby; +; else, support normal standby. +;--------------------------------------------------------------------------------------------------------- +[pm_para] +standby_mode = 1 + +[card0_boot_para] +card_ctrl = 0 +card_high_speed = 1 +card_line = 4 +sdc_d1 = port:PF0<2><1><3> +sdc_d0 = port:PF1<2><1><3> +sdc_clk = port:PF2<2><1><3> +sdc_cmd = port:PF3<2><1><3> +sdc_d3 = port:PF4<2><1><3> +sdc_d2 = port:PF5<2><1><3> +;sdc_type = "tm1" + +[card2_boot_para] +card_ctrl = 2 +card_high_speed = 1 +card_line = 8 +sdc_clk = port:PC5<3><1><3> +sdc_cmd = port:PC6<3><1><3> +sdc_d0 = port:PC10<3><1><3> +sdc_d1 = port:PC13<3><1><3> +sdc_d2 = port:PC15<3><1><3> +sdc_d3 = port:PC8<3><1><3> +sdc_d4 = port:PC9<3><1><3> +sdc_d5 = port:PC11<3><1><3> +sdc_d6 = port:PC14<3><1><3> +sdc_d7 = port:PC16<3><1><3> +sdc_emmc_rst = port:PC1<3><1><3> +sdc_ds = port:PC0<3><2><3> +sdc_ex_dly_used = 2 +sdc_io_1v8 = 1 +;sdc_dis_host_caps = 0x100 +;sdc_type = "tm4" + +[gpio_bias] +pc_bias = 1800 + +[twi_para] +twi_port = 0 +twi_scl = port:PH14<2> +twi_sda = port:PH15<2> + +[auto_print] +auto_print_used = 1 + +[uart_para] +uart_debug_port = 0 +uart_debug_tx = port:PH00<2><1> +uart_debug_rx = port:PH01<2><1> + +[jtag_para] +jtag_enable = 0 +jtag_ms = port:PH9<3> +jtag_ck = port:PH10<3> +jtag_do = port:PH11<3> +jtag_di = port:PH12<3> + +[clock] +pll4 = 300 +pll6 = 600 +pll8 = 360 +pll9 = 297 +pll10 = 264 + + +;***************************************************************************** +; +;dram select configuration +; +;select_mode : dram模式选择, 0:不进行自动识别 +; 1:gpio识别模式(dram_para, dram_para1-15, 共16组有效) +; 2:gpadc识别模式(dram_para, dram_para1-7, 共8组有效) +; 3:1个IO+gpadc识别模式(dram_para, dram_para1-15, 共16组有效)。其中IO配置优先级按select_gpio0>select_gpio1>select_gpio2>select_gpio3 +;gpadc_channel : 选择gpadc通道 有效值(0-3) +;select_gpio1-4 : 选择gpio pin +;***************************************************************************** +[dram_select_para] +select_mode = 1 +select_gpio0 = port:PI14<0><1> +select_gpio1 = port:PI15<0><1> +select_gpio2 = port:PI16<0><1> +select_gpio3 = + + +;***************************************************************************** +;sdram configuration +; +; dram_para: 无CK跨接电容参数(保留) +; dram_para1: 有CK跨接电容参数(保留) +; dram_para2~6: 暂时预留 +; dram_para7: 无CK跨接电容参数(保留) +; dram_para8~15: 暂时预留 +;***************************************************************************** +[dram_para] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c12 +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0000C05 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0007 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7557 +dram_tpr13 = 0x40 + +[dram_para1] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para2] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para3] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para4] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para5] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para6] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para7] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c12 +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0000C05 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0007 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7557 +dram_tpr13 = 0x40 + +[dram_para8] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para9] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para10] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para11] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para12] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para13] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para14] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + +[dram_para15] +dram_clk = 648 +dram_type = 3 +dram_dx_odt = 0x03030303 +dram_dx_dri = 0x0e0e0e0e +dram_ca_dri = 0x1c1c +dram_odt_en = 1 +dram_para1 = 0x30fb +dram_para2 = 0x0000 +dram_mr0 = 0x840 +dram_mr1 = 0x4 +dram_mr2 = 0x8 +dram_mr3 = 0x0 +dram_mr4 = 0x0 +dram_mr5 = 0x0 +dram_mr6 = 0x0 +dram_mr11 = 0x0 +dram_mr12 = 0x0 +dram_mr13 = 0x0 +dram_mr14 = 0x0 +dram_mr16 = 0x0 +dram_mr17 = 0x0 +dram_mr22 = 0x0 +dram_tpr0 = 0xC0001305 +dram_tpr1 = 0x0 +dram_tpr2 = 0x0 +dram_tpr3 = 0x0 +dram_tpr6 = 0x33808080 +dram_tpr10 = 0x002F0006 +dram_tpr11 = 0xffffdddd +dram_tpr12 = 0xfedf7657 +dram_tpr13 = 0x40 + + +;---------------------------------------------------------------------------------- +;os life cycle para configuration +;---------------------------------------------------------------------------------- + +;---------------------------------------------------------------------------------- +;uart configuration +;uart_type --- 2 (2 wire), 4 (4 wire), 8 (8 wire, full function) +;---------------------------------------------------------------------------------- +[uart0] +uart0_used = 1 +uart0_port = 0 +uart0_type = 2 +uart0_tx = port:PH00<2><1> +uart0_rx = port:PH01<2><1> + +[nand0_para] +nand0_support_2ch = 0 + +nand0_used = 0 +nand0_we = port:PC00<2><0><1> +nand0_ale = port:PC01<2><0><1> +nand0_cle = port:PC02<2><0><1> +nand0_ce0 = port:PC03<2><1><1> +nand0_nre = port:PC04<2><0><1> +nand0_rb0 = port:PC05<2><1><1> +nand0_d0 = port:PC06<2><0><1> +nand0_d1 = port:PC07<2><0><1> +nand0_d2 = port:PC08<2><0><1> +nand0_d3 = port:PC09<2><0><1> +nand0_d4 = port:PC10<2><0><1> +nand0_d5 = port:PC11<2><0><1> +nand0_d6 = port:PC12<2><0><1> +nand0_d7 = port:PC13<2><0><1> +nand0_ndqs = port:PC14<2><0><1> +nand0_ce1 = port:PC15<2><1><1> +nand0_rb1 = port:PC16<2><1><1> + +nand0_regulator1 = "vcc-nand" +nand0_regulator2 = "none" +nand0_cache_level = 0x55aaaa55 +nand0_flush_cache_num = 0x55aaaa55 +nand0_capacity_level = 0x55aaaa55 +nand0_id_number_ctl = 0x55aaaa55 +nand0_print_level = 0x55aaaa55 +nand0_p0 = 0x55aaaa55 +nand0_p1 = 0x55aaaa55 +nand0_p2 = 0x55aaaa55 +nand0_p3 = 0x55aaaa55 + + +[secure] +dram_region_mbytes = 80 +drm_region_mbytes = 0 +drm_region_start_mbytes = 0 diff --git a/scripts/build-all-ng.sh b/scripts/build-all-ng.sh index 9fdb002..afdb9d1 100755 --- a/scripts/build-all-ng.sh +++ b/scripts/build-all-ng.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) Authors: http://www.armbian.com/authors +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,9 +8,11 @@ # Functions: +# unset_all # pack_upload # build_main # array_contains +# check_hash # build_all diff --git a/scripts/chroot-buildpackages.sh b/scripts/chroot-buildpackages.sh index 953cc71..db2af5d 100755 --- a/scripts/chroot-buildpackages.sh +++ b/scripts/chroot-buildpackages.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,12 +8,16 @@ # Functions: + # create_chroot # chroot_prepare_distccd # chroot_build_packages # chroot_installpackages_local # chroot_installpackages + + + # create_chroot # create_chroot() @@ -27,34 +31,60 @@ create_chroot() apt_mirror['stretch']="$DEBIAN_MIRROR" apt_mirror['buster']="$DEBIAN_MIRROR" apt_mirror['bullseye']="$DEBIAN_MIRROR" + apt_mirror['bookworm']="$DEBIAN_MIRROR" apt_mirror['xenial']="$UBUNTU_MIRROR" apt_mirror['bionic']="$UBUNTU_MIRROR" apt_mirror['focal']="$UBUNTU_MIRROR" - apt_mirror['eoan']="$UBUNTU_MIRROR" + apt_mirror['hirsute']="$UBUNTU_MIRROR" + apt_mirror['impish']="$UBUNTU_MIRROR" components['stretch']='main,contrib' + apt_mirror['jammy']="$UBUNTU_MIRROR" components['buster']='main,contrib' components['bullseye']='main,contrib' + components['bookworm']='main,contrib' + components['sid']='main,contrib' components['xenial']='main,universe,multiverse' components['bionic']='main,universe,multiverse' components['focal']='main,universe,multiverse' - components['eoan']='main,universe,multiverse' + components['hirsute']='main,universe,multiverse' + components['impish']='main,universe,multiverse' + components['jammy']='main,universe,multiverse' display_alert "Creating build chroot" "$release/$arch" "info" - local includes="ccache,locales,git,ca-certificates,devscripts,libfile-fcntllock-perl,debhelper,rsync,python3,distcc" + local includes="ccache,locales,git,ca-certificates,devscripts,libfile-fcntllock-perl,debhelper,rsync,python3,distcc,apt-utils" + # perhaps a temporally workaround - [[ $release == buster || $release == bullseye || $release == focal || $release == eoan ]] && includes=${includes}",perl-openssl-defaults,libnet-ssleay-perl" + case $release in + buster|bullseye|focal|hirsute|sid|bookworm) + includes=${includes}",perl-openssl-defaults,libnet-ssleay-perl" + ;; + esac + if [[ $NO_APT_CACHER != yes ]]; then local mirror_addr="http://localhost:3142/${apt_mirror[${release}]}" else local mirror_addr="http://${apt_mirror[${release}]}" fi - debootstrap --variant=buildd --components="${components[${release}]}" --arch="${arch}" --foreign --include="${includes}" "${release}" "${target_dir}" "${mirror_addr}" - [[ $? -ne 0 || ! -f "${target_dir}"/debootstrap/debootstrap ]] && exit_with_error "Create chroot first stage failed" + + mkdir -p "${target_dir}" + cd "${target_dir}" + + debootstrap --variant=buildd \ + --components="${components[${release}]}" \ + --arch="${arch}" $DEBOOTSTRAP_OPTION \ + --foreign \ + --include="${includes}" "${release}" "${target_dir}" "${mirror_addr}" + + [[ $? -ne 0 || ! -f "${target_dir}"/debootstrap/debootstrap ]] && \ + exit_with_error "Create chroot first stage failed" + cp /usr/bin/${qemu_binary[$arch]} "${target_dir}"/usr/bin/ [[ ! -f "${target_dir}"/usr/share/keyrings/debian-archive-keyring.gpg ]] && \ mkdir -p "${target_dir}"/usr/share/keyrings/ && \ cp /usr/share/keyrings/debian-archive-keyring.gpg "${target_dir}"/usr/share/keyrings/ + chroot "${target_dir}" /bin/bash -c "/debootstrap/debootstrap --second-stage" [[ $? -ne 0 || ! -f "${target_dir}"/bin/bash ]] && exit_with_error "Create chroot second stage failed" + create_sources_list "$release" "${target_dir}" [[ $NO_APT_CACHER != yes ]] && \ echo 'Acquire::http { Proxy "http://localhost:3142"; };' > "${target_dir}"/etc/apt/apt.conf.d/02proxy @@ -62,8 +92,10 @@ create_chroot() APT::Install-Recommends "0"; APT::Install-Suggests "0"; EOF - [[ -f "${target_dir}"/etc/locale.gen ]] && sed -i "s/^# en_US.UTF-8/en_US.UTF-8/" "${target_dir}"/etc/locale.gen + [[ -f "${target_dir}"/etc/locale.gen ]] && \ + sed -i "s/^# en_US.UTF-8/en_US.UTF-8/" "${target_dir}"/etc/locale.gen chroot "${target_dir}" /bin/bash -c "locale-gen; update-locale LANG=en_US:en LC_ALL=en_US.UTF-8" + printf '#!/bin/sh\nexit 101' > "${target_dir}"/usr/sbin/policy-rc.d chmod 755 "${target_dir}"/usr/sbin/policy-rc.d rm "${target_dir}"/etc/resolv.conf 2>/dev/null @@ -76,7 +108,17 @@ create_chroot() mkdir -p "${target_dir}"/var/lock fi chroot "${target_dir}" /bin/bash -c "/usr/sbin/update-ccache-symlinks" - [[ $release == focal ]] && chroot "${target_dir}" /bin/bash -c "ln -s /usr/bin/python3 /usr/bin/python" + + display_alert "Upgrading packages in" "${target_dir}" "info" + chroot "${target_dir}" /bin/bash -c "apt-get -q update; apt-get -q -y upgrade; apt-get clean" + date +%s >"$target_dir/root/.update-timestamp" + + case $release in + bullseye|focal|hirsute|sid|bookworm) + chroot "${target_dir}" /bin/bash -c "apt-get install python-is-python3" + ;; + esac + touch "${target_dir}"/root/.debootstrap-complete display_alert "Debootstrap complete" "${release}/${arch}" "info" } ############################################################################# @@ -93,16 +135,19 @@ chroot_prepare_distccd() gcc_version['stretch']='6.3' gcc_version['buster']='8.3' gcc_version['bullseye']='9.2' + gcc_version['bookworm']='10.2' gcc_version['xenial']='5.4' gcc_version['bionic']='5.4' gcc_version['focal']='9.2' - gcc_version['eoan']='9.2' + gcc_version['jammy']='10.2' + gcc_version['hirsute']='10.2' + gcc_version['sid']='10.2' gcc_type['armhf']='arm-linux-gnueabihf-' gcc_type['arm64']='aarch64-linux-gnu-' rm -f "${dest}"/cmdlist mkdir -p "${dest}" - #local toolchain_path=$(find_toolchain "${gcc_type[$arch]}" "== ${gcc_version[$release]}") local toolchain_path + #local toolchain_path=$(find_toolchain "${gcc_type[${arch}]}" "== ${gcc_version[${release}]}") toolchain_path=${toolchain} ln -sf "${toolchain_path}/${gcc_type[${arch}]}gcc" "${dest}"/cc echo "${dest}/cc" >> "${dest}"/cmdlist @@ -131,7 +176,7 @@ chroot_build_packages() target_arch="${ARCH}" else # only make packages for recent releases. There are no changes on older - target_release="stretch bionic buster bullseye eoan focal" + target_release="stretch bionic buster bullseye bookworm focal hirsute jammy sid" target_arch="armhf arm64" fi @@ -140,7 +185,7 @@ chroot_build_packages() display_alert "Starting package building process" "$release/$arch" "info" local target_dir - target_dir="${DEST}/buildpkg/${release}-${arch}-v${CHROOT_CACHE_VERSION}" + target_dir="${EXTER}/cache/buildpkg/${release}-${arch}-v${CHROOT_CACHE_VERSION}" local distcc_bindaddr="127.0.0.2" [[ ! -f "${target_dir}"/root/.debootstrap-complete ]] && create_chroot "${target_dir}" "${release}" "${arch}" @@ -169,7 +214,7 @@ chroot_build_packages() # check build condition if [[ $(type -t package_checkbuild) == function ]] && ! package_checkbuild; then - display_alert "Skipping building $package_name for" "$release/$arch" >/dev/null 2>&1 + display_alert "Skipping building $package_name for" "$release/$arch" continue fi @@ -189,7 +234,7 @@ chroot_build_packages() needs_building=yes fi if [[ $needs_building == no ]]; then - display_alert "Packages are up to date" "$package_name $release/$arch" "info" >/dev/null 2>&1 + display_alert "Packages are up to date" "$package_name $release/$arch" "info" continue fi display_alert "Building packages" "$package_name $release/$arch" "ext" @@ -197,72 +242,18 @@ chroot_build_packages() [[ -v $dist_builddeps_name ]] && package_builddeps="${package_builddeps} ${!dist_builddeps_name}" # create build script - cat <<-EOF > "${target_dir}"/root/build.sh - #!/bin/bash - export PATH="/usr/lib/ccache:\$PATH" - export HOME="/root" - export DEBIAN_FRONTEND="noninteractive" - export DEB_BUILD_OPTIONS="nocheck noautodbgsym" - export CCACHE_TEMPDIR="/tmp" - # distcc is disabled to prevent compilation issues due to different host and cross toolchain configurations - #export CCACHE_PREFIX="distcc" - # uncomment for debug - #export CCACHE_RECACHE="true" - #export CCACHE_DISABLE="true" - export DISTCC_HOSTS="$distcc_bindaddr" - export DEBFULLNAME="$MAINTAINER" - export DEBEMAIL="$MAINTAINERMAIL" - $(declare -f display_alert) - cd /root/build - if [[ -n "${package_builddeps}" ]]; then - # can be replaced with mk-build-deps - deps=() - installed=\$(dpkg-query -W -f '\${db:Status-Abbrev}|\${binary:Package}\n' '*' 2>/dev/null | grep '^ii' | awk -F '|' '{print \$2}' | cut -d ':' -f 1) - for packet in $package_builddeps; do grep -q -x -e "\$packet" <<< "\$installed" || deps+=("\$packet"); done - if [[ \${#deps[@]} -gt 0 ]]; then - display_alert "Installing build dependencies" - apt-get -y -q update - apt-get -y -q --no-install-recommends --show-progress -o DPKG::Progress-Fancy=1 install "\${deps[@]}" - fi - fi - display_alert "Copying sources" - rsync -aq /root/sources/"${package_name}" /root/build/ - cd /root/build/"${package_name}" - # copy overlay / "debianization" files - [[ -d "/root/overlay/${package_name}/" ]] && rsync -aq /root/overlay/"${package_name}" /root/build/ - # set upstream version - [[ -n "${package_upstream_version}" ]] && debchange --preserve --newversion "${package_upstream_version}" "Import from upstream" - # set local version - # debchange -l~orangepi${REVISION}-${builddate}+ "New Orange Pi release" - debchange -l~orangepi${REVISION}+ "New Orange Pi release" - display_alert "Building package" - dpkg-buildpackage -b -uc -us -j2 - if [[ \$? -eq 0 ]]; then - cd /root/build - # install in chroot if other libraries depend on them - if [[ -n "$package_install_chroot" ]]; then - display_alert "Installing packages" - for p in $package_install_chroot; do - dpkg -i \${p}_*.deb - done - fi - display_alert "Done building" "$package_name $release/$arch" "ext" - ls *.deb 2>/dev/null - mv *.deb /root 2>/dev/null - exit 0 - else - display_alert "Failed building" "$package_name $release/$arch" "err" - exit 2 - fi - EOF - - chmod +x "${target_dir}"/root/build.sh + create_build_script fetch_from_repo "$package_repo" "${EXTER}/cache/sources/extra/$package_name" "$package_ref" - eval systemd-nspawn -a -q --capability=CAP_MKNOD -D $target_dir --tmpfs=/root/build --tmpfs=/tmp:mode=777 --bind-ro $EXTER/packages/extras-buildpkgs/:/root/overlay \ - --bind-ro $EXTER/cache/sources/extra/:/root/sources /bin/bash -c "/root/build.sh" 2>&1 \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/buildpkg.log'} + eval systemd-nspawn -a -q \ + --capability=CAP_MKNOD -D "${target_dir}" \ + --tmpfs=/root/build \ + --tmpfs=/tmp:mode=777 \ + --bind-ro "${EXTER}"/packages/extras-buildpkgs/:/root/overlay \ + --bind-ro "${EXTER}"/cache/sources/extra/:/root/sources /bin/bash -c "/root/build.sh" 2>&1 \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/buildpkg.log'} + if [[ ${PIPESTATUS[0]} -eq 2 ]]; then failed+=("$package_name:$release/$arch") else @@ -288,6 +279,92 @@ chroot_build_packages() fi } ############################################################################# +# create build script +create_build_script () +{ + cat <<-EOF > "${target_dir}"/root/build.sh + #!/bin/bash + export PATH="/usr/lib/ccache:\$PATH" + export HOME="/root" + export DEBIAN_FRONTEND="noninteractive" + export DEB_BUILD_OPTIONS="nocheck noautodbgsym" + export CCACHE_TEMPDIR="/tmp" + # distcc is disabled to prevent compilation issues due + # to different host and cross toolchain configurations + #export CCACHE_PREFIX="distcc" + # uncomment for debug + #export CCACHE_RECACHE="true" + #export CCACHE_DISABLE="true" + export DISTCC_HOSTS="$distcc_bindaddr" + export DEBFULLNAME="$MAINTAINER" + export DEBEMAIL="$MAINTAINERMAIL" + $(declare -f display_alert) + + cd /root/build + if [[ -n "${package_builddeps}" ]]; then + # can be replaced with mk-build-deps + deps=() + installed=\$( + dpkg-query -W -f '\${db:Status-Abbrev}|\${binary:Package}\n' '*' 2>/dev/null | \ + grep '^ii' | \ + awk -F '|' '{print \$2}' | \ + cut -d ':' -f 1 + ) + + for packet in $package_builddeps + do + grep -q -x -e "\$packet" <<< "\$installed" || deps+=("\$packet") + done + + if [[ \${#deps[@]} -gt 0 ]]; then + display_alert "Installing build dependencies" + apt-get -y -q update + apt-get -y -q \ + --no-install-recommends \ + --show-progress \ + -o DPKG::Progress-Fancy=1 install "\${deps[@]}" + fi + fi + + display_alert "Copying sources" + rsync -aq /root/sources/"${package_name}" /root/build/ + + cd /root/build/"${package_name}" + # copy overlay / "debianization" files + [[ -d "/root/overlay/${package_name}/" ]] && rsync -aq /root/overlay/"${package_name}" /root/build/ + + # set upstream version + [[ -n "${package_upstream_version}" ]] && debchange --preserve --newversion "${package_upstream_version}" "Import from upstream" + + # set local version + # debchange -l~orangepi${REVISION}-${builddate}+ "Custom $VENDOR release" + debchange -l~orangepi"${REVISION}"+ "Custom $VENDOR release" + + display_alert "Building package" + dpkg-buildpackage -b -us -j2 + + if [[ \$? -eq 0 ]]; then + cd /root/build + # install in chroot if other libraries depend on them + if [[ -n "$package_install_chroot" ]]; then + display_alert "Installing packages" + for p in $package_install_chroot; do + dpkg -i \${p}_*.deb + done + fi + display_alert "Done building" "$package_name $release/$arch" "ext" + ls *.deb 2>/dev/null + mv *.deb /root 2>/dev/null + exit 0 + else + display_alert "Failed building" "$package_name $release/$arch" "err" + exit 2 + fi + EOF + + chmod +x "${target_dir}"/root/build.sh +} + # chroot_installpackages_local # chroot_installpackages_local() @@ -295,42 +372,34 @@ chroot_installpackages_local() local conf=$EXTER/config/aptly-temp.conf rm -rf /tmp/aptly-temp/ mkdir -p /tmp/aptly-temp/ - - echo -e "\n\t== Starting chroot_installpackages_local process ==\n" >>$DEST/debug/install.log - - aptly -config=$conf repo create temp >> "${DEST}"/debug/install.log 2>&1 + aptly -config="${conf}" repo create temp >> "${DEST}"/${LOG_SUBPATH}/install.log # NOTE: this works recursively if [[ $EXTERNAL_NEW == prebuilt ]]; then - aptly -config=$conf repo add temp ${DEB_ORANGEPI}/extra/${RELEASE}-desktop/ >> "${DEST}"/debug/install.log 2>&1 - aptly -config=$conf repo add temp ${DEB_ORANGEPI}/extra/${RELEASE}-utils/ >> "${DEST}"/debug/install.log 2>&1 + aptly -config="${conf}" repo add temp "${DEB_ORANGEPI}/extra/${RELEASE}-desktop/" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + aptly -config="${conf}" repo add temp "${DEB_ORANGEPI}/extra/${RELEASE}-utils/" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 else - aptly -config=$conf repo add temp ${DEB_STORAGE}/extra/${RELEASE}-desktop/ >> "${DEST}"/debug/install.log 2>&1 - aptly -config=$conf repo add temp ${DEB_STORAGE}/extra/${RELEASE}-utils/ >> "${DEST}"/debug/install.log 2>&1 + aptly -config="${conf}" repo add temp "${DEB_STORAGE}/extra/${RELEASE}-desktop/" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + aptly -config="${conf}" repo add temp "${DEB_STORAGE}/extra/${RELEASE}-utils/" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 fi # -gpg-key="925644A6" - aptly -keyring="$EXTER/packages/extras-buildpkgs/buildpkg-public.gpg" -secret-keyring="$EXTER/packages/extras-buildpkgs/buildpkg.gpg" -batch=true -config=$conf \ - -gpg-key="925644A6" -passphrase="testkey1234" -component=temp -distribution=$RELEASE publish repo temp >> "${DEST}"/debug/install.log 2>&1 - aptly -config=$conf -listen=":8189" serve >> "${DEST}"/debug/install.log 2>&1 & - + [[ ! -d /root/.gnupg ]] && mkdir -p /root/.gnupg + aptly -keyring="$EXTER/packages/extras-buildpkgs/buildpkg-public.gpg" -secret-keyring="$EXTER/packages/extras-buildpkgs/buildpkg.gpg" -batch=true -config="${conf}" \ + -gpg-key="925644A6" -passphrase="testkey1234" -component=temp -distribution="${RELEASE}" publish repo temp >> "${DEST}"/${LOG_SUBPATH}/install.log + #aptly -config="${conf}" -listen=":8189" serve & + aptly -config="${conf}" -listen=":8189" serve >> "${DEST}"/debug/install.log 2>&1 & local aptly_pid=$! - cp $EXTER/packages/extras-buildpkgs/buildpkg.key $SDCARD/tmp/buildpkg.key - - cat <<-'EOF' > $SDCARD/etc/apt/preferences.d/90-orangepi-temp.pref + cp $EXTER/packages/extras-buildpkgs/buildpkg.key "${SDCARD}"/tmp/buildpkg.key + cat <<-'EOF' > "${SDCARD}"/etc/apt/preferences.d/90-orangepi-temp.pref Package: * Pin: origin "localhost" Pin-Priority: 550 EOF - cat <<-EOF > "${SDCARD}"/etc/apt/sources.list.d/orangepi-temp.list deb http://localhost:8189/ $RELEASE temp EOF - chroot_installpackages - - echo -e "\n\t== Finished chroot_installpackages_local process ==\n" >>$DEST/debug/install.log - - kill "${aptly_pid}" + kill "${aptly_pid}" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 } ############################################################################# # chroot_installpackages @@ -338,37 +407,32 @@ chroot_installpackages_local() chroot_installpackages() { local install_list="" - for plugin in "${EXTER}"/packages/extras-buildpkgs/*.conf; do - - source "$plugin" - + source "${plugin}" if [[ $(type -t package_checkinstall) == function ]] && package_checkinstall; then install_list="$install_list $package_install_target" fi - unset package_install_target package_checkinstall - done + if [[ -n $PACKAGE_LIST_RM ]]; then + install_list=$(sed -r "s/\W($(tr ' ' '|' <<< ${PACKAGE_LIST_RM}))\W/ /g" <<< " ${install_list} ") + install_list="$(echo ${install_list})" + fi + display_alert "Installing extras-buildpkgs" "$install_list" [[ $NO_APT_CACHER != yes ]] && local apt_extra="-o Acquire::http::Proxy=\"http://${APT_PROXY_ADDR:-localhost:3142}\" -o Acquire::http::Proxy::localhost=\"DIRECT\"" - - display_alert "Installing additional packages" "${install_list}" - cat <<-EOF > "${SDCARD}"/tmp/install.sh #!/bin/bash apt-key add /tmp/buildpkg.key apt-get $apt_extra -q update - apt-get -q $apt_extra --show-progress -o DPKG::Progress-Fancy=1 install -y $install_list + apt-get -q ${apt_extra} --show-progress -o DPKG::Progress-Fancy=1 install -y ${install_list} apt-get clean apt-key del "925644A6" - rm /etc/apt/sources.list.d/orangepi-temp.list - rm /etc/apt/preferences.d/90-orangepi-temp.pref - rm /tmp/buildpkg.key + rm /etc/apt/sources.list.d/orangepi-temp.list 2>/dev/null + rm /etc/apt/preferences.d/90-orangepi-temp.pref 2>/dev/null + rm /tmp/buildpkg.key 2>/dev/null rm -- "\$0" EOF - chmod +x "${SDCARD}"/tmp/install.sh - - chroot "${SDCARD}" /bin/bash -c "/tmp/install.sh" >> "${DEST}"/debug/install.log 2>&1 + chroot "${SDCARD}" /bin/bash -c "/tmp/install.sh" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 } ############################################################################# diff --git a/scripts/compilation.sh b/scripts/compilation.sh index 155d530..dbd348d 100755 --- a/scripts/compilation.sh +++ b/scripts/compilation.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,6 +8,7 @@ # Functions: + # compile_atf # compile_uboot # compile_kernel @@ -22,6 +23,9 @@ # userpatch_create # overlayfs_wrapper + + + compile_atf() { if [[ $CLEAN_LEVEL == *make* ]]; then @@ -39,6 +43,9 @@ compile_atf() display_alert "Compiling ATF" "" "info" +# build aarch64 + if [[ $(dpkg --print-architecture) == amd64 ]]; then + local toolchain toolchain=$(find_toolchain "$ATF_COMPILER" "$ATF_USE_GCC") [[ -z $toolchain ]] && exit_with_error "Could not find required toolchain" "${ATF_COMPILER}gcc $ATF_USE_GCC" @@ -51,6 +58,9 @@ compile_atf() [[ -z $toolchain2 ]] && exit_with_error "Could not find required toolchain" "${toolchain2_type}gcc $toolchain2_ver" fi +# build aarch64 + fi + display_alert "Compiler version" "${ATF_COMPILER}gcc $(eval env PATH="${toolchain}:${PATH}" "${ATF_COMPILER}gcc" -dumpversion)" "info" local target_make target_patchdir target_files @@ -63,13 +73,13 @@ compile_atf() # create patch for manual source changes [[ $CREATE_PATCHES == yes ]] && userpatch_create "atf" - echo -e "\n\t== atf ==\n" >> "${DEST}"/debug/compilation.log + echo -e "\n\t== atf ==\n" >> "${DEST}"/${LOG_SUBPATH}/compilation.log # ENABLE_BACKTRACE="0" has been added to workaround a regression in ATF. # Check: https://github.com/armbian/build/issues/1157 eval CCACHE_BASEDIR="$(pwd)" env PATH="${toolchain}:${toolchain2}:${PATH}" \ 'make ENABLE_BACKTRACE="0" $target_make $CTHREADS \ - CROSS_COMPILE="$CCACHE $ATF_COMPILER"' 2>> "${DEST}"/debug/compilation.log \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/compilation.log'} \ + CROSS_COMPILE="$CCACHE $ATF_COMPILER"' 2>> "${DEST}"/${LOG_SUBPATH}/compilation.log \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/compilation.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Compiling ATF..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} @@ -77,8 +87,9 @@ compile_atf() [[ $(type -t atf_custom_postprocess) == function ]] && atf_custom_postprocess - local atftempdir=$SRC/.tmp/atf-${LINUXFAMILY}-${BOARD}-${BRANCH} - mkdir -p "${atftempdir}" + atftempdir=$(mktemp -d) + chmod 700 ${atftempdir} + trap "rm -rf \"${atftempdir}\" ; exit 0" 0 1 2 3 15 # copy files to temp directory for f in $target_files; do @@ -121,10 +132,13 @@ compile_uboot() # read uboot version local version hash version=$(grab_version "$ubootdir") - hash=$(git --git-dir="$ubootdir"/.git rev-parse HEAD) + hash=$(improved_git --git-dir="$ubootdir"/.git rev-parse HEAD) display_alert "Compiling u-boot" "v$version" "info" +# build aarch64 + if [[ $(dpkg --print-architecture) == amd64 ]]; then + local toolchain toolchain=$(find_toolchain "$UBOOT_COMPILER" "$UBOOT_USE_GCC") [[ -z $toolchain ]] && exit_with_error "Could not find required toolchain" "${UBOOT_COMPILER}gcc $UBOOT_USE_GCC" @@ -137,13 +151,19 @@ compile_uboot() [[ -z $toolchain2 ]] && exit_with_error "Could not find required toolchain" "${toolchain2_type}gcc $toolchain2_ver" fi +# build aarch64 + fi + display_alert "Compiler version" "${UBOOT_COMPILER}gcc $(eval env PATH="${toolchain}:${toolchain2}:${PATH}" "${UBOOT_COMPILER}gcc" -dumpversion)" "info" [[ -n $toolchain2 ]] && display_alert "Additional compiler version" "${toolchain2_type}gcc $(eval env PATH="${toolchain}:${toolchain2}:${PATH}" "${toolchain2_type}gcc" -dumpversion)" "info" # create directory structure for the .deb package + uboottempdir=$(mktemp -d) + chmod 700 ${uboottempdir} + trap "rm -rf \"${uboottempdir}\" ; exit 0" 0 1 2 3 15 local uboot_name=${CHOSEN_UBOOT}_${REVISION}_${ARCH} - rm -rf $SRC/.tmp/{$uboot_name,packout} - mkdir -p $SRC/.tmp/$uboot_name/usr/lib/{u-boot,$uboot_name} $SRC/.tmp/$uboot_name/DEBIAN $SRC/.tmp/packout + rm -rf $uboottempdir/$uboot_name + mkdir -p $uboottempdir/$uboot_name/usr/lib/{u-boot,$uboot_name} $uboottempdir/$uboot_name/DEBIAN # process compilation for one or multiple targets while read -r target; do @@ -152,9 +172,13 @@ compile_uboot() target_patchdir=$(cut -d';' -f2 <<< "${target}") target_files=$(cut -d';' -f3 <<< "${target}") + # needed for multiple targets and for calling compile_uboot directly + #display_alert "Checking out to clean sources" + #improved_git checkout -f -q HEAD + if [[ $CLEAN_LEVEL == *make* ]]; then display_alert "Cleaning" "$BOOTSOURCEDIR" "info" - (cd "$BOOTSOURCEDIR"; make clean > /dev/null 2>&1) + (cd "${BOOTSOURCEDIR}"; make clean > /dev/null 2>&1) fi advanced_patch "u-boot" "$BOOTPATCHDIR" "$BOARD" "$target_patchdir" "$BRANCH" "${LINUXFAMILY}-${BOARD}-${BRANCH}" @@ -163,15 +187,15 @@ compile_uboot() [[ $CREATE_PATCHES == yes ]] && userpatch_create "u-boot" if [[ -n $ATFSOURCE ]]; then - local atftempdir=$SRC/.tmp/atf-${LINUXFAMILY}-${BOARD}-${BRANCH} cp -Rv "${atftempdir}"/*.bin . + rm -rf "${atftempdir}" fi - echo -e "\n\t== u-boot ==\n" >> "${DEST}"/debug/compilation.log + echo -e "\n\t== u-boot make $BOOTCONFIG ==\n" >> "${DEST}"/${LOG_SUBPATH}/compilation.log eval CCACHE_BASEDIR="$(pwd)" env PATH="${toolchain}:${toolchain2}:${PATH}" \ 'make $CTHREADS $BOOTCONFIG \ - CROSS_COMPILE="$CCACHE $UBOOT_COMPILER"' 2>> "${DEST}"/debug/compilation.log \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/compilation.log'} \ + CROSS_COMPILE="$CCACHE $UBOOT_COMPILER"' 2>> "${DEST}"/${LOG_SUBPATH}/compilation.log \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/compilation.log'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} if [[ "${version}" != 2014.07 ]]; then @@ -207,14 +231,15 @@ compile_uboot() cross_compile="CROSS_COMPILE=$CCACHE $UBOOT_COMPILER"; [[ -n $UBOOT_TOOLCHAIN2 ]] && cross_compile="ORANGEPI=foe"; # empty parameter is not allowed + echo -e "\n\t== u-boot make $target_make ==\n" >> "${DEST}"/${LOG_SUBPATH}/compilation.log eval CCACHE_BASEDIR="$(pwd)" env PATH="${toolchain}:${toolchain2}:${PATH}" \ 'make $target_make $CTHREADS \ - "${cross_compile}"' 2>>"${DEST}"/debug/compilation.log \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a "${DEST}"/debug/compilation.log'} \ + "${cross_compile}"' 2>>"${DEST}"/${LOG_SUBPATH}/compilation.log \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a "${DEST}"/${LOG_SUBPATH}/compilation.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Compiling u-boot..." $TTY_Y $TTY_X'} \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' - [[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "U-boot compilation failed" + [[ ${EVALPIPE[0]} -ne 0 ]] && exit_with_error "U-boot compilation failed" [[ $(type -t uboot_custom_postprocess) == function ]] && uboot_custom_postprocess @@ -231,9 +256,9 @@ compile_uboot() fi [[ ! -f $f_src ]] && exit_with_error "U-boot file not found" "$(basename "${f_src}")" if [[ "${version}" =~ 2014.07|2011.09 ]]; then - cp "${f_src}" "${SRC}/.tmp/packout/${f_dst}" + cp "${f_src}" "$uboottempdir/packout/${f_dst}" else - cp "${f_src}" "${SRC}/.tmp/${uboot_name}/usr/lib/${uboot_name}/${f_dst}" + cp "${f_src}" "$uboottempdir/${uboot_name}/usr/lib/${uboot_name}/${f_dst}" fi done done <<< "$UBOOT_TARGET_MAP" @@ -247,14 +272,14 @@ compile_uboot() fi else pack_uboot - cp ${SRC}/.tmp/packout/{boot0_sdcard.fex,boot_package.fex} "${SRC}/.tmp/${uboot_name}/usr/lib/${uboot_name}/" - cp ${SRC}/.tmp/packout/dts/${BOARD}-u-boot.dts "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/" + cp $uboottempdir/packout/{boot0_sdcard.fex,boot_package.fex} "${SRC}/.tmp/${uboot_name}/usr/lib/${uboot_name}/" + cp $uboottempdir/packout/dts/${BOARD}-u-boot.dts "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/" fi cd "${ubootdir}" || exit fi # declare -f on non-defined function does not do anything - cat <<-EOF > "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/platform_install.sh" + cat <<-EOF > "$uboottempdir/${uboot_name}/usr/lib/u-boot/platform_install.sh" DIR=/usr/lib/$uboot_name $(declare -f write_uboot_platform) $(declare -f write_uboot_platform_mtd) @@ -262,7 +287,7 @@ compile_uboot() EOF # set up control file - cat <<-EOF > "${SRC}/.tmp/${uboot_name}/DEBIAN/control" + cat <<-EOF > "$uboottempdir/${uboot_name}/DEBIAN/control" Package: linux-u-boot-${BOARD}-${BRANCH} Version: $REVISION Architecture: $ARCH @@ -278,20 +303,62 @@ compile_uboot() # copy config file to the package # useful for FEL boot with overlayfs_wrapper - [[ -f .config && -n $BOOTCONFIG ]] && cp .config "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/${BOOTCONFIG}" + [[ -f .config && -n $BOOTCONFIG ]] && cp .config "$uboottempdir/${uboot_name}/usr/lib/u-boot/${BOOTCONFIG}" # copy license files from typical locations - [[ -f COPYING ]] && cp COPYING "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/LICENSE" - [[ -f Licenses/README ]] && cp Licenses/README "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/LICENSE" - [[ -n $atftempdir && -f $atftempdir/license.md ]] && cp "${atftempdir}/license.md" "${SRC}/.tmp/${uboot_name}/usr/lib/u-boot/LICENSE.atf" + [[ -f COPYING ]] && cp COPYING "$uboottempdir/${uboot_name}/usr/lib/u-boot/LICENSE" + [[ -f Licenses/README ]] && cp Licenses/README "$uboottempdir/${uboot_name}/usr/lib/u-boot/LICENSE" + [[ -n $atftempdir && -f $atftempdir/license.md ]] && cp "${atftempdir}/license.md" "$uboottempdir/${uboot_name}/usr/lib/u-boot/LICENSE.atf" display_alert "Building deb" "${uboot_name}.deb" "info" - fakeroot dpkg-deb -b "${SRC}/.tmp/${uboot_name}" "${SRC}/.tmp/${uboot_name}.deb" >> "${DEST}"/debug/output.log 2>&1 - rm -rf "${SRC}/.tmp/${uboot_name}" + fakeroot dpkg-deb -b "$uboottempdir/${uboot_name}" "$uboottempdir/${uboot_name}.deb" >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1 + rm -rf "$uboottempdir/${uboot_name}" [[ -n $atftempdir ]] && rm -rf "${atftempdir}" - [[ ! -f $SRC/.tmp/${uboot_name}.deb ]] && exit_with_error "Building u-boot package failed" + [[ ! -f $uboottempdir/${uboot_name}.deb ]] && exit_with_error "Building u-boot package failed" - mv "${SRC}/.tmp/${uboot_name}.deb" "${DEB_STORAGE}/u-boot/" + rsync --remove-source-files -rq "$uboottempdir/${uboot_name}.deb" "${DEB_STORAGE}/u-boot/" + rm -rf "$uboottempdir" +} + +create_linux-source_package () +{ + ts=$(date +%s) + local sources_pkg_dir tmp_src_dir + tmp_src_dir=$(mktemp -d) + trap "rm -rf \"${tmp_src_dir}\" ; exit 0" 0 1 2 3 15 + sources_pkg_dir=${tmp_src_dir}/${CHOSEN_KSRC}_${REVISION}_all + mkdir -p "${sources_pkg_dir}"/usr/src/ \ + "${sources_pkg_dir}"/usr/share/doc/linux-source-${version}-${LINUXFAMILY} \ + "${sources_pkg_dir}"/DEBIAN + + cp "${EXTER}/config/kernel/${LINUXCONFIG}.config" "default_${LINUXCONFIG}.config" + xz < .config > "${sources_pkg_dir}/usr/src/${LINUXCONFIG}_${version}_${REVISION}_config.xz" + + display_alert "Compressing sources for the linux-source package" + tar cp --directory="$kerneldir" --exclude='.git' --owner=root . \ + | pv -p -b -r -s "$(du -sb "$kerneldir" --exclude=='.git' | cut -f1)" \ + | pixz -4 > "${sources_pkg_dir}/usr/src/linux-source-${version}-${LINUXFAMILY}.tar.xz" + cp COPYING "${sources_pkg_dir}/usr/share/doc/linux-source-${version}-${LINUXFAMILY}/LICENSE" + + cat <<-EOF > "${sources_pkg_dir}"/DEBIAN/control + Package: linux-source-${version}-${BRANCH}-${LINUXFAMILY} + Version: ${version}-${BRANCH}-${LINUXFAMILY}+${REVISION} + Architecture: all + Maintainer: $MAINTAINER <$MAINTAINERMAIL> + Section: kernel + Priority: optional + Depends: binutils, coreutils + Provides: linux-source, linux-source-${version}-${LINUXFAMILY} + Recommends: gcc, make + Description: This package provides the source code for the Linux kernel $version + EOF + + fakeroot dpkg-deb -b -Z${DEB_COMPRESS} -z0 "${sources_pkg_dir}" "${sources_pkg_dir}.deb" + rsync --remove-source-files -rq "${sources_pkg_dir}.deb" "${DEB_STORAGE}/" + + te=$(date +%s) + display_alert "Make the linux-source package" "$(($te - $ts)) sec." "info" + rm -rf "${tmp_src_dir}" } compile_kernel() @@ -309,9 +376,6 @@ compile_kernel() fi cd "${kerneldir}" || exit - if ! grep -qoE '^-rc[[:digit:]]+' <(grep "^EXTRAVERSION" Makefile | head -1 | awk '{print $(NF)}'); then - sed -i 's/EXTRAVERSION = .*/EXTRAVERSION = /' Makefile - fi rm -f localversion # read kernel version @@ -319,60 +383,69 @@ compile_kernel() version=$(grab_version "$kerneldir") # read kernel git hash - hash=$(git --git-dir="$kerneldir"/.git rev-parse HEAD) + hash=$(improved_git --git-dir="$kerneldir"/.git rev-parse HEAD) + + # Apply a series of patches if a series file exists + if test -f "${EXTER}"/patch/kernel/${KERNELPATCHDIR}/series.conf; then + display_alert "series.conf file visible. Apply" + series_conf="${SRC}"/patch/kernel/${KERNELPATCHDIR}/series.conf + + # apply_patch_series + apply_patch_series "${kerneldir}" "$series_conf" + fi # build 3rd party drivers # compilation_prepare advanced_patch "kernel" "$KERNELPATCHDIR" "$BOARD" "" "$BRANCH" "$LINUXFAMILY-$BRANCH" - # create patch for manual source changes in debug mode - [[ $CREATE_PATCHES == yes ]] && userpatch_create "kernel" + # create patch for manual source changes in debug mode + [[ $CREATE_PATCHES == yes ]] && userpatch_create "kernel" - # re-read kernel version after patching - local version - version=$(grab_version "$kerneldir") - - # create linux-source package - with already patched sources - local sources_pkg_dir=$SRC/.tmp/${CHOSEN_KSRC}_${REVISION}_all - rm -rf "${sources_pkg_dir}" - mkdir -p "${sources_pkg_dir}"/usr/src/ "${sources_pkg_dir}/usr/share/doc/linux-source-${version}-${LINUXFAMILY}" "${sources_pkg_dir}"/DEBIAN $SRC/.tmp/gpu_modules_${LINUXFAMILY} - - if [[ $BUILD_KSRC == yes ]]; then - display_alert "Cleaning" "$LINUXSOURCEDIR" "info" - (cd $LINUXSOURCEDIR; make ARCH=$ARCHITECTURE clean >/dev/null 2>&1) - - display_alert "Compressing sources for the linux-source package" - tar cp --directory="$kerneldir" --exclude='./.git/' --owner=root . \ - | pv -p -b -r -s "$(du -sb "$kerneldir" --exclude=='./.git/' | cut -f1)" \ - | pixz -4 > "${sources_pkg_dir}/usr/src/linux-source-${version}-${LINUXFAMILY}.tar.xz" - cp COPYING "${sources_pkg_dir}/usr/share/doc/linux-source-${version}-${LINUXFAMILY}/LICENSE" - fi + # re-read kernel version after patching + local version + version=$(grab_version "$kerneldir") display_alert "Compiling $BRANCH kernel" "$version" "info" - local toolchain - toolchain=$(find_toolchain "$KERNEL_COMPILER" "$KERNEL_USE_GCC") - [[ -z $toolchain ]] && exit_with_error "Could not find required toolchain" "${KERNEL_COMPILER}gcc $KERNEL_USE_GCC" + # compare with the architecture of the current Debian node + # if it matches we use the system compiler + if $(dpkg-architecture -e "${ARCH}"); then + display_alert "Native compilation" + elif [[ $(dpkg --print-architecture) == amd64 ]]; then + local toolchain + toolchain=$(find_toolchain "$KERNEL_COMPILER" "$KERNEL_USE_GCC") + [[ -z $toolchain ]] && exit_with_error "Could not find required toolchain" "${KERNEL_COMPILER}gcc $KERNEL_USE_GCC" + else + exit_with_error "Architecture [$ARCH] is not supported" + fi display_alert "Compiler version" "${KERNEL_COMPILER}gcc $(eval env PATH="${toolchain}:${PATH}" "${KERNEL_COMPILER}gcc" -dumpversion)" "info" # copy kernel config if [[ $KERNEL_KEEP_CONFIG == yes && -f "${DEST}"/config/$LINUXCONFIG.config ]]; then display_alert "Using previous kernel config" "${DEST}/config/$LINUXCONFIG.config" "info" - cp "${DEST}/config/${LINUXCONFIG}.config" .config + cp -p "${DEST}/config/${LINUXCONFIG}.config" .config else if [[ -f $USERPATCHES_PATH/$LINUXCONFIG.config ]]; then display_alert "Using kernel config provided by user" "userpatches/$LINUXCONFIG.config" "info" - cp "${USERPATCHES_PATH}/${LINUXCONFIG}.config" .config + cp -p "${USERPATCHES_PATH}/${LINUXCONFIG}.config" .config else - display_alert "Using kernel config file" "config/kernel/$LINUXCONFIG.config" "info" - cp "${EXTER}/config/kernel/${LINUXCONFIG}.config" .config + display_alert "Using kernel config file" "${EXTER}/config/kernel/$LINUXCONFIG.config" "info" + cp -p "${EXTER}/config/kernel/${LINUXCONFIG}.config" .config fi fi + call_extension_method "custom_kernel_config" << 'CUSTOM_KERNEL_CONFIG' +*Kernel .config is in place, still clean from git version* +Called after ${LINUXCONFIG}.config is put in place (.config). +Before any olddefconfig any Kconfig make is called. +A good place to customize the .config directly. +CUSTOM_KERNEL_CONFIG + + # hack for deb builder. To pack what's missing in headers pack. - cp $EXTER/patch/misc/headers-debian-byteshift.patch /tmp + cp "$EXTER"/patch/misc/headers-debian-byteshift.patch /tmp if [[ $KERNEL_CONFIGURE != yes ]]; then if [[ $BRANCH == legacy ]]; then @@ -403,16 +476,20 @@ compile_kernel() fi fi - xz < .config > "${sources_pkg_dir}/usr/src/${LINUXCONFIG}_${version}_${REVISION}_config.xz" + # create linux-source package - with already patched sources + # We will build this package first and clear the memory. + if [[ $BUILD_KSRC != no ]]; then + create_linux-source_package + fi - echo -e "\n\t== kernel ==\n" >> "${DEST}"/debug/compilation.log + echo -e "\n\t== kernel ==\n" >> "${DEST}"/${LOG_SUBPATH}/compilation.log eval CCACHE_BASEDIR="$(pwd)" env PATH="${toolchain}:${PATH}" \ 'make $CTHREADS ARCH=$ARCHITECTURE \ CROSS_COMPILE="$CCACHE $KERNEL_COMPILER" \ $SRC_LOADADDR \ LOCALVERSION="-$LINUXFAMILY" \ - $KERNEL_IMAGE_TYPE modules dtbs 2>>$DEST/debug/compilation.log' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/compilation.log'} \ + $KERNEL_IMAGE_TYPE ${KERNEL_EXTRA_TARGETS:-modules dtbs} 2>>$DEST/${LOG_SUBPATH}/compilation.log' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/compilation.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" \ --progressbox "Compiling kernel..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} @@ -435,52 +512,61 @@ compile_kernel() display_alert "Creating packages" # produce deb packages: image, headers, firmware, dtb - echo -e "\n\t== deb packages: image, headers, firmware, dtb ==\n" >> "${DEST}"/debug/compilation.log + echo -e "\n\t== deb packages: image, headers, firmware, dtb ==\n" >> "${DEST}"/${LOG_SUBPATH}/compilation.log eval CCACHE_BASEDIR="$(pwd)" env PATH="${toolchain}:${PATH}" \ - 'make -j1 $kernel_packing \ + 'make $CTHREADS $kernel_packing \ KDEB_PKGVERSION=$REVISION \ + KDEB_COMPRESS=${DEB_COMPRESS} \ BRANCH=$BRANCH \ LOCALVERSION="-${LINUXFAMILY}" \ KBUILD_DEBARCH=$ARCH \ ARCH=$ARCHITECTURE \ DEBFULLNAME="$MAINTAINER" \ DEBEMAIL="$MAINTAINERMAIL" \ - CROSS_COMPILE="$CCACHE $KERNEL_COMPILER" 2>>$DEST/debug/compilation.log' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/compilation.log'} \ + CROSS_COMPILE="$CCACHE $KERNEL_COMPILER" 2>>$DEST/${LOG_SUBPATH}/compilation.log' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/compilation.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Creating kernel packages..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - cat <<-EOF > "${sources_pkg_dir}"/DEBIAN/control - Package: linux-source-${version}-${BRANCH}-${LINUXFAMILY} - Version: ${version}-${BRANCH}-${LINUXFAMILY}+${REVISION} - Architecture: all - Maintainer: $MAINTAINER <$MAINTAINERMAIL> - Section: kernel - Priority: optional - Depends: binutils, coreutils - Provides: linux-source, linux-source-${version}-${LINUXFAMILY} - Recommends: gcc, make - Description: This package provides the source code for the Linux kernel $version - EOF - - if [[ $BUILD_KSRC == yes ]]; then - fakeroot dpkg-deb -z0 -b "${sources_pkg_dir}" "${sources_pkg_dir}.deb" - mv "${sources_pkg_dir}.deb" "${DEB_STORAGE}/" - fi - rm -rf "${sources_pkg_dir}" - cd .. || exit # remove firmare image packages here - easier than patching ~40 packaging scripts at once rm -f linux-firmware-image-*.deb - mv ./*.deb "${DEB_STORAGE}/" || exit_with_error "Failed moving kernel DEBs" - # store git hash to the file - echo "${hash}" > "${EXTER}/cache/hash/linux-image-${BRANCH}-${LINUXFAMILY}.githash" - [[ -z ${KERNELPATCHDIR} ]] && KERNELPATCHDIR=$LINUXFAMILY-$BRANCH - [[ -z ${LINUXCONFIG} ]] && LINUXCONFIG=linux-$LINUXFAMILY-$BRANCH - hash_watch_1=$(find "${EXTER}/patch/kernel/${KERNELPATCHDIR}" -maxdepth 1 -printf '%s %P\n' 2> /dev/null | sort) - hash_watch_2=$(cat "${EXTER}/config/kernel/${LINUXCONFIG}.config") - echo "${hash_watch_1}${hash_watch_2}" | git hash-object --stdin >> "${EXTER}/cache/hash/linux-image-${BRANCH}-${LINUXFAMILY}.githash" + rsync --remove-source-files -rq ./*.deb "${DEB_STORAGE}/" || exit_with_error "Failed moving kernel DEBs" + + # store git hash to the file and create a change log + #HASHTARGET="${EXTER}/cache/hash"$([[ ${BETA} == yes ]] && echo "-beta")"/linux-image-${BRANCH}-${LINUXFAMILY}" + #OLDHASHTARGET=$(head -1 "${HASHTARGET}.githash" 2>/dev/null) + + # check if OLDHASHTARGET commit exists otherwise use oldest + #if [[ -z ${KERNEL_VERSION_LEVEL} ]]; then + # git -C ${kerneldir} cat-file -t ${OLDHASHTARGET} >/dev/null 2>&1 + # [[ $? -ne 0 ]] && OLDHASHTARGET=$(git -C ${kerneldir} show HEAD~199 --pretty=format:"%H" --no-patch) + # else + # git -C ${kerneldir} cat-file -t ${OLDHASHTARGET} >/dev/null 2>&1 + # [[ $? -ne 0 ]] && OLDHASHTARGET=$(git -C ${kerneldir} rev-list --max-parents=0 HEAD) + #fi + + #[[ -z ${KERNELPATCHDIR} ]] && KERNELPATCHDIR=$LINUXFAMILY-$BRANCH + #[[ -z ${LINUXCONFIG} ]] && LINUXCONFIG=linux-$LINUXFAMILY-$BRANCH + + # calculate URL + #if [[ "$KERNELSOURCE" == *"github.com"* ]]; then + # URL="${KERNELSOURCE/git:/https:}/commit/${HASH}" + #elif [[ "$KERNELSOURCE" == *"kernel.org"* ]]; then + # URL="${KERNELSOURCE/git:/https:}/commit/?h=$(echo $KERNELBRANCH | cut -d":" -f2)&id=${HASH}" + #else + # URL="${KERNELSOURCE}/+/$HASH" + #fi + + # create change log + #git --no-pager -C ${kerneldir} log --abbrev-commit --oneline --no-patch --no-merges --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(black bold)%ad%Creset%C(auto) | %s | <%an> | %H' ${OLDHASHTARGET}..${hash} > "${HASHTARGET}.gitlog" + + #echo "${hash}" > "${HASHTARGET}.githash" + #hash_watch_1=$(LC_COLLATE=C find -L "${EXTER}/patch/kernel/${KERNELPATCHDIR}"/ -name '*.patch' -mindepth 1 -maxdepth 1 -printf '%s %P\n' 2> /dev/null | LC_COLLATE=C sort -n) + #hash_watch_2=$(cat "${EXTER}/config/kernel/${LINUXCONFIG}.config") + #echo "${hash_watch_1}${hash_watch_2}" | improved_git hash-object --stdin >> "${HASHTARGET}.githash" + } @@ -488,39 +574,32 @@ compile_kernel() compile_firmware() { - display_alert "Merging and packaging linux firmware" "@host" "info" - if [[ $USE_MAINLINE_GOOGLE_MIRROR == yes ]]; then - plugin_repo="https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git" - else - plugin_repo="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git" - [[ $DOWNLOAD_MIRROR == china ]] && plugin_repo="${GIT_SERVER}/linux-firmware.git" - fi - local plugin_dir="orangepi-firmware${FULL}" - [[ -d "${EXTER}/cache/sources/${plugin_dir}" ]] && rm -rf "${EXTER}/cache/sources/${plugin_dir}" - mkdir -p "${EXTER}/cache/sources/${plugin_dir}/lib/firmware" + display_alert "Merging and packaging linux firmware" "@host" "info" - [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "${GIT_SERVER}/firmware" "${EXTER}/cache/sources/orangepi-firmware-git" "branch:master" + local firmwaretempdir plugin_dir - if [[ -n $FULL ]]; then - [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "$plugin_repo" "${EXTER}/cache/sources/linux-firmware-git" "branch:master" - # cp : create hardlinks - #cp -alf "${EXTER}"/cache/sources/linux-firmware-git/* "${EXTER}/cache/sources/${plugin_dir}/lib/firmware/" - fi - - # overlay our firmware - # cp : create hardlinks - if [[ -n $FULL ]]; then - cp -alf "${EXTER}"/cache/sources/linux-firmware-git/* "${EXTER}/cache/sources/${plugin_dir}/lib/firmware/" - else - cp -alf "${EXTER}"/cache/sources/orangepi-firmware-git/* "${EXTER}/cache/sources/${plugin_dir}/lib/firmware/" + firmwaretempdir=$(mktemp -d) + chmod 700 ${firmwaretempdir} + trap "rm -rf \"${firmwaretempdir}\" ; exit 0" 0 1 2 3 15 + plugin_dir="orangepi-firmware${FULL}" + mkdir -p "${firmwaretempdir}/${plugin_dir}/lib/firmware" + + [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "https://github.com/orangepi-xunlong/firmware" "${EXTER}/cache/sources/orangepi-firmware-git" "branch:master" + if [[ -n $FULL ]]; then + [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "$MAINLINE_FIRMWARE_SOURCE" "${EXTER}/cache/sources/linux-firmware-git" "branch:master" + # cp : create hardlinks + cp -af --reflink=auto "${EXTER}"/cache/sources/linux-firmware-git/* "${firmwaretempdir}/${plugin_dir}/lib/firmware/" fi + # overlay our firmware + # cp : create hardlinks + cp -af --reflink=auto "${EXTER}"/cache/sources/orangepi-firmware-git/* "${firmwaretempdir}/${plugin_dir}/lib/firmware/" - # cleanup what's not needed for sure - rm -rf "${EXTER}/cache/sources/${plugin_dir}"/lib/firmware/{amdgpu,amd-ucode,radeon,nvidia,matrox,.git} - cd "${EXTER}/cache/sources/${plugin_dir}" || exit + # cleanup what's not needed for sure + rm -rf "${firmwaretempdir}/${plugin_dir}"/lib/firmware/{amdgpu,amd-ucode,radeon,nvidia,matrox,.git} + cd "${firmwaretempdir}/${plugin_dir}" || exit - # set up control file - mkdir -p DEBIAN + # set up control file + mkdir -p DEBIAN cat <<-END > DEBIAN/control Package: orangepi-firmware${FULL} Version: $REVISION @@ -533,12 +612,95 @@ compile_firmware() Description: Linux firmware${FULL} END - cd "${EXTER}"/cache/sources || exit - # pack - mv "orangepi-firmware${FULL}" "orangepi-firmware${FULL}_${REVISION}_all" - fakeroot dpkg -b "orangepi-firmware${FULL}_${REVISION}_all" >> "${DEST}"/debug/install.log 2>&1 - mv "orangepi-firmware${FULL}_${REVISION}_all" "orangepi-firmware${FULL}" - mv "orangepi-firmware${FULL}_${REVISION}_all.deb" "${DEB_STORAGE}/" + cd "${firmwaretempdir}" || exit + # pack + mv "orangepi-firmware${FULL}" "orangepi-firmware${FULL}_${REVISION}_all" + display_alert "Building firmware package" "orangepi-firmware${FULL}_${REVISION}_all" "info" + fakeroot dpkg -b "orangepi-firmware${FULL}_${REVISION}_all" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + mv "orangepi-firmware${FULL}_${REVISION}_all" "orangepi-firmware${FULL}" + rsync -rq "orangepi-firmware${FULL}_${REVISION}_all.deb" "${DEB_STORAGE}/" + + # remove temp directory + rm -rf "${firmwaretempdir}" +} + + + + +compile_orangepi-zsh() +{ + + local tmp_dir orangepi_zsh_dir + tmp_dir=$(mktemp -d) + chmod 700 ${tmp_dir} + trap "rm -rf \"${tmp_dir}\" ; exit 0" 0 1 2 3 15 + orangepi_zsh_dir=orangepi-zsh_${REVISION}_all + display_alert "Building deb" "orangepi-zsh" "info" + + [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "https://github.com/robbyrussell/oh-my-zsh" "${EXTER}/cache/sources/oh-my-zsh" "branch:master" + [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "https://github.com/mroth/evalcache" "${EXTER}/cache/sources/evalcache" "branch:master" + + mkdir -p "${tmp_dir}/${orangepi_zsh_dir}"/{DEBIAN,etc/skel/,etc/oh-my-zsh/,/etc/skel/.oh-my-zsh/cache} + + # set up control file + cat <<-END > "${tmp_dir}/${orangepi_zsh_dir}"/DEBIAN/control + Package: orangepi-zsh + Version: $REVISION + Architecture: all + Maintainer: $MAINTAINER <$MAINTAINERMAIL> + Depends: zsh, tmux + Section: utils + Priority: optional + Description: Orange Pi improved ZShell + END + + # set up post install script + cat <<-END > "${tmp_dir}/${orangepi_zsh_dir}"/DEBIAN/postinst + #!/bin/sh + + # copy cache directory if not there yet + awk -F'[:]' '{if (\$3 >= 1000 && \$3 != 65534 || \$3 == 0) print ""\$6"/.oh-my-zsh"}' /etc/passwd | xargs -i sh -c 'test ! -d {} && cp -R --attributes-only /etc/skel/.oh-my-zsh {}' + awk -F'[:]' '{if (\$3 >= 1000 && \$3 != 65534 || \$3 == 0) print ""\$6"/.zshrc"}' /etc/passwd | xargs -i sh -c 'test ! -f {} && cp -R /etc/skel/.zshrc {}' + + # fix owner permissions in home directory + awk -F'[:]' '{if (\$3 >= 1000 && \$3 != 65534 || \$3 == 0) print ""\$1":"\$3" "\$6"/.oh-my-zsh"}' /etc/passwd | xargs -n2 chown -R + awk -F'[:]' '{if (\$3 >= 1000 && \$3 != 65534 || \$3 == 0) print ""\$1":"\$3" "\$6"/.zshrc"}' /etc/passwd | xargs -n2 chown -R + + # add support for bash profile + ! grep emulate /etc/zsh/zprofile >/dev/null && echo "emulate sh -c 'source /etc/profile'" >> /etc/zsh/zprofile + exit 0 + END + + cp -R "${EXTER}"/cache/sources/oh-my-zsh "${tmp_dir}/${orangepi_zsh_dir}"/etc/ + cp -R "${EXTER}"/cache/sources/evalcache "${tmp_dir}/${orangepi_zsh_dir}"/etc/oh-my-zsh/plugins + cp "${tmp_dir}/${orangepi_zsh_dir}"/etc/oh-my-zsh/templates/zshrc.zsh-template "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + chmod -R g-w,o-w "${tmp_dir}/${orangepi_zsh_dir}"/etc/oh-my-zsh/ + + # we have common settings + sed -i "s/^export ZSH=.*/export ZSH=\/etc\/oh-my-zsh/" "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + # user cache + sed -i "/^export ZSH=.*/a export ZSH_CACHE_DIR=~\/.oh-my-zsh\/cache" "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + # define theme + sed -i 's/^ZSH_THEME=.*/ZSH_THEME="mrtazz"/' "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + # disable prompt while update + sed -i 's/# DISABLE_UPDATE_PROMPT="true"/DISABLE_UPDATE_PROMPT="true"/g' "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + # disable auto update since we provide update via package + sed -i 's/# DISABLE_AUTO_UPDATE="true"/DISABLE_AUTO_UPDATE="true"/g' "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + # define default plugins + sed -i 's/^plugins=.*/plugins=(evalcache git git-extras debian tmux screen history extract colorize web-search docker)/' "${tmp_dir}/${orangepi_zsh_dir}"/etc/skel/.zshrc + + chmod 755 "${tmp_dir}/${orangepi_zsh_dir}"/DEBIAN/postinst + + fakeroot dpkg-deb -b -Z${DEB_COMPRESS} "${tmp_dir}/${orangepi_zsh_dir}" >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1 + rsync --remove-source-files -rq "${tmp_dir}/${orangepi_zsh_dir}.deb" "${DEB_STORAGE}/" + rm -rf "${tmp_dir}" + } @@ -581,7 +743,7 @@ compile_orangepi-config() ln -sf /usr/sbin/softy "${tmpdir}"/usr/bin/softy fakeroot dpkg -b "${tmpdir}" >/dev/null - mv "${tmpdir}.deb" "${DEB_STORAGE}/" + rsync --remove-source-files -rq "${tmpdir}.deb" "${DEB_STORAGE}/" rm -rf "${tmpdir}" } @@ -593,13 +755,13 @@ compile_sunxi_tools() # Compile and install only if git commit hash changed cd $EXTER/cache/sources/sunxi-tools || exit # need to check if /usr/local/bin/sunxi-fexc to detect new Docker containers with old cached sources - if [[ ! -f .commit_id || $(git rev-parse @ 2>/dev/null) != $(<.commit_id) || ! -f /usr/local/bin/sunxi-fexc ]]; then + if [[ ! -f .commit_id || $(improved_git rev-parse @ 2>/dev/null) != $(<.commit_id) || ! -f /usr/local/bin/sunxi-fexc ]]; then display_alert "Compiling" "sunxi-tools" "info" make -s clean >/dev/null make -s tools >/dev/null mkdir -p /usr/local/bin/ make install-tools >/dev/null 2>&1 - git rev-parse @ 2>/dev/null > .commit_id + improved_git rev-parse @ 2>/dev/null > .commit_id fi } @@ -608,12 +770,12 @@ install_rkbin_tools() # install only if git commit hash changed cd "${EXTER}"/cache/sources/rkbin-tools || exit # need to check if /usr/local/bin/sunxi-fexc to detect new Docker containers with old cached sources - if [[ ! -f .commit_id || $(git rev-parse @ 2>/dev/null) != $(<.commit_id) || ! -f /usr/local/bin/loaderimage ]]; then + if [[ ! -f .commit_id || $(improved_git rev-parse @ 2>/dev/null) != $(<.commit_id) || ! -f /usr/local/bin/loaderimage ]]; then display_alert "Installing" "rkbin-tools" "info" mkdir -p /usr/local/bin/ install -m 755 tools/loaderimage /usr/local/bin/ install -m 755 tools/trust_merger /usr/local/bin/ - git rev-parse @ 2>/dev/null > .commit_id + improved_git rev-parse @ 2>/dev/null > .commit_id fi } @@ -633,6 +795,7 @@ grab_version() # find_toolchain() { + [[ "${SKIP_EXTERNAL_TOOLCHAINS}" == "yes" ]] && { echo "/usr/bin"; return; } local compiler=$1 local expression=$2 local dist=10 @@ -661,12 +824,12 @@ find_toolchain() done echo "$toolchain" # logging a stack of used compilers. - if [[ -f "${DEST}"/debug/compiler.log ]]; then - if ! grep -q "$toolchain" "${DEST}"/debug/compiler.log; then - echo "$toolchain" >> "${DEST}"/debug/compiler.log; + if [[ -f "${DEST}"/${LOG_SUBPATH}/compiler.log ]]; then + if ! grep -q "$toolchain" "${DEST}"/${LOG_SUBPATH}/compiler.log; then + echo "$toolchain" >> "${DEST}"/${LOG_SUBPATH}/compiler.log; fi else - echo "$toolchain" >> "${DEST}"/debug/compiler.log; + echo "$toolchain" >> "${DEST}"/${LOG_SUBPATH}/compiler.log; fi } @@ -761,8 +924,8 @@ process_patch_file() # detect and remove files which patch will create lsdiff -s --strip=1 "${patch}" | grep '^+' | awk '{print $2}' | xargs -I % sh -c 'rm -f %' - echo "Processing file $patch" >> "${DEST}"/debug/patching.log - patch --batch --silent -p1 -N < "${patch}" >> "${DEST}"/debug/patching.log 2>&1 + echo "Processing file $patch" >> "${DEST}"/${LOG_SUBPATH}/patching.log + patch --batch --silent -p1 -N < "${patch}" >> "${DEST}"/${LOG_SUBPATH}/patching.log 2>&1 if [[ $? -ne 0 ]]; then display_alert "* $status $(basename "${patch}")" "failed" "wrn" @@ -770,7 +933,7 @@ process_patch_file() else display_alert "* $status $(basename "${patch}")" "" "info" fi - echo >> "${DEST}"/debug/patching.log + echo >> "${DEST}"/${LOG_SUBPATH}/patching.log } userpatch_create() @@ -805,7 +968,7 @@ userpatch_create() read -e -p "Patch description: " -i "$COMMIT_MESSAGE" COMMIT_MESSAGE [[ -z "$COMMIT_MESSAGE" ]] && COMMIT_MESSAGE="Patching something" git commit -s -m "$COMMIT_MESSAGE" - git format-patch -1 HEAD --stdout --signature="Created with Armbian build tools https://github.com/armbian/build" > "${patch}" + git format-patch -1 HEAD --stdout --signature="Created with orangepi build tools https://github.com/orangepi-xunlong/build" > "${patch}" PATCHFILE=$(git format-patch -1 HEAD) rm $PATCHFILE # delete the actual file # create a symlink to have a nice name ready @@ -838,44 +1001,34 @@ userpatch_create() # overlayfs_wrapper() { - local operation="$1" - - if [[ $operation == wrap ]]; then - - local srcdir="$2" - local description="$3" - - mkdir -p /tmp/overlay_components/ /tmp/orangepi_build/ - local tempdir workdir mergeddir - tempdir=$(mktemp -d --tmpdir="/tmp/overlay_components/") - workdir=$(mktemp -d --tmpdir="/tmp/overlay_components/") - mergeddir=$(mktemp -d --suffix="_$description" --tmpdir="/tmp/orangepi_build/") - - mount -t overlay overlay -o lowerdir="$srcdir",upperdir="$tempdir",workdir="$workdir" "$mergeddir" - # this is executed in a subshell, so use temp files to pass extra data outside - - echo "$tempdir" >> /tmp/.overlayfs_wrapper_cleanup - echo "$mergeddir" >> /tmp/.overlayfs_wrapper_umount - echo "$mergeddir" >> /tmp/.overlayfs_wrapper_cleanup - echo "$mergeddir" - - return - fi - - if [[ $operation == cleanup ]]; then - - if [[ -f /tmp/.overlayfs_wrapper_umount ]]; then - for dir in $( /dev/null 2>&1 - done - fi - - if [[ -f /tmp/.overlayfs_wrapper_cleanup ]]; then - for dir in $(> /tmp/.overlayfs_wrapper_cleanup + echo "$mergeddir" >> /tmp/.overlayfs_wrapper_umount + echo "$mergeddir" >> /tmp/.overlayfs_wrapper_cleanup + echo "$mergeddir" + return + fi + if [[ $operation == cleanup ]]; then + if [[ -f /tmp/.overlayfs_wrapper_umount ]]; then + for dir in $( /dev/null 2>&1 + done + fi + if [[ -f /tmp/.overlayfs_wrapper_cleanup ]]; then + for dir in $(/dev/null) 2>/dev/null) -BUILD_REPOSITORY_COMMIT=$(git describe --match=d_e_a_d_b_e_e_f --always --dirty 2>/dev/null) -ROOTFS_CACHE_MAX=42 # max number of rootfs cache, older ones will be cleaned up +BUILD_REPOSITORY_URL=$(improved_git remote get-url $(improved_git remote 2>/dev/null | grep origin) 2>/dev/null) +BUILD_REPOSITORY_COMMIT=$(improved_git describe --match=d_e_a_d_b_e_e_f --always --dirty 2>/dev/null) +ROOTFS_CACHE_MAX=200 # max number of rootfs cache, older ones will be cleaned up DEB_STORAGE=$DEST/debs DEB_ORANGEPI=$EXTER/cache/debs @@ -32,7 +36,7 @@ DEB_ORANGEPI=$EXTER/cache/debs # TODO: fixed name can't be used for parallel image building ROOT_MAPPER="orangepi-root" [[ -z $ROOTFS_TYPE ]] && ROOTFS_TYPE=ext4 # default rootfs type is ext4 -[[ "ext4 f2fs btrfs nfs fel" != *$ROOTFS_TYPE* ]] && exit_with_error "Unknown rootfs type" "$ROOTFS_TYPE" +[[ "ext4 f2fs btrfs xfs nfs fel" != *$ROOTFS_TYPE* ]] && exit_with_error "Unknown rootfs type" "$ROOTFS_TYPE" [[ -z $BTRFS_COMPRESSION ]] && BTRFS_COMPRESSION=zlib # default btrfs filesystem compression method is zlib [[ ! $BTRFS_COMPRESSION =~ zlib|lzo|zstd|none ]] && exit_with_error "Unknown btrfs compression method" "$BTRFS_COMPRESSION" @@ -50,22 +54,75 @@ fi # small SD card with kernel, boot script and .dtb/.bin files [[ $ROOTFS_TYPE == nfs ]] && FIXED_IMAGE_SIZE=64 +# Since we are having too many options for mirror management, +# then here is yet another mirror related option. +# Respecting user's override in case a mirror is unreachable. +case $REGIONAL_MIRROR in + china) + [[ -z $USE_MAINLINE_GOOGLE_MIRROR ]] && [[ -z $MAINLINE_MIRROR ]] && MAINLINE_MIRROR=tuna + [[ -z $USE_GITHUB_UBOOT_MIRROR ]] && [[ -z $UBOOT_MIRROR ]] && UBOOT_MIRROR=gitee + [[ -z $GITHUB_MIRROR ]] && GITHUB_MIRROR=fastgit + [[ -z $DOWNLOAD_MIRROR ]] && DOWNLOAD_MIRROR=china + ;; + *) + ;; +esac + # used by multiple sources - reduce code duplication [[ $USE_MAINLINE_GOOGLE_MIRROR == yes ]] && MAINLINE_MIRROR=google + case $MAINLINE_MIRROR in - google) MAINLINE_KERNEL_SOURCE='https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable' ;; - tuna) MAINLINE_KERNEL_SOURCE='https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git' ;; - *) MAINLINE_KERNEL_SOURCE='git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git' ;; + google) + MAINLINE_KERNEL_SOURCE='https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable' + MAINLINE_FIRMWARE_SOURCE='https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git' + ;; + tuna) + MAINLINE_KERNEL_SOURCE='https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git' + MAINLINE_FIRMWARE_SOURCE='https://mirrors.tuna.tsinghua.edu.cn/git/linux-firmware.git' + ;; + bfsu) + MAINLINE_KERNEL_SOURCE='https://mirrors.bfsu.edu.cn/git/linux-stable.git' + MAINLINE_FIRMWARE_SOURCE='https://mirrors.bfsu.edu.cn/git/linux-firmware.git' + ;; + *) + MAINLINE_KERNEL_SOURCE='git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git' + MAINLINE_FIRMWARE_SOURCE='git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git' + ;; esac + MAINLINE_KERNEL_DIR="$SRC/kernel" -if [[ $USE_GITHUB_UBOOT_MIRROR == yes ]]; then - MAINLINE_UBOOT_SOURCE='https://github.com/RobertCNelson/u-boot' -else - MAINLINE_UBOOT_SOURCE='https://github.com/orangepi-xunlong/u-boot-orangepi.git' -fi +[[ $USE_GITHUB_UBOOT_MIRROR == yes ]] && UBOOT_MIRROR=github + +case $UBOOT_MIRROR in + gitee) + MAINLINE_UBOOT_SOURCE='https://github.com/orangepi-xunlong/u-boot-orangepi.git' + ;; + github) + MAINLINE_UBOOT_SOURCE='https://github.com/orangepi-xunlong/u-boot-orangepi.git' + ;; + *) + MAINLINE_UBOOT_SOURCE='https://source.denx.de/u-boot/u-boot.git' + ;; +esac + MAINLINE_UBOOT_DIR="$SRC/u-boot" +case $GITHUB_MIRROR in + fastgit) + GITHUB_SOURCE='https://hub.fastgit.org/' + ;; + gitclone) + GITHUB_SOURCE='https://gitclone.com/github.com/' + ;; + cnpmjs) + GITHUB_SOURCE='https://github.com.cnpmjs.org/' + ;; + *) + GITHUB_SOURCE='https://github.com/' + ;; +esac + # Let's set default data if not defined in board configuration above [[ -z $OFFSET ]] && OFFSET=4 # offset to 1st partition (we use 4MiB boundaries by default) ARCH=armhf @@ -81,24 +138,17 @@ ATF_COMPILE=yes [[ -z $CRYPTROOT_PARAMETERS ]] && CRYPTROOT_PARAMETERS="--pbkdf pbkdf2" [[ -z $WIREGUARD ]] && WIREGUARD="no" [[ -z $EXTRAWIFI ]] && EXTRAWIFI="yes" +[[ -z $SKIP_BOOTSPLASH ]] && SKIP_BOOTSPLASH="no" [[ -z $AUFS ]] && AUFS="yes" [[ -z $IMAGE_PARTITION_TABLE ]] && IMAGE_PARTITION_TABLE="msdos" +[[ -z $EXTRA_BSP_NAME ]] && EXTRA_BSP_NAME="" +[[ -z $EXTRA_ROOTFS_MIB_SIZE ]] && EXTRA_ROOTFS_MIB_SIZE=0 [[ -z $BUILD_KSRC ]] && BUILD_KSRC="no" # single ext4 partition is the default and preferred configuration #BOOTFS_TYPE='' - -#BOOTFS_TYPE="fat" -[[ $BOOTFS_TYPE == fat && $ARCHITECTURE == arm ]] && BOOTSCRIPT="boot-sunxi-fat.cmd:boot.cmd" -[[ $BOOTFS_TYPE == fat && $ARCHITECTURE == arm64 ]] && BOOTSCRIPT='boot-sun50i-next-fat.cmd:boot.cmd' - -# set unique mounting directory -SDCARD="${SRC}/.tmp/rootfs-${BRANCH}-${BOARD}-${RELEASE}-${BUILD_DESKTOP}-${BUILD_MINIMAL}" -MOUNT="${SRC}/.tmp/mount-${BRANCH}-${BOARD}-${RELEASE}-${BUILD_DESKTOP}-${BUILD_MINIMAL}" -DESTIMG="${SRC}/.tmp/image-${BRANCH}-${BOARD}-${RELEASE}-${BUILD_DESKTOP}-${BUILD_MINIMAL}" - [[ ! -f ${EXTER}/config/sources/families/$LINUXFAMILY.conf ]] && \ - exit_with_error "Sources configuration not found" "$LINUXFAMILY" + exit_with_error "Sources configuration not found" "$LINUXFAMILY" source "${EXTER}/config/sources/families/${LINUXFAMILY}.conf" @@ -110,11 +160,252 @@ fi # load architecture defaults source "${EXTER}/config/sources/${ARCH}.conf" +## Extensions: at this point we've sourced all the config files that will be used, +## and (hopefully) not yet invoked any extension methods. So this is the perfect +## place to initialize the extension manager. It will create functions +## like the 'post_family_config' that is invoked below. +initialize_extension_manager + +call_extension_method "post_family_config" "config_tweaks_post_family_config" << 'POST_FAMILY_CONFIG' +*give the config a chance to override the family/arch defaults* +This hook is called after the family configuration (`sources/families/xxx.conf`) is sourced. +Since the family can override values from the user configuration and the board configuration, +it is often used to in turn override those. +POST_FAMILY_CONFIG + +# Myy : Menu configuration for choosing desktop configurations + +show_menu() { + provided_title=$1 + provided_backtitle=$2 + provided_menuname=$3 + # Myy : I don't know why there's a TTY_Y - 8... + #echo "Provided title : $provided_title" + #echo "Provided backtitle : $provided_backtitle" + #echo "Provided menuname : $provided_menuname" + #echo "Provided options : " "${@:4}" + #echo "TTY X: $TTY_X Y: $TTY_Y" + whiptail --title "${provided_title}" --backtitle "${provided_backtitle}" --notags \ + --menu "${provided_menuname}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ + "${@:4}" \ + 3>&1 1>&2 2>&3 +} + +# Myy : FIXME Factorize +show_select_menu() { + provided_title=$1 + provided_backtitle=$2 + provided_menuname=$3 + #dialog --stdout --title "${provided_title}" --backtitle "${provided_backtitle}" \ + #--checklist "${provided_menuname}" $TTY_Y $TTY_X $((TTY_Y - 8)) "${@:4}" + + #whiptail --separate-output --title "${provided_title}" --backtitle "${provided_backtitle}" \ + # --checklist "${provided_menuname}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ + # "${@:4}" \ + # 3>&1 1>&2 2>&3 + + whiptail --title "${provided_title}" --backtitle "${provided_backtitle}" \ + --checklist "${provided_menuname}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ + "${@:4}" \ + 3>&1 1>&2 2>&3 +} + +# Myy : Once we got a list of selected groups, parse the PACKAGE_LIST inside configuration.sh + +DESKTOP_ELEMENTS_DIR="${EXTER}/config/desktop/${RELEASE}" +DESKTOP_CONFIGS_DIR="${DESKTOP_ELEMENTS_DIR}/environments" +DESKTOP_CONFIG_PREFIX="config_" +DESKTOP_APPGROUPS_DIR="${DESKTOP_ELEMENTS_DIR}/appgroups" + +desktop_element_available_for_arch() { + local desktop_element_path="${1}" + local targeted_arch="${2}" + + local arch_limitation_file="${1}/only_for" + + echo "Checking if ${desktop_element_path} is available for ${targeted_arch} in ${arch_limitation_file}" >> "${DEST}"/${LOG_SUBPATH}/output.log + if [[ -f "${arch_limitation_file}" ]]; then + grep -- "${targeted_arch}" "${arch_limitation_file}" + return $? + else + return 0 + fi +} + +desktop_element_supported() { + + local desktop_element_path="${1}" + + local support_level_filepath="${desktop_element_path}/support" + if [[ -f "${support_level_filepath}" ]]; then + local support_level="$(cat "${support_level_filepath}")" + if [[ "${support_level}" != "supported" && "${EXPERT}" != "yes" ]]; then + return 65 + fi + + desktop_element_available_for_arch "${desktop_element_path}" "${ARCH}" + if [[ $? -ne 0 ]]; then + return 66 + fi + else + return 64 + fi + + return 0 + +} + +if [[ $BUILD_DESKTOP == "yes" && -z $DESKTOP_ENVIRONMENT ]]; then + + desktop_environments_prepare_menu() { + for desktop_env_dir in "${DESKTOP_CONFIGS_DIR}/"*; do + local desktop_env_name=$(basename ${desktop_env_dir}) + local expert_infos="" + [[ "${EXPERT}" == "yes" ]] && expert_infos="[$(cat "${desktop_env_dir}/support" 2> /dev/null)]" + desktop_element_supported "${desktop_env_dir}" "${ARCH}" && options+=("${desktop_env_name}" "${desktop_env_name^} desktop environment ${expert_infos}") + done + } + + options=() + desktop_environments_prepare_menu + + if [[ "${options[0]}" == "" ]]; then + exit_with_error "No desktop environment seems to be available for your board ${BOARD} (ARCH : ${ARCH} - EXPERT : ${EXPERT})" + fi + + DESKTOP_ENVIRONMENT=$(show_menu "Choose a desktop environment" "$backtitle" "Select the default desktop environment to bundle with this image" "${options[@]}") + + unset options + + if [[ -z "${DESKTOP_ENVIRONMENT}" ]]; then + exit_with_error "No desktop environment selected..." + fi + +fi + +if [[ $BUILD_DESKTOP == "yes" ]]; then + # Expected environment variables : + # - options + # - ARCH + + desktop_environment_check_if_valid() { + + local error_msg="" + desktop_element_supported "${DESKTOP_ENVIRONMENT_DIRPATH}" "${ARCH}" + local retval=$? + + if [[ ${retval} == 0 ]]; then + return + elif [[ ${retval} == 64 ]]; then + error_msg+="Either the desktop environment ${DESKTOP_ENVIRONMENT} does not exist " + error_msg+="or the file ${DESKTOP_ENVIRONMENT_DIRPATH}/support is missing" + elif [[ ${retval} == 65 ]]; then + error_msg+="Only experts can build an image with the desktop environment \"${DESKTOP_ENVIRONMENT}\", since the Armbian team won't offer any support for it (EXPERT=${EXPERT})" + elif [[ ${retval} == 66 ]]; then + error_msg+="The desktop environment \"${DESKTOP_ENVIRONMENT}\" has no packages for your targeted board architecture (BOARD=${BOARD} ARCH=${ARCH}). " + error_msg+="The supported boards architectures are : " + error_msg+="$(cat "${DESKTOP_ENVIRONMENT_DIRPATH}/only_for")" + fi + + # supress error when cache is rebuilding + [[ -n "$ROOT_FS_CREATE_ONLY" ]] && exit 0 + + exit_with_error "${error_msg}" + } + + DESKTOP_ENVIRONMENT_DIRPATH="${DESKTOP_CONFIGS_DIR}/${DESKTOP_ENVIRONMENT}" + + desktop_environment_check_if_valid +fi + +if [[ $BUILD_DESKTOP == "yes" && -z $DESKTOP_ENVIRONMENT_CONFIG_NAME ]]; then + # FIXME Check for empty folders, just in case the current maintainer + # messed up + # Note, we could also ignore it and don't show anything in the previous + # menu, but that hides information and make debugging harder, which I + # don't like. Adding desktop environments as a maintainer is not a + # trivial nor common task. + + options=() + for configuration in "${DESKTOP_ENVIRONMENT_DIRPATH}/${DESKTOP_CONFIG_PREFIX}"*; do + config_filename=$(basename ${configuration}) + config_name=${config_filename#"${DESKTOP_CONFIG_PREFIX}"} + options+=("${config_filename}" "${config_name} configuration") + done + + DESKTOP_ENVIRONMENT_CONFIG_NAME=$(show_menu "Choose the desktop environment config" "$backtitle" "Select the configuration for this environment.\nThese are sourced from ${desktop_environment_config_dir}" "${options[@]}") + unset options + + if [[ -z $DESKTOP_ENVIRONMENT_CONFIG_NAME ]]; then + exit_with_error "No desktop configuration selected... Do you really want a desktop environment ?" + fi +fi + +if [[ $BUILD_DESKTOP == "yes" ]]; then + DESKTOP_ENVIRONMENT_PACKAGE_LIST_DIRPATH="${DESKTOP_ENVIRONMENT_DIRPATH}/${DESKTOP_ENVIRONMENT_CONFIG_NAME}" + DESKTOP_ENVIRONMENT_PACKAGE_LIST_FILEPATH="${DESKTOP_ENVIRONMENT_PACKAGE_LIST_DIRPATH}/packages" +fi + +# "-z ${VAR+x}" allows to check for unset variable +# Technically, someone might want to build a desktop with no additional +# appgroups. +if [[ $BUILD_DESKTOP == "yes" && -z ${DESKTOP_APPGROUPS_SELECTED+x} ]]; then + + options=() + for appgroup_path in "${DESKTOP_APPGROUPS_DIR}/"*; do + appgroup="$(basename "${appgroup_path}")" + options+=("${appgroup}" "${appgroup^}" off) + done + + DESKTOP_APPGROUPS_SELECTED=$(\ + show_select_menu \ + "Choose desktop softwares to add" \ + "$backtitle" \ + "Select which kind of softwares you'd like to add to your build" \ + "${options[@]}") + + DESKTOP_APPGROUPS_SELECTED=${DESKTOP_APPGROUPS_SELECTED//\"/} + + unset options +fi + +#exit_with_error 'Testing' + +# Expected variables +# - aggregated_content +# - potential_paths +# - separator +# Write to variables : +# - aggregated_content +aggregate_content() { + LOG_OUTPUT_FILE="${SRC}/output/${LOG_SUBPATH}/potential-paths.log" + echo -e "Potential paths :" >> "${LOG_OUTPUT_FILE}" + show_checklist_variables potential_paths + for filepath in ${potential_paths}; do + if [[ -f "${filepath}" ]]; then + echo -e "${filepath/"$EXTER"\//} yes" >> "${LOG_OUTPUT_FILE}" + aggregated_content+=$(cat "${filepath}") + aggregated_content+="${separator}" +# else +# echo -e "${filepath/"$EXTER"\//} no\n" >> "${LOG_OUTPUT_FILE}" + fi + + done + echo "" >> "${LOG_OUTPUT_FILE}" + unset LOG_OUTPUT_FILE +} + +# set unique mounting directory +MOUNT_UUID=$(uuidgen) +SDCARD="${SRC}/.tmp/rootfs-${MOUNT_UUID}" +MOUNT="${SRC}/.tmp/mount-${MOUNT_UUID}" +DESTIMG="${SRC}/.tmp/image-${MOUNT_UUID}" + # dropbear needs to be configured differently [[ $CRYPTROOT_ENABLE == yes && $RELEASE == xenial ]] && exit_with_error "Encrypted rootfs is not supported in Xenial" [[ $RELEASE == stretch && $CAN_BUILD_STRETCH != yes ]] && exit_with_error "Building Debian Stretch images with selected kernel is not supported" [[ $RELEASE == bionic && $CAN_BUILD_STRETCH != yes ]] && exit_with_error "Building Ubuntu Bionic images with selected kernel is not supported" -[[ $RELEASE == bionic && $(lsb_release -sc) == xenial ]] && exit_with_error "Building Ubuntu Bionic images requires a Bionic build host. Please upgrade your host or select a different target OS" +[[ $RELEASE == hirsute && $HOSTRELEASE == focal ]] && exit_with_error "Building Ubuntu Hirsute images requires Hirsute build host. Please upgrade your host or select a different target OS" [[ -n $ATFSOURCE && -z $ATF_USE_GCC ]] && exit_with_error "Error in configuration: ATF_USE_GCC is unset" [[ -z $UBOOT_USE_GCC ]] && exit_with_error "Error in configuration: UBOOT_USE_GCC is unset" @@ -127,174 +418,221 @@ BOOTCONFIG_VAR_NAME=BOOTCONFIG_${BRANCH^^} [[ -z $ATFPATCHDIR ]] && ATFPATCHDIR="atf-$LINUXFAMILY" [[ -z $KERNELPATCHDIR ]] && KERNELPATCHDIR="$LINUXFAMILY-$BRANCH" -if [[ $RELEASE == xenial || $RELEASE == bionic || $RELEASE == focal || $RELEASE == eoan ]]; then +if [[ "$RELEASE" =~ ^(xenial|bionic|focal|hirsute|impish|jammy)$ ]]; then DISTRIBUTION="Ubuntu" else DISTRIBUTION="Debian" fi -# Base system dependencies. Since adding MINIMAL_IMAGE we rely on "variant=minbase" which has very basic package set -DEBOOTSTRAP_LIST="locales gnupg ifupdown apt-utils apt-transport-https ca-certificates bzip2 console-setup cpio cron \ - dbus init initramfs-tools iputils-ping isc-dhcp-client kmod less libpam-systemd \ - linux-base logrotate netbase netcat-openbsd rsyslog systemd sudo ucf udev whiptail \ - wireless-regdb crda dmsetup rsync tzdata" +CLI_CONFIG_PATH="${EXTER}/config/cli/${RELEASE}" +DEBOOTSTRAP_CONFIG_PATH="${CLI_CONFIG_PATH}/debootstrap" -[[ $BUILD_DESKTOP == yes ]] && DEBOOTSTRAP_LIST+=" libgtk2.0-bin" - -# tab cleanup is mandatory -DEBOOTSTRAP_LIST=$(echo $DEBOOTSTRAP_LIST | sed -e 's,\\[trn],,g') - -# For minimal build different set of packages is needed -# Essential packages for minimal build -PACKAGE_LIST="bc cpufrequtils device-tree-compiler fping fake-hwclock psmisc chrony parted dialog \ - ncurses-term sysfsutils toilet figlet u-boot-tools usbutils openssh-server \ - nocache debconf-utils python3-apt" - -# Non-essential packages for minimal build -PACKAGE_LIST_ADDITIONAL="network-manager wireless-tools lsof htop mmc-utils wget nano sysstat net-tools resolvconf iozone3 jq libcrack2 cracklib-runtime curl" -[[ $RELEASE == xenial ]] && PACKAGE_LIST_ADDITIONAL="network-manager wireless-tools lsof htop wget nano sysstat net-tools resolvconf iozone3 jq libcrack2 cracklib-runtime curl" - -if [[ "$BUILD_MINIMAL" != "yes" ]]; then - # Essential packages - PACKAGE_LIST="$PACKAGE_LIST bridge-utils build-essential fbset \ - iw wpasupplicant sudo linux-base crda \ - wireless-regdb unattended-upgrades \ - console-setup unicode-data initramfs-tools \ - ca-certificates expect iptables automake html2text \ - bison flex libwrap0-dev libssl-dev libnl-3-dev libnl-genl-3-dev keyboard-configuration" - - - # Non-essential packages - PACKAGE_LIST_ADDITIONAL="$PACKAGE_LIST_ADDITIONAL alsa-utils btrfs-progs dosfstools iotop stress screen \ - ntfs-3g vim pciutils evtest pv libfuse2 libdigest-sha-perl \ - libproc-processtable-perl aptitude dnsutils f3 haveged hdparm rfkill vlan bash-completion \ - hostapd git ethtool unzip ifenslave libpam-systemd iperf3 \ - software-properties-common libnss-myhostname f2fs-tools avahi-autoipd iputils-arping qrencode sunxi-tools" +if [[ $? != 0 ]]; then + exit_with_error "The desktop environment ${DESKTOP_ENVIRONMENT} is not available for your architecture ${ARCH}" fi +AGGREGATION_SEARCH_ROOT_ABSOLUTE_DIRS=" +${EXTER}/config +${EXTER}/config/optional/_any_board/_config +${EXTER}/config/optional/architectures/${ARCH}/_config +${EXTER}/config/optional/families/${LINUXFAMILY}/_config +${EXTER}/config/optional/boards/${BOARD}/_config +${USERPATCHES_PATH} +" + +DEBOOTSTRAP_SEARCH_RELATIVE_DIRS=" +cli/_all_distributions/debootstrap +cli/${RELEASE}/debootstrap +" + +CLI_SEARCH_RELATIVE_DIRS=" +cli/_all_distributions/main +cli/${RELEASE}/main +" + +PACKAGES_SEARCH_ROOT_ABSOLUTE_DIRS=" +${EXTER}/packages +${EXTER}/config/optional/_any_board/_packages +${EXTER}/config/optional/architectures/${ARCH}/_packages +${EXTER}/config/optional/families/${LINUXFAMILY}/_packages +${EXTER}/config/optional/boards/${BOARD}/_packages +" + +DESKTOP_ENVIRONMENTS_SEARCH_RELATIVE_DIRS=" +desktop/_all_distributions/environments/_all_environments +desktop/_all_distributions/environments/${DESKTOP_ENVIRONMENT} +desktop/_all_distributions/environments/${DESKTOP_ENVIRONMENT}/${DESKTOP_ENVIRONMENT_CONFIG_NAME} +desktop/${RELEASE}/environments/_all_environments +desktop/${RELEASE}/environments/${DESKTOP_ENVIRONMENT} +desktop/${RELEASE}/environments/${DESKTOP_ENVIRONMENT}/${DESKTOP_ENVIRONMENT_CONFIG_NAME} +" + +DESKTOP_APPGROUPS_SEARCH_RELATIVE_DIRS=" +desktop/_all_distributions/appgroups +desktop/_all_distributions/environments/${DESKTOP_ENVIRONMENT}/appgroups +desktop/${RELEASE}/appgroups +desktop/${RELEASE}/environments/${DESKTOP_ENVIRONMENT}/appgroups +" + +get_all_potential_paths() { + local root_dirs="${AGGREGATION_SEARCH_ROOT_ABSOLUTE_DIRS}" + local rel_dirs="${1}" + local sub_dirs="${2}" + local looked_up_subpath="${3}" + for root_dir in ${root_dirs}; do + for rel_dir in ${rel_dirs}; do + for sub_dir in ${sub_dirs}; do + potential_paths+="${root_dir}/${rel_dir}/${sub_dir}/${looked_up_subpath} " + done + done + done + # for ppath in ${potential_paths}; do + # echo "Checking for ${ppath}" + # if [[ -f "${ppath}" ]]; then + # echo "OK !|" + # else + # echo "Nope|" + # fi + # done +} + +# Environment variables expected : +# - aggregated_content +# Arguments : +# 1. File to look up in each directory +# 2. The separator to add between each concatenated file +# 3. Relative directories paths added to ${3} +# 4. Relative directories paths added to ${4} +# +# The function will basically generate a list of potential paths by +# generating all the potential paths combinations leading to the +# looked up file +# ${AGGREGATION_SEARCH_ROOT_ABSOLUTE_DIRS}/${3}/${4}/${1} +# Then it will concatenate the content of all the available files +# into ${aggregated_content} +# +# TODO : +# ${4} could be removed by just adding the appropriate paths to ${3} +# dynamically for each case +# (debootstrap, cli, desktop environments, desktop appgroups, ...) + +aggregate_all_root_rel_sub() { + local separator="${2}" + + local potential_paths="" + get_all_potential_paths "${3}" "${4}" "${1}" + + aggregate_content +} + +aggregate_all_debootstrap() { + local sub_dirs_to_check=". " + if [[ ! -z "${SELECTED_CONFIGURATION+x}" ]]; then + sub_dirs_to_check+="config_${SELECTED_CONFIGURATION}" + fi + aggregate_all_root_rel_sub "${1}" "${2}" "${DEBOOTSTRAP_SEARCH_RELATIVE_DIRS}" "${sub_dirs_to_check}" +} + +aggregate_all_cli() { + local sub_dirs_to_check=". " + if [[ ! -z "${SELECTED_CONFIGURATION+x}" ]]; then + sub_dirs_to_check+="config_${SELECTED_CONFIGURATION}" + fi + aggregate_all_root_rel_sub "${1}" "${2}" "${CLI_SEARCH_RELATIVE_DIRS}" "${sub_dirs_to_check}" +} + +aggregate_all_desktop() { + aggregate_all_root_rel_sub "${1}" "${2}" "${DESKTOP_ENVIRONMENTS_SEARCH_RELATIVE_DIRS}" "." + aggregate_all_root_rel_sub "${1}" "${2}" "${DESKTOP_APPGROUPS_SEARCH_RELATIVE_DIRS}" "${DESKTOP_APPGROUPS_SELECTED}" +} + +one_line() { + local aggregate_func_name="${1}" + local aggregated_content="" + shift 1 + $aggregate_func_name "${@}" + cleanup_list aggregated_content +} + +DEBOOTSTRAP_LIST="$(one_line aggregate_all_debootstrap "packages" " ")" +DEBOOTSTRAP_COMPONENTS="$(one_line aggregate_all_debootstrap "components" " ")" +DEBOOTSTRAP_COMPONENTS="${DEBOOTSTRAP_COMPONENTS// /,}" +PACKAGE_LIST="$(one_line aggregate_all_cli "packages" " ")" +PACKAGE_LIST_ADDITIONAL="$(one_line aggregate_all_cli "packages.additional" " ")" + +LOG_OUTPUT_FILE="$SRC/output/${LOG_SUBPATH}/debootstrap-list.log" +show_checklist_variables "DEBOOTSTRAP_LIST DEBOOTSTRAP_COMPONENTS PACKAGE_LIST PACKAGE_LIST_ADDITIONAL PACKAGE_LIST_UNINSTALL" # Dependent desktop packages -PACKAGE_LIST_DESKTOP="xserver-xorg xserver-xorg-video-fbdev gvfs-backends gvfs-fuse xfonts-base xinit \ - x11-xserver-utils xfce4 lxtask xfce4-terminal thunar-volman gtk2-engines gtk2-engines-murrine gtk2-engines-pixbuf \ - libgtk2.0-bin network-manager-gnome xfce4-notifyd gnome-keyring gcr libgck-1-0 p11-kit pasystray pavucontrol \ - pulseaudio pavumeter bluez bluez-tools pulseaudio-module-bluetooth blueman libpam-gnome-keyring \ - libgl1-mesa-dri policykit-1 profile-sync-daemon gnome-orca numix-gtk-theme synaptic apt-xapian-index lightdm lightdm-gtk-greeter" - - -# Recommended desktop packages -PACKAGE_LIST_DESKTOP_RECOMMENDS="galculator hexchat xfce4-screenshooter network-manager-openvpn-gnome mpv fbi \ - cups-pk-helper cups geany atril xarchiver" - -# Full desktop packages -PACKAGE_LIST_DESKTOP_FULL="libreoffice libreoffice-style-tango meld remmina kazam avahi-daemon transmission" - -# Packages installed before desktop. -PACKAGE_LIST_PREDEPENDS="" - -# Release specific packages -case $RELEASE in - - xenial) - # Dependent desktop packages - PACKAGE_LIST_DESKTOP="xserver-xorg xserver-xorg-video-fbdev gvfs-backends gvfs-fuse xfonts-base xinit \ - x11-xserver-utils xfce4 lxtask xfce4-terminal thunar-volman gtk2-engines gtk2-engines-murrine gtk2-engines-pixbuf \ - libgtk2.0-bin network-manager-gnome xfce4-notifyd gnome-keyring gcr libgck-1-0 p11-kit pasystray pavucontrol \ - pulseaudio pavumeter bluez bluez-tools pulseaudio-module-bluetooth blueman libpam-gnome-keyring \ - libgl1-mesa-dri policykit-1 gnome-orca numix-gtk-theme synaptic apt-xapian-index lightdm lightdm-gtk-greeter xfce4-power-manager" - - DEBOOTSTRAP_COMPONENTS="main" - DEBOOTSTRAP_LIST+=" btrfs-tools" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db sysbench command-not-found" - PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs libgnome2-perl \ - pulseaudio-module-gconf onboard" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser language-selector-gnome system-config-printer-common \ - system-config-printer-gnome leafpad mirage" - PACKAGE_LIST_DESKTOP_FULL+=" thunderbird" - ;; - - stretch) - DEBOOTSTRAP_COMPONENTS="main" - DEBOOTSTRAP_LIST+=" rng-tools" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr sysbench command-not-found" - PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs dbus-x11 libgnome2-perl pulseaudio-module-gconf onboard" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium system-config-printer-common system-config-printer leafpad mirage" - PACKAGE_LIST_DESKTOP_FULL+=" thunderbird" - ;; - - bionic) - DEBOOTSTRAP_COMPONENTS="main,universe" - DEBOOTSTRAP_LIST+=" rng-tools fdisk" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher command-not-found" - PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 libgnome2-perl pulseaudio-module-gconf onboard" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser system-config-printer-common system-config-printer \ - language-selector-gnome leafpad mirage" - PACKAGE_LIST_DESKTOP_FULL+=" thunderbird" - ;; - - buster) - DEBOOTSTRAP_COMPONENTS="main" - DEBOOTSTRAP_LIST+=" rng-tools fdisk" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher command-not-found" - PACKAGE_LIST_DESKTOP+=" paprefs dbus-x11 numix-icon-theme onboard" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium system-config-printer-common system-config-printer mirage" - PACKAGE_LIST_DESKTOP_FULL+=" thunderbird" - ;; - - bullseye) - DEBOOTSTRAP_COMPONENTS="main" - DEBOOTSTRAP_LIST+=" haveged fdisk" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher command-not-found" - PACKAGE_LIST_DESKTOP+=" paprefs dbus-x11 numix-icon-theme" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" firefox-esr system-config-printer-common system-config-printer" - PACKAGE_LIST_DESKTOP_FULL+="" - ;; - - - focal) - DEBOOTSTRAP_COMPONENTS="main,universe" - DEBOOTSTRAP_LIST+=" rng-tools fdisk" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher" - PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 pulseaudio-module-gsettings onboard" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" firefox system-config-printer-common system-config-printer \ - language-selector-gnome viewnior" - PACKAGE_LIST_DESKTOP_FULL+=" thunderbird" - PACKAGE_LIST_PREDEPENDS="policykit-1-gnome notification-daemon" - ;; - - eoan) - DEBOOTSTRAP_COMPONENTS="main,universe" - DEBOOTSTRAP_LIST+=" rng-tools fdisk" - [[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher" - PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 pulseaudio-module-gsettings onboard" - PACKAGE_LIST_DESKTOP_RECOMMENDS+=" firefox system-config-printer-common system-config-printer \ - language-selector-gnome mirage" - PACKAGE_LIST_DESKTOP_FULL+=" thunderbird" - PACKAGE_LIST_PREDEPENDS="policykit-1-gnome notification-daemon" - ;; - -esac +# Myy : Sources packages from file here +# Myy : FIXME Rename aggregate_all to aggregate_all_desktop +if [[ $BUILD_DESKTOP == "yes" ]]; then + PACKAGE_LIST_DESKTOP+="$(one_line aggregate_all_desktop "packages" " ")" + echo -e "\nGroups selected ${DESKTOP_APPGROUPS_SELECTED} -> PACKAGES :" >> "${LOG_OUTPUT_FILE}" + show_checklist_variables PACKAGE_LIST_DESKTOP +fi +unset LOG_OUTPUT_FILE DEBIAN_MIRROR='deb.debian.org/debian' DEBIAN_SECURTY='security.debian.org/' UBUNTU_MIRROR='ports.ubuntu.com/' -if [[ $DOWNLOAD_MIRROR == china ]] ; then - DEBIAN_MIRROR='mirrors.tuna.tsinghua.edu.cn/debian' - DEBIAN_SECURTY='mirrors.tuna.tsinghua.edu.cn/debian-security' - UBUNTU_MIRROR='mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/' +if [[ $DOWNLOAD_MIRROR == "china" ]] ; then + + if [[ ${CHINA_DOWNLOAD_MIRROR} == tsinghua ]]; then + DEBIAN_MIRROR='mirrors.tuna.tsinghua.edu.cn/debian' + DEBIAN_SECURTY='mirrors.tuna.tsinghua.edu.cn/debian-security' + UBUNTU_MIRROR='mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/' + fi + + if [[ ${CHINA_DOWNLOAD_MIRROR} == huawai ]]; then + DEBIAN_MIRROR='repo.huaweicloud.com/debian' + DEBIAN_SECURTY='repo.huaweicloud.com/debian-security' + UBUNTU_MIRROR='repo.huaweicloud.com/ubuntu-ports/' + fi fi -# For user override +if [[ $DOWNLOAD_MIRROR == "bfsu" ]] ; then + DEBIAN_MIRROR='mirrors.bfsu.edu.cn/debian' + DEBIAN_SECURTY='mirrors.bfsu.edu.cn/debian-security' + UBUNTU_MIRROR='mirrors.bfsu.edu.cn/ubuntu-ports/' +fi + +if [[ "${ARCH}" == "amd64" ]]; then + UBUNTU_MIRROR='archive.ubuntu.com/ubuntu' # ports are only for non-amd64, of course. +fi + +# don't use mirrors that throws garbage on 404 +if [[ -z ${ARMBIAN_MIRROR} ]]; then + while true; do + + ARMBIAN_MIRROR=$(wget -SO- -T 1 -t 1 https://redirect.armbian.com 2>&1 | egrep -i "Location" | awk '{print $2}' | head -1) + [[ ${ARMBIAN_MIRROR} != *armbian.hosthatch* ]] && break + + done +fi + +# For (late) user override. +# Notice: it is too late to define hook functions or add extensions in lib.config, since the extension initialization already ran by now. +# in case the user tries to use them in lib.config, hopefully they'll be detected as "wishful hooking" and the user will be wrn'ed. if [[ -f $USERPATCHES_PATH/lib.config ]]; then display_alert "Using user configuration override" "$USERPATCHES_PATH/lib.config" "info" source "$USERPATCHES_PATH"/lib.config fi -if [[ "$(type -t user_config)" == "function" ]]; then - display_alert "Invoke function with user override" "user_config" "info" - user_config -fi +call_extension_method "user_config" << 'USER_CONFIG' +*Invoke function with user override* +Allows for overriding configuration values set anywhere else. +It is called after sourcing the `lib.config` file if it exists, +but before assembling any package lists. +USER_CONFIG + +call_extension_method "extension_prepare_config" << 'EXTENSION_PREPARE_CONFIG' +*allow extensions to prepare their own config, after user config is done* +Implementors should preserve variable values pre-set, but can default values an/or validate them. +This runs *after* user_config. Don't change anything not coming from other variables or meant to be configured by the user. +EXTENSION_PREPARE_CONFIG # apt-cacher-ng mirror configurarion if [[ $DISTRIBUTION == Ubuntu ]]; then @@ -307,25 +645,75 @@ fi # Build final package list after possible override PACKAGE_LIST="$PACKAGE_LIST $PACKAGE_LIST_RELEASE $PACKAGE_LIST_ADDITIONAL" -[[ $BUILD_DESKTOP == yes ]] && PACKAGE_LIST="$PACKAGE_LIST $PACKAGE_LIST_DESKTOP $PACKAGE_LIST_DESKTOP_RECOMMENDS" +PACKAGE_MAIN_LIST="$(cleanup_list PACKAGE_LIST)" + +[[ $BUILD_DESKTOP == yes ]] && PACKAGE_LIST="$PACKAGE_LIST $PACKAGE_LIST_DESKTOP" +PACKAGE_LIST="$(cleanup_list PACKAGE_LIST)" # remove any packages defined in PACKAGE_LIST_RM in lib.config +aggregated_content="${PACKAGE_LIST_RM} " +aggregate_all_cli "packages.remove" " " +aggregate_all_desktop "packages.remove" " " +PACKAGE_LIST_RM="$(cleanup_list aggregated_content)" +unset aggregated_content + +aggregated_content="" +aggregate_all_cli "packages.uninstall" " " +aggregate_all_desktop "packages.uninstall" " " +PACKAGE_LIST_UNINSTALL="$(cleanup_list aggregated_content)" +unset aggregated_content + + if [[ -n $PACKAGE_LIST_RM ]]; then - PACKAGE_LIST=$(sed -r "s/\b($(tr ' ' '|' <<< ${PACKAGE_LIST_RM}))\b//g" <<< "${PACKAGE_LIST}") + display_alert "Package remove list ${PACKAGE_LIST_RM}" + # Turns out that \b can be tricked by dashes. + # So if you remove mesa-utils but still want to install "mesa-utils-extra" + # a "\b(mesa-utils)\b" filter will convert "mesa-utils-extra" to "-extra". + # \W is not tricked by this but consumes the surrounding spaces, so we + # replace the occurence by one space, to avoid sticking the next word to + # the previous one after consuming the spaces. + DEBOOTSTRAP_LIST=$(sed -r "s/\W($(tr ' ' '|' <<< ${PACKAGE_LIST_RM}))\W/ /g" <<< " ${DEBOOTSTRAP_LIST} ") + PACKAGE_LIST=$(sed -r "s/\W($(tr ' ' '|' <<< ${PACKAGE_LIST_RM}))\W/ /g" <<< " ${PACKAGE_LIST} ") + PACKAGE_MAIN_LIST=$(sed -r "s/\W($(tr ' ' '|' <<< ${PACKAGE_LIST_RM}))\W/ /g" <<< " ${PACKAGE_MAIN_LIST} ") + if [[ $BUILD_DESKTOP == "yes" ]]; then + PACKAGE_LIST_DESKTOP=$(sed -r "s/\W($(tr ' ' '|' <<< ${PACKAGE_LIST_RM}))\W/ /g" <<< " ${PACKAGE_LIST_DESKTOP} ") + # Removing double spaces... AGAIN, since we might have used a sed on them + # Do not quote the variables. This would defeat the trick. + PACKAGE_LIST_DESKTOP="$(echo ${PACKAGE_LIST_DESKTOP})" + fi + + # Removing double spaces... AGAIN, since we might have used a sed on them + # Do not quote the variables. This would defeat the trick. + DEBOOTSTRAP_LIST="$(echo ${DEBOOTSTRAP_LIST})" + PACKAGE_LIST="$(echo ${PACKAGE_LIST})" + PACKAGE_MAIN_LIST="$(echo ${PACKAGE_MAIN_LIST})" fi + +LOG_OUTPUT_FILE="$SRC/output/${LOG_SUBPATH}/debootstrap-list.log" +echo -e "\nVariables after manual configuration" >>$LOG_OUTPUT_FILE +show_checklist_variables "DEBOOTSTRAP_COMPONENTS DEBOOTSTRAP_LIST PACKAGE_LIST PACKAGE_MAIN_LIST" +unset LOG_OUTPUT_FILE + # Give the option to configure DNS server used in the chroot during the build process [[ -z $NAMESERVER ]] && NAMESERVER="1.0.0.1" # default is cloudflare alternate +call_extension_method "post_aggregate_packages" "user_config_post_aggregate_packages" << 'POST_AGGREGATE_PACKAGES' +*For final user override, using a function, after all aggregations are done* +Called after aggregating all package lists, before the end of `compilation.sh`. +Packages will still be installed after this is called, so it is the last chance +to confirm or change any packages. +POST_AGGREGATE_PACKAGES + # debug -cat <<-EOF >> "${DEST}"/debug/output.log +cat <<-EOF >> "${DEST}"/${LOG_SUBPATH}/output.log ## BUILD SCRIPT ENVIRONMENT Repository: $REPOSITORY_URL Version: $REPOSITORY_COMMIT -Host OS: $(lsb_release -sc) +Host OS: $HOSTRELEASE Host arch: $(dpkg --print-architecture) Host system: $(uname -a) Virtualization type: $(systemd-detect-virt) @@ -347,6 +735,8 @@ Board: $BOARD Branch: $BRANCH Minimal: $BUILD_MINIMAL Desktop: $BUILD_DESKTOP +Desktop Environment: $DESKTOP_ENVIRONMENT +Software groups: $DESKTOP_APPGROUPS_SELECTED Kernel configuration: Repository: $KERNELSOURCE @@ -358,12 +748,9 @@ Repository: $BOOTSOURCE Branch: $BOOTBRANCH Config file: $BOOTCONFIG -Partitioning configuration: -Root partition type: $ROOTFS_TYPE -Boot partition type: ${BOOTFS_TYPE:-(none)} -User provided boot partition size: ${BOOTSIZE:-0} -Offset: $OFFSET +Partitioning configuration: $IMAGE_PARTITION_TABLE offset: $OFFSET +Boot partition type: ${BOOTFS_TYPE:-(none)} ${BOOTSIZE:+"(${BOOTSIZE} MB)"} +Root partition type: $ROOTFS_TYPE ${FIXED_IMAGE_SIZE:+"(${FIXED_IMAGE_SIZE} MB)"} -CPU configuration: -$CPUMIN - $CPUMAX with $GOVERNOR +CPU configuration: $CPUMIN - $CPUMAX with $GOVERNOR EOF diff --git a/scripts/debootstrap.sh b/scripts/debootstrap.sh index 241de4e..4ca5ef7 100755 --- a/scripts/debootstrap.sh +++ b/scripts/debootstrap.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,6 +8,7 @@ # Functions: + # debootstrap_ng # create_rootfs_cache # prepare_partitions @@ -16,11 +17,12 @@ + # debootstrap_ng # debootstrap_ng() { - display_alert "Starting rootfs and image building process for" "$BOARD $BRANCH $RELEASE" "info" + display_alert "Starting rootfs and image building process for" "${BRANCH} ${BOARD} ${RELEASE} ${DESKTOP_APPGROUPS_SELECTED:-null} ${DESKTOP_ENVIRONMENT:-null} ${BUILD_MINIMAL}" "info" [[ $ROOTFS_TYPE != ext4 ]] && display_alert "Assuming $BOARD $BRANCH kernel supports $ROOTFS_TYPE" "" "wrn" @@ -32,10 +34,9 @@ debootstrap_ng() mkdir -p $SDCARD $MOUNT $DEST/images $EXTER/cache/rootfs # stage: verify tmpfs configuration and mount - # default maximum size for tmpfs mount is 1/2 of available RAM - # CLI needs ~1.2GiB+ (Xenial CLI), Desktop - ~2.8GiB+ (Xenial Desktop w/o HW acceleration) - # calculate and set tmpfs mount to use 2/3 of available RAM - local phymem=$(( $(awk '/MemTotal/ {print $2}' /proc/meminfo) / 1024 * 2 / 3 )) # MiB + # CLI needs ~1.5GiB, desktop - ~3.5GiB + # calculate and set tmpfs mount to use 9/10 of available RAM+SWAP + local phymem=$(( (($(awk '/MemTotal/ {print $2}' /proc/meminfo) + $(awk '/SwapTotal/ {print $2}' /proc/meminfo))) / 1024 * 9 / 10 )) # MiB if [[ $BUILD_DESKTOP == yes ]]; then local tmpfs_max_size=3500; else local tmpfs_max_size=1500; fi # MiB if [[ $FORCE_USE_RAMDISK == no ]]; then local use_tmpfs=no elif [[ $FORCE_USE_RAMDISK == yes || $phymem -gt $tmpfs_max_size ]]; then @@ -48,6 +49,11 @@ debootstrap_ng() # stage: prepare basic rootfs: unpack cache or create from scratch create_rootfs_cache + call_extension_method "pre_install_distribution_specific" "config_pre_install_distribution_specific" << 'PRE_INSTALL_DISTRIBUTION_SPECIFIC' +*give config a chance to act before install_distribution_specific* +Called after `create_rootfs_cache` (_prepare basic rootfs: unpack cache or create from scratch_) but before `install_distribution_specific` (_install distribution and board specific applications_). +PRE_INSTALL_DISTRIBUTION_SPECIFIC + # stage: install kernel and u-boot packages # install distribution and board specific applications @@ -57,12 +63,19 @@ debootstrap_ng() # install locally built packages or install pre-built packages from orangepi [[ $EXTERNAL_NEW == compile || $EXTERNAL_NEW == prebuilt ]] && chroot_installpackages_local + ## install from apt.armbian.com + #[[ $EXTERNAL_NEW == prebuilt ]] && chroot_installpackages "yes" + # stage: user customization script # NOTE: installing too many packages may fill tmpfs mount customize_image + # remove packages that are no longer needed. Since we have intrudoced uninstall feature, we might want to clean things that are no longer needed + display_alert "No longer needed packages" "purge" "info" + chroot $SDCARD /bin/bash -c "apt-get autoremove -y" >/dev/null 2>&1 + # create list of installed packages for debug purposes - chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > $DEST/debug/installed-packages-${RELEASE}$([[ ${BUILD_MINIMAL} == yes ]] && echo "-minimal")$([[ ${BUILD_DESKTOP} == yes ]] && echo "-desktop").list 2>&1 + chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > $DEST/${LOG_SUBPATH}/installed-packages-${RELEASE}$([[ ${BUILD_MINIMAL} == yes ]] && echo "-minimal")$([[ ${BUILD_DESKTOP} == yes ]] && echo "-desktop").list 2>&1 # clean up / prepare for making the image umount_chroot "$SDCARD" @@ -100,7 +113,10 @@ create_rootfs_cache() { local packages_hash=$(get_package_list_hash "$ROOTFSCACHE_VERSION") - local cache_type=$(if [[ ${BUILD_DESKTOP} == yes ]]; then echo "desktop"; elif [[ ${BUILD_MINIMAL} == yes ]]; then echo "minimal"; else echo "cli";fi) + local cache_type="cli" + [[ ${BUILD_DESKTOP} == yes ]] && local cache_type="xfce-desktop" + [[ -n ${DESKTOP_ENVIRONMENT} ]] && local cache_type="${DESKTOP_ENVIRONMENT}" + [[ ${BUILD_MINIMAL} == yes ]] && local cache_type="minimal" local cache_name=${RELEASE}-${cache_type}-${ARCH}.$packages_hash.tar.lz4 local cache_fname=${EXTER}/cache/rootfs/${cache_name} local display_name=${RELEASE}-${cache_type}-${ARCH}.${packages_hash:0:3}...${packages_hash:29}.tar.lz4 @@ -128,15 +144,23 @@ create_rootfs_cache() # fancy progress bars [[ -z $OUTPUT_DIALOG ]] && local apt_extra_progress="--show-progress -o DPKG::Progress-Fancy=1" + # Ok so for eval+PIPESTATUS. + # Try this on your bash shell: + # ONEVAR="testing" eval 'bash -c "echo value once $ONEVAR && false && echo value twice $ONEVAR"' '| grep value' '| grep value' ; echo ${PIPESTATUS[*]} + # Notice how PIPESTATUS has only one element. and it is always true, although we failed explicitly with false in the middle of the bash. + # That is because eval itself is considered a single command, no matter how many pipes you put in there, you'll get a single value, the return code of the LAST pipe. + # Lets export the value of the pipe inside eval so we know outside what happened: + # ONEVAR="testing" eval 'bash -e -c "echo value once $ONEVAR && false && echo value twice $ONEVAR"' '| grep value' '| grep value' ';EVALPIPE=(${PIPESTATUS[@]})' ; echo ${EVALPIPE[*]} display_alert "Installing base system" "Stage 1/2" "info" + cd $SDCARD # this will prevent error sh: 0: getcwd() failed eval 'debootstrap --variant=minbase --include=${DEBOOTSTRAP_LIST// /,} ${PACKAGE_LIST_EXCLUDE:+ --exclude=${PACKAGE_LIST_EXCLUDE// /,}} \ - --arch=$ARCH --components=${DEBOOTSTRAP_COMPONENTS} --foreign $RELEASE $SDCARD/ $apt_mirror' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ + --arch=$ARCH --components=${DEBOOTSTRAP_COMPONENTS} $DEBOOTSTRAP_OPTION --foreign $RELEASE $SDCARD/ $apt_mirror' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Debootstrap (stage 1/2)..." $TTY_Y $TTY_X'} \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' - [[ ${PIPESTATUS[0]} -ne 0 || ! -f $SDCARD/debootstrap/debootstrap ]] && exit_with_error "Debootstrap base system first stage failed" + [[ ${EVALPIPE[0]} -ne 0 || ! -f $SDCARD/debootstrap/debootstrap ]] && exit_with_error "Debootstrap base system for ${BRANCH} ${BOARD} ${RELEASE} ${DESKTOP_APPGROUPS_SELECTED} ${DESKTOP_ENVIRONMENT} ${BUILD_MINIMAL} first stage failed" cp /usr/bin/$QEMU_BINARY $SDCARD/usr/bin/ @@ -144,19 +168,20 @@ create_rootfs_cache() cp /usr/share/keyrings/*-archive-keyring.gpg $SDCARD/usr/share/keyrings/ display_alert "Installing base system" "Stage 2/2" "info" - eval 'chroot $SDCARD /bin/bash -c "/debootstrap/debootstrap --second-stage"' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "/debootstrap/debootstrap --second-stage"' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Debootstrap (stage 2/2)..." $TTY_Y $TTY_X'} \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' - [[ ${PIPESTATUS[0]} -ne 0 || ! -f $SDCARD/bin/bash ]] && exit_with_error "Debootstrap base system second stage failed" + [[ ${EVALPIPE[0]} -ne 0 || ! -f $SDCARD/bin/bash ]] && exit_with_error "Debootstrap base system for ${BRANCH} ${BOARD} ${RELEASE} ${DESKTOP_APPGROUPS_SELECTED} ${DESKTOP_ENVIRONMENT} ${BUILD_MINIMAL} second stage failed" mount_chroot "$SDCARD" + display_alert "Diverting" "initctl/start-stop-daemon" "info" # policy-rc.d script prevents starting or reloading services during image creation printf '#!/bin/sh\nexit 101' > $SDCARD/usr/sbin/policy-rc.d - chroot $SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/initctl" - chroot $SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/start-stop-daemon" + LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/initctl" &> /dev/null + LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/start-stop-daemon" &> /dev/null printf '#!/bin/sh\necho "Warning: Fake start-stop-daemon called, doing nothing"' > $SDCARD/sbin/start-stop-daemon printf '#!/bin/sh\necho "Warning: Fake initctl called, doing nothing"' > $SDCARD/sbin/initctl chmod 755 $SDCARD/usr/sbin/policy-rc.d @@ -174,53 +199,114 @@ create_rootfs_cache() if [[ -f $SDCARD/etc/default/console-setup ]]; then sed -e 's/CHARMAP=.*/CHARMAP="UTF-8"/' -e 's/FONTSIZE=.*/FONTSIZE="8x16"/' \ -e 's/CODESET=.*/CODESET="guess"/' -i $SDCARD/etc/default/console-setup - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "setupcon --save"' + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "setupcon --save --force"' fi # stage: create apt-get sources list create_sources_list "$RELEASE" "$SDCARD/" - # add armhf arhitecture to arm64 - [[ $ARCH == arm64 ]] && eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "dpkg --add-architecture armhf"' + # add armhf arhitecture to arm64, unless configured not to do so. + if [[ "a${ARMHF_ARCH}" != "askip" ]]; then + [[ $ARCH == arm64 ]] && eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "dpkg --add-architecture armhf"' + fi # this should fix resolvconf installation failure in some cases chroot $SDCARD /bin/bash -c 'echo "resolvconf resolvconf/linkify-resolvconf boolean false" | debconf-set-selections' # stage: update packages list display_alert "Updating package list" "$RELEASE" "info" - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "apt-get -q -y $apt_extra update"' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "apt-get -q -y $apt_extra update"' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Updating package lists..." $TTY_Y $TTY_X'} \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' - #[[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Updating package lists failed" + [[ ${EVALPIPE[0]} -ne 0 ]] && display_alert "Updating package lists" "failed" "wrn" # stage: upgrade base packages from xxx-updates and xxx-backports repository branches display_alert "Upgrading base packages" "Orange Pi" "info" - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ $apt_extra $apt_extra_progress upgrade"' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Upgrading base packages..." $TTY_Y $TTY_X'} \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' - [[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Upgrading base packages failed" + # Myy: Dividing the desktop packages installation steps into multiple + # ones. We first install the "ADDITIONAL_PACKAGES" in order to get + # access to software-common-properties installation. + # THEN we add the APT sources and install the Desktop packages. + # TODO : Find a way to add APT sources WITHOUT software-common-properties + + [[ ${EVALPIPE[0]} -ne 0 ]] && display_alert "Upgrading base packages" "failed" "wrn" # stage: install additional packages - display_alert "Installing packages for" "Orange Pi" "info" - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ - $apt_extra $apt_extra_progress --no-install-recommends install $PACKAGE_LIST"' \ - ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ - ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Installing Orange Pi system..." $TTY_Y $TTY_X'} \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + display_alert "Installing the main packages for" "Orange Pi" "info" + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ + $apt_extra $apt_extra_progress --no-install-recommends install $PACKAGE_MAIN_LIST"' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ + ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Installing Orange Pi main packages..." $TTY_Y $TTY_X'} \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' - [[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Installation of Orange Pi packages failed" + [[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Installation of Orange Pi main packages for ${BRANCH} ${BOARD} ${RELEASE} ${DESKTOP_APPGROUPS_SELECTED} ${DESKTOP_ENVIRONMENT} ${BUILD_MINIMAL} failed" + + if [[ $BUILD_DESKTOP == "yes" ]]; then + # FIXME Myy : Are we keeping this only for Desktop users, + # or should we extend this to CLI users too ? + # There might be some clunky boards that require Debian packages from + # specific repos... + display_alert "Adding apt sources for Desktop packages" + add_desktop_package_sources + + local apt_desktop_install_flags="" + if [[ ! -z ${DESKTOP_APT_FLAGS_SELECTED+x} ]]; then + for flag in ${DESKTOP_APT_FLAGS_SELECTED}; do + apt_desktop_install_flags+=" --install-${flag}" + done + else + # Myy : Using the previous default option, if the variable isn't defined + # And ONLY if it's not defined ! + apt_desktop_install_flags+=" --no-install-recommends" + fi + + display_alert "Installing the desktop packages for" "Orange Pi" "info" + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ + $apt_extra $apt_extra_progress install ${apt_desktop_install_flags} $PACKAGE_LIST_DESKTOP"' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ + ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Installing Orange Pi desktop packages..." $TTY_Y $TTY_X'} \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' + + [[ ${PIPESTATUS[0]} -ne 0 ]] && exit_with_error "Installation of Orange Pi desktop packages for ${BRANCH} ${BOARD} ${RELEASE} ${DESKTOP_APPGROUPS_SELECTED} ${DESKTOP_ENVIRONMENT} ${BUILD_MINIMAL} failed" + fi + + # Remove packages from packages.uninstall + + display_alert "Uninstall packages" "$PACKAGE_LIST_UNINSTALL" "info" + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "DEBIAN_FRONTEND=noninteractive apt-get -y -qq \ + $apt_extra $apt_extra_progress purge $PACKAGE_LIST_UNINSTALL"' \ + ${PROGRESS_LOG_TO_FILE:+' >> $DEST/${LOG_SUBPATH}/debootstrap.log'} \ + ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Removing packages.uninstall packages..." $TTY_Y $TTY_X'} \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' + + [[ ${EVALPIPE[0]} -ne 0 ]] && exit_with_error "Installation of Orange Pi packages failed" + + # stage: purge residual packages + display_alert "Purging residual packages for" "Orange Pi" "info" + PURGINGPACKAGES=$(chroot $SDCARD /bin/bash -c "dpkg -l | grep \"^rc\" | awk '{print \$2}' | tr \"\n\" \" \"") + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -e -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ + $apt_extra $apt_extra_progress remove --purge $PURGINGPACKAGES"' \ + ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \ + ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Purging residual Orange Pi packages..." $TTY_Y $TTY_X'} \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ';EVALPIPE=(${PIPESTATUS[@]})' + + [[ ${EVALPIPE[0]} -ne 0 ]] && exit_with_error "Purging of residual Orange Pi packages failed" # stage: remove downloaded packages - chroot $SDCARD /bin/bash -c "apt clean" + chroot $SDCARD /bin/bash -c "apt-get -y autoremove; apt-get clean" # DEBUG: print free space - #echo -e "\nFree space:" - #eval 'df -h' ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} + local freespace=$(LC_ALL=C df -h) + echo $freespace >> $DEST/${LOG_SUBPATH}/debootstrap.log + display_alert "Free SD cache" "$(echo -e "$freespace" | grep $SDCARD | awk '{print $5}')" "info" + display_alert "Mount point" "$(echo -e "$freespace" | grep $MOUNT | head -1 | awk '{print $5}')" "info" # create list of installed packages for debug purposes chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > ${cache_fname}.list 2>&1 @@ -228,7 +314,7 @@ create_rootfs_cache() # creating xapian index that synaptic runs faster if [[ $BUILD_DESKTOP == yes ]]; then display_alert "Recreating Synaptic search index" "Please wait" "info" - chroot $SDCARD /bin/bash -c "/usr/sbin/update-apt-xapian-index -u" + chroot $SDCARD /bin/bash -c "[[ -f /usr/sbin/update-apt-xapian-index ]] && /usr/sbin/update-apt-xapian-index -u" fi # this is needed for the build process later since resolvconf generated file in /run is not saved @@ -243,38 +329,31 @@ create_rootfs_cache() umount_chroot "$SDCARD" tar cp --xattrs --directory=$SDCARD/ --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ - --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $SDCARD/ | cut -f1) -N "$display_name" | lz4 -c > $cache_fname + --exclude='./sys/*' --exclude='./home/*' --exclude='./root/*' . | pv -p -b -r -s $(du -sb $SDCARD/ | cut -f1) -N "$display_name" | lz4 -5 -c > $cache_fname # sign rootfs cache archive that it can be used for web cache once. Internal purposes - if [[ -n $GPG_PASS ]]; then - echo $GPG_PASS | gpg --passphrase-fd 0 --armor --detach-sign --pinentry-mode loopback --batch --yes $cache_fname + if [[ -n "${GPG_PASS}" && "${SUDO_USER}" ]]; then + [[ -n ${SUDO_USER} ]] && sudo chown -R ${SUDO_USER}:${SUDO_USER} "${DEST}"/images/ + echo "${GPG_PASS}" | sudo -H -u ${SUDO_USER} bash -c "gpg --passphrase-fd 0 --armor --detach-sign --pinentry-mode loopback --batch --yes ${cache_fname}" || exit 1 fi + # needed for backend to keep current only + touch $cache_fname.current + fi # used for internal purposes. Faster rootfs cache rebuilding - if [[ -n "$ROOT_FS_CREATE_ONLY" || $BUILD_OPT == rootfs ]]; then - - [[ $use_tmpfs = yes ]] && umount $SDCARD + if [[ -n "$ROOT_FS_CREATE_ONLY" ]]; then + umount --lazy "$SDCARD" rm -rf $SDCARD - if [[ -f "/run/orangepi/${BOARD^}_${BRANCH}_${RELEASE}_${BUILD_DESKTOP}_${BUILD_MINIMAL}.pid" ]];then - rm "/run/orangepi/${BOARD^}_${BRANCH}_${RELEASE}_${BUILD_DESKTOP}_${BUILD_MINIMAL}.pid" - fi - display_alert "Rootfs build done" "@host" "info" display_alert "Target directory" "${EXTER}/cache/rootfs" "info" display_alert "File name" "${cache_name}" "info" - end=$(date +%s) - runtime=$(((end-start)/60)) - display_alert "Runtime" "$runtime min" "info" - - display_alert "Repeat Build Options" "sudo ./build.sh ${BUILD_CONFIG} BOARD=${BOARD} BRANCH=${BRANCH} $([[ -n $BUILD_OPT ]] && echo "BUILD_OPT=${BUILD_OPT} ")$([[ -n $RELEASE ]] && echo "RELEASE=${RELEASE} ") $([[ -n $BUILD_MINIMAL ]] && echo "BUILD_MINIMAL=${BUILD_MINIMAL} ") $([[ -n $BUILD_DESKTOP ]] && echo "BUILD_DESKTOP=${BUILD_DESKTOP} ") $([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE}") " "info" - # remove exit trap trap - INT TERM EXIT - exit + exit fi mount_chroot "$SDCARD" @@ -306,18 +385,23 @@ prepare_partitions() parttype[fat]=fat16 parttype[f2fs]=ext4 # not a copy-paste error parttype[btrfs]=btrfs + parttype[xfs]=xfs # parttype[nfs] is empty # metadata_csum and 64bit may need to be disabled explicitly when migrating to newer supported host OS releases - if [[ $(lsb_release -sc) =~ bionic|buster|bullseye|cosmic|eoan|focal ]]; then - mkopts[ext4]='-q -m 2 -O ^64bit,^metadata_csum' - elif [[ $(lsb_release -sc) == xenial ]]; then - mkopts[ext4]='-q -m 2' + # add -N number of inodes to keep mount from running out + # create bigger number for desktop builds + if [[ $BUILD_DESKTOP == yes ]]; then local node_number=4096; else local node_number=1024; fi + if [[ $HOSTRELEASE =~ bionic|buster|bullseye|bookworm|cosmic|focal|hirsute|impish|jammy|sid ]]; then + mkopts[ext4]="-q -m 2 -O ^64bit,^metadata_csum -N $((128*${node_number}))" + elif [[ $HOSTRELEASE == xenial ]]; then + mkopts[ext4]="-q -m 2 -N $((128*${node_number}))" fi mkopts[fat]='-n BOOT' mkopts[ext2]='-q' # mkopts[f2fs] is empty mkopts[btrfs]='-m dup' + # mkopts[xfs] is empty # mkopts[nfs] is empty mkfs[ext4]=ext4 @@ -325,6 +409,7 @@ prepare_partitions() mkfs[fat]=vfat mkfs[f2fs]=f2fs mkfs[btrfs]=btrfs + mkfs[xfs]=xfs # mkfs[nfs] is empty mountopts[ext4]=',commit=600,errors=remount-ro' @@ -332,10 +417,21 @@ prepare_partitions() # mountopts[fat] is empty # mountopts[f2fs] is empty mountopts[btrfs]=',commit=600' + # mountopts[xfs] is empty # mountopts[nfs] is empty # default BOOTSIZE to use if not specified - DEFAULT_BOOTSIZE=96 # MiB + DEFAULT_BOOTSIZE=256 # MiB + # size of UEFI partition. 0 for no UEFI. Don't mix UEFISIZE>0 and BOOTSIZE>0 + UEFISIZE=${UEFISIZE:-0} + BIOSSIZE=${BIOSSIZE:-0} + UEFI_MOUNT_POINT=${UEFI_MOUNT_POINT:-/boot/efi} + UEFI_FS_LABEL="${UEFI_FS_LABEL:-armbiefi}" + + call_extension_method "pre_prepare_partitions" "prepare_partitions_custom" <<'PRE_PREPARE_PARTITIONS' +*allow custom options for mkfs* +Good time to change stuff like mkfs opts, types etc. +PRE_PREPARE_PARTITIONS # stage: determine partition configuration if [[ -n $BOOTFS_TYPE ]]; then @@ -361,6 +457,16 @@ prepare_partitions() local bootpart=1 local rootpart=2 [[ -z $BOOTSIZE || $BOOTSIZE -le 8 ]] && BOOTSIZE=${DEFAULT_BOOTSIZE} + elif [[ $UEFISIZE -gt 0 ]]; then + if [[ "${IMAGE_PARTITION_TABLE}" == "gpt" ]]; then + # efi partition and ext4 root. some juggling is done by parted/sgdisk + local uefipart=15 + local rootpart=1 + else + # efi partition and ext4 root. + local uefipart=1 + local rootpart=2 + fi else # single partition ext4 root local rootpart=1 @@ -368,8 +474,17 @@ prepare_partitions() fi # stage: calculate rootfs size - local rootfs_size=$(du -sm $SDCARD/ | cut -f1) # MiB + export rootfs_size=$(du -sm $SDCARD/ | cut -f1) # MiB display_alert "Current rootfs size" "$rootfs_size MiB" "info" + + call_extension_method "prepare_image_size" "config_prepare_image_size" << 'PREPARE_IMAGE_SIZE' +*allow dynamically determining the size based on the $rootfs_size* +Called after `${rootfs_size}` is known, but before `${FIXED_IMAGE_SIZE}` is taken into account. +A good spot to determine `FIXED_IMAGE_SIZE` based on `rootfs_size`. +UEFISIZE can be set to 0 for no UEFI partition, or to a size in MiB to include one. +Last chance to set `USE_HOOK_FOR_PARTITION`=yes and then implement create_partition_table hook_point. +PREPARE_IMAGE_SIZE + if [[ -n $FIXED_IMAGE_SIZE && $FIXED_IMAGE_SIZE =~ ^[0-9]+$ ]]; then display_alert "Using user-defined image size" "$FIXED_IMAGE_SIZE MiB" "info" local sdsize=$FIXED_IMAGE_SIZE @@ -378,54 +493,91 @@ prepare_partitions() exit_with_error "User defined image size is too small" "$sdsize <= $rootfs_size" fi else - local imagesize=$(( $rootfs_size + $OFFSET + $BOOTSIZE )) # MiB - case $ROOTFS_TYPE in - btrfs) - # Used for server images, currently no swap functionality, so disk space - if [[ $BTRFS_COMPRESSION == none ]]; then - local sdsize=$(bc -l <<< "scale=0; (($imagesize * 1.25) / 4 + 1) * 4") - else - # requirements are rather low since rootfs gets filled with compress-force=zlib - local sdsize=$(bc -l <<< "scale=0; (($imagesize * 0.8) / 4 + 1) * 4") - fi - ;; - *) - # Hardcoded overhead +25% is needed for desktop images, - # for CLI it could be lower. Align the size up to 4MiB - if [[ $BUILD_DESKTOP == yes ]]; then - local sdsize=$(bc -l <<< "scale=0; ((($imagesize * 1.30) / 1 + 0) / 4 + 1) * 4") - else - local sdsize=$(bc -l <<< "scale=0; ((($imagesize * 1.25) / 1 + 0) / 4 + 1) * 4") - fi - ;; - esac + local imagesize=$(( $rootfs_size + $OFFSET + $BOOTSIZE + $UEFISIZE + $EXTRA_ROOTFS_MIB_SIZE)) # MiB + # Hardcoded overhead +25% is needed for desktop images, + # for CLI it could be lower. Align the size up to 4MiB + if [[ $BUILD_DESKTOP == yes ]]; then + local sdsize=$(bc -l <<< "scale=0; ((($imagesize * 1.30) / 1 + 0) / 4 + 1) * 4") + else + local sdsize=$(bc -l <<< "scale=0; ((($imagesize * 1.25) / 1 + 0) / 4 + 1) * 4") + fi fi # stage: create blank image display_alert "Creating blank image for rootfs" "$sdsize MiB" "info" - # truncate --size=${sdsize}M ${SDCARD}.raw # sometimes results in fs corruption, revert to previous know to work solution - dd if=/dev/zero bs=1M status=none count=$sdsize | pv -p -b -r -s $(( $sdsize * 1024 * 1024 )) -N "[ .... ] dd" | dd status=none of=${SDCARD}.raw + if [[ $FAST_CREATE_IMAGE == yes ]]; then + truncate --size=${sdsize}M ${SDCARD}.raw # sometimes results in fs corruption, revert to previous know to work solution + sync + else + dd if=/dev/zero bs=1M status=none count=$sdsize | pv -p -b -r -s $(( $sdsize * 1024 * 1024 )) -N "[ .... ] dd" | dd status=none of=${SDCARD}.raw + fi # stage: calculate boot partition size local bootstart=$(($OFFSET * 2048)) - local rootstart=$(($bootstart + ($BOOTSIZE * 2048))) + local rootstart=$(($bootstart + ($BOOTSIZE * 2048) + ($UEFISIZE * 2048))) local bootend=$(($rootstart - 1)) # stage: create partition table display_alert "Creating partitions" "${bootfs:+/boot: $bootfs }root: $ROOTFS_TYPE" "info" parted -s ${SDCARD}.raw -- mklabel ${IMAGE_PARTITION_TABLE} - if [[ $ROOTFS_TYPE == nfs ]]; then + if [[ "${USE_HOOK_FOR_PARTITION}" == "yes" ]]; then + call_extension_method "create_partition_table" <<- 'CREATE_PARTITION_TABLE' + *only called when USE_HOOK_FOR_PARTITION=yes to create the complete partition table* + Finally, we can get our own partition table. You have to partition ${SDCARD}.raw + yourself. Good luck. + CREATE_PARTITION_TABLE + elif [[ $ROOTFS_TYPE == nfs ]]; then # single /boot partition - parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s 100% + parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s "100%" + elif [[ $UEFISIZE -gt 0 ]]; then + # uefi partition + root partition + if [[ "${IMAGE_PARTITION_TABLE}" == "gpt" ]]; then + if [[ ${BIOSSIZE} -gt 0 ]]; then + display_alert "Creating partitions" "BIOS+UEFI+rootfs" "info" + # UEFI + GPT automatically get a BIOS partition at 14, EFI at 15 + local biosstart=$(($OFFSET * 2048)) + local uefistart=$(($OFFSET * 2048 + ($BIOSSIZE * 2048))) + local rootstart=$(($uefistart + ($UEFISIZE * 2048) )) + local biosend=$(($uefistart - 1)) + local uefiend=$(($rootstart - 1)) + parted -s ${SDCARD}.raw -- mkpart bios fat32 ${biosstart}s ${biosend}s + parted -s ${SDCARD}.raw -- mkpart efi fat32 ${uefistart}s ${uefiend}s + parted -s ${SDCARD}.raw -- mkpart rootfs ${parttype[$ROOTFS_TYPE]} ${rootstart}s "100%" + # transpose so BIOS is in sda14; EFI is in sda15 and root in sda1; requires sgdisk, parted cant do numbers + sgdisk --transpose 1:14 ${SDCARD}.raw &> /dev/null || echo "*** TRANSPOSE 1:14 FAILED" + sgdisk --transpose 2:15 ${SDCARD}.raw &> /dev/null || echo "*** TRANSPOSE 2:15 FAILED" + sgdisk --transpose 3:1 ${SDCARD}.raw &> /dev/null || echo "*** TRANSPOSE 3:1 FAILED" + # set the ESP (efi) flag on 15 + parted -s ${SDCARD}.raw -- set 14 bios_grub on || echo "*** SETTING bios_grub ON 14 FAILED" + parted -s ${SDCARD}.raw -- set 15 esp on || echo "*** SETTING ESP ON 15 FAILED" + else + display_alert "Creating partitions" "UEFI+rootfs (no BIOS)" "info" + # Simple EFI + root partition on GPT, no BIOS. + parted -s ${SDCARD}.raw -- mkpart efi fat32 ${bootstart}s ${bootend}s + parted -s ${SDCARD}.raw -- mkpart rootfs ${parttype[$ROOTFS_TYPE]} ${rootstart}s "100%" + # transpose so EFI is in sda15 and root in sda1; requires sgdisk, parted cant do numbers + sgdisk --transpose 1:15 ${SDCARD}.raw &> /dev/null || echo "*** TRANSPOSE 1:15 FAILED" + sgdisk --transpose 2:1 ${SDCARD}.raw &> /dev/null || echo "*** TRANSPOSE 2:1 FAILED" + # set the ESP (efi) flag on 15 + parted -s ${SDCARD}.raw -- set 15 esp on || echo "*** SETTING ESP ON 15 FAILED" + fi + else + parted -s ${SDCARD}.raw -- mkpart primary fat32 ${bootstart}s ${bootend}s + parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s "100%" + fi elif [[ $BOOTSIZE == 0 ]]; then # single root partition - parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s 100% + parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s "100%" else # /boot partition + root partition parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s ${bootend}s - parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s 100% + parted -s ${SDCARD}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s "100%" fi + call_extension_method "post_create_partitions" <<- 'POST_CREATE_PARTITIONS' + *called after all partitions are created, but not yet formatted* + POST_CREATE_PARTITIONS + # stage: mount image # lock access to loop devices exec {FD}>/var/lock/orangepi-debootstrap-losetup @@ -436,7 +588,6 @@ prepare_partitions() check_loop_device "$LOOP" - # NOTE: losetup -P option is not available in Trusty losetup $LOOP ${SDCARD}.raw # loop device was grabbed here, unlock @@ -460,7 +611,7 @@ prepare_partitions() check_loop_device "$rootdevice" display_alert "Creating rootfs" "$ROOTFS_TYPE on $rootdevice" - mkfs.${mkfs[$ROOTFS_TYPE]} ${mkopts[$ROOTFS_TYPE]} $rootdevice + mkfs.${mkfs[$ROOTFS_TYPE]} ${mkopts[$ROOTFS_TYPE]} $rootdevice >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 [[ $ROOTFS_TYPE == ext4 ]] && tune2fs -o journal_data_writeback $rootdevice > /dev/null if [[ $ROOTFS_TYPE == btrfs && $BTRFS_COMPRESSION != none ]]; then local fscreateopt="-o compress-force=${BTRFS_COMPRESSION}" @@ -474,19 +625,32 @@ prepare_partitions() else local rootfs="UUID=$(blkid -s UUID -o value $rootdevice)" fi - echo "$rootfs / ${mkfs[$ROOTFS_TYPE]} defaults,noatime,nodiratime${mountopts[$ROOTFS_TYPE]} 0 1" >> $SDCARD/etc/fstab + echo "$rootfs / ${mkfs[$ROOTFS_TYPE]} defaults,noatime${mountopts[$ROOTFS_TYPE]} 0 1" >> $SDCARD/etc/fstab fi if [[ -n $bootpart ]]; then - display_alert "Creating /boot" "$bootfs" + display_alert "Creating /boot" "$bootfs on ${LOOP}p${bootpart}" check_loop_device "${LOOP}p${bootpart}" - mkfs.${mkfs[$bootfs]} ${mkopts[$bootfs]} ${LOOP}p${bootpart} + mkfs.${mkfs[$bootfs]} ${mkopts[$bootfs]} ${LOOP}p${bootpart} >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 mkdir -p $MOUNT/boot/ mount ${LOOP}p${bootpart} $MOUNT/boot/ echo "UUID=$(blkid -s UUID -o value ${LOOP}p${bootpart}) /boot ${mkfs[$bootfs]} defaults${mountopts[$bootfs]} 0 2" >> $SDCARD/etc/fstab fi + if [[ -n $uefipart ]]; then + display_alert "Creating EFI partition" "FAT32 ${UEFI_MOUNT_POINT} on ${LOOP}p${uefipart} label ${UEFI_FS_LABEL}" + check_loop_device "${LOOP}p${uefipart}" + mkfs.fat -F32 -n "${UEFI_FS_LABEL}" ${LOOP}p${uefipart} >>"${DEST}"/debug/install.log 2>&1 + mkdir -p "${MOUNT}${UEFI_MOUNT_POINT}" + mount ${LOOP}p${uefipart} "${MOUNT}${UEFI_MOUNT_POINT}" + echo "UUID=$(blkid -s UUID -o value ${LOOP}p${uefipart}) ${UEFI_MOUNT_POINT} vfat defaults 0 2" >>$SDCARD/etc/fstab + fi [[ $ROOTFS_TYPE == nfs ]] && echo "/dev/nfs / nfs defaults 0 0" >> $SDCARD/etc/fstab echo "tmpfs /tmp tmpfs defaults,nosuid 0 0" >> $SDCARD/etc/fstab + call_extension_method "format_partitions" <<- 'FORMAT_PARTITIONS' + *if you created your own partitions, this would be a good time to format them* + The loop device is mounted, so ${LOOP}p1 is it's first partition etc. + FORMAT_PARTITIONS + # stage: adjust boot script or boot environment if [[ -f $SDCARD/boot/orangepiEnv.txt ]]; then if [[ $CRYPTROOT_ENABLE == yes ]]; then @@ -520,13 +684,19 @@ prepare_partitions() sed -i "s/console=.*/console=$DEFAULT_CONSOLE/" $SDCARD/boot/orangepiEnv.txt else echo "console=$DEFAULT_CONSOLE" >> $SDCARD/boot/orangepiEnv.txt - fi + fi fi # recompile .cmd to .scr if boot.cmd exists [[ -f $SDCARD/boot/boot.cmd ]] && \ mkimage -C none -A arm -T script -d $SDCARD/boot/boot.cmd $SDCARD/boot/boot.scr > /dev/null 2>&1 + # create extlinux config + if [[ -f $SDCARD/boot/extlinux/extlinux.conf ]]; then + echo " append root=$rootfs $SRC_CMDLINE $MAIN_CMDLINE" >> $SDCARD/boot/extlinux/extlinux.conf + [[ -f $SDCARD/boot/orangepiEnv.txt ]] && rm $SDCARD/boot/orangepiEnv.txt + fi + } ############################################################################# # update_initramfs @@ -546,13 +716,26 @@ prepare_partitions() update_initramfs() { local chroot_target=$1 - update_initramfs_cmd="update-initramfs -uv -k ${VER}-${LINUXFAMILY}" + local target_dir=$( + find ${chroot_target}/lib/modules/ -maxdepth 1 -type d -name "*${VER}*" + ) + if [ "$target_dir" != "" ]; then + update_initramfs_cmd="update-initramfs -uv -k $(basename $target_dir)" + else + exit_with_error "No kernel installed for the version" "${VER}" + fi display_alert "Updating initramfs..." "$update_initramfs_cmd" "" cp /usr/bin/$QEMU_BINARY $chroot_target/usr/bin/ mount_chroot "$chroot_target/" - chroot $chroot_target /bin/bash -c "$update_initramfs_cmd" >> $DEST/debug/install.log 2>&1 - display_alert "Updated initramfs." "for details see: $DEST/debug/install.log" "ext" + chroot $chroot_target /bin/bash -c "$update_initramfs_cmd" >> $DEST/${LOG_SUBPATH}/install.log 2>&1 || { + display_alert "Updating initramfs FAILED, see:" "$DEST/${LOG_SUBPATH}/install.log" "err" + exit 23 + } + display_alert "Updated initramfs." "for details see: $DEST/${LOG_SUBPATH}/install.log" "info" + + display_alert "Re-enabling" "initramfs-tools hook for kernel" + chroot $chroot_target /bin/bash -c "chmod -v +x /etc/kernel/postinst.d/initramfs-tools" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 umount_chroot "$chroot_target/" rm $chroot_target/usr/bin/$QEMU_BINARY @@ -566,9 +749,7 @@ update_initramfs() create_image() { # stage: create file name - local version="${BOARD^}_${REVISION}_${DISTRIBUTION,}_${RELEASE}_${IMAGETYPE}_linux"$(grab_version "$LINUXSOURCEDIR")"" - - [[ $BUILD_MINIMAL == yes ]] && version=${version}_minimal + local version="${BOARD^}_${REVISION}_${DISTRIBUTION,}_${RELEASE}_linux"$(grab_version "$LINUXSOURCEDIR")"${DESKTOP_ENVIRONMENT:+_$DESKTOP_ENVIRONMENT}_${SELECTED_CONFIGURATION}" [[ $ROOTFS_TYPE == nfs ]] && version=${version}_nfsboot destimg=$DEST/images/${version} @@ -576,9 +757,16 @@ create_image() mkdir -p $destimg if [[ $ROOTFS_TYPE != nfs ]]; then - display_alert "Copying files to root directory" - rsync -aHWXh --exclude="/boot/*" --exclude="/dev/*" --exclude="/proc/*" --exclude="/run/*" --exclude="/tmp/*" \ - --exclude="/sys/*" --info=progress2,stats1 $SDCARD/ $MOUNT/ + display_alert "Copying files to" "/" + echo -e "\nCopying files to [/]" >>"${DEST}"/${LOG_SUBPATH}/install.log + rsync -aHWXh \ + --exclude="/boot/*" \ + --exclude="/dev/*" \ + --exclude="/proc/*" \ + --exclude="/run/*" \ + --exclude="/tmp/*" \ + --exclude="/sys/*" \ + --info=progress0,stats1 $SDCARD/ $MOUNT/ >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 else display_alert "Creating rootfs archive" "rootfs.tgz" "info" tar cp --xattrs --directory=$SDCARD/ --exclude='./boot/*' --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ @@ -586,21 +774,35 @@ create_image() fi # stage: rsync /boot - display_alert "Copying files to /boot directory" + display_alert "Copying files to" "/boot" + echo -e "\nCopying files to [/boot]" >>"${DEST}"/${LOG_SUBPATH}/install.log if [[ $(findmnt --target $MOUNT/boot -o FSTYPE -n) == vfat ]]; then # fat32 - rsync -rLtWh --info=progress2,stats1 $SDCARD/boot $MOUNT + rsync -rLtWh \ + --info=progress0,stats1 \ + --log-file="${DEST}"/${LOG_SUBPATH}/install.log $SDCARD/boot $MOUNT else # ext4 - rsync -aHWXh --info=progress2,stats1 $SDCARD/boot $MOUNT + rsync -aHWXh \ + --info=progress0,stats1 \ + --log-file="${DEST}"/${LOG_SUBPATH}/install.log $SDCARD/boot $MOUNT fi + call_extension_method "pre_update_initramfs" "config_pre_update_initramfs" << 'PRE_UPDATE_INITRAMFS' +*allow config to hack into the initramfs create process* +Called after rsync has synced both `/root` and `/root` on the target, but before calling `update_initramfs`. +PRE_UPDATE_INITRAMFS + # stage: create final initramfs - [[ $ROOTFS_TYPE != nfs ]] && update_initramfs $MOUNT + [[ -n $KERNELSOURCE ]] && { + update_initramfs $MOUNT + } # DEBUG: print free space - #display_alert "Free space:" "SD card" "info" - #eval 'df -h' ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} + local freespace=$(LC_ALL=C df -h) + echo $freespace >> $DEST/${LOG_SUBPATH}/debootstrap.log + display_alert "Free SD cache" "$(echo -e "$freespace" | grep $SDCARD | awk '{print $5}')" "info" + display_alert "Mount point" "$(echo -e "$freespace" | grep $MOUNT | head -1 | awk '{print $5}')" "info" # stage: write u-boot write_uboot $LOOP @@ -608,26 +810,43 @@ create_image() # fix wrong / permissions chmod 755 $MOUNT - # unmount /boot first, rootfs second, image file last + call_extension_method "pre_umount_final_image" "config_pre_umount_final_image" << 'PRE_UMOUNT_FINAL_IMAGE' +*allow config to hack into the image before the unmount* +Called before unmounting both `/root` and `/boot`. +PRE_UMOUNT_FINAL_IMAGE + + # unmount /boot/efi first, then /boot, rootfs third, image file last sync + [[ $UEFISIZE != 0 ]] && umount -l "${MOUNT}${UEFI_MOUNT_POINT}" [[ $BOOTSIZE != 0 ]] && umount -l $MOUNT/boot [[ $ROOTFS_TYPE != nfs ]] && umount -l $MOUNT [[ $CRYPTROOT_ENABLE == yes ]] && cryptsetup luksClose $ROOT_MAPPER + call_extension_method "post_umount_final_image" "config_post_umount_final_image" << 'POST_UMOUNT_FINAL_IMAGE' +*allow config to hack into the image after the unmount* +Called after unmounting both `/root` and `/boot`. +POST_UMOUNT_FINAL_IMAGE + # to make sure its unmounted while grep -Eq '(${MOUNT}|${DESTIMG})' /proc/mounts do - display_alert "Unmounting" "${MOUNT}" "info" + display_alert "Wait for unmount" "${MOUNT}" "info" sleep 5 done losetup -d $LOOP rm -rf --one-file-system $DESTIMG $MOUNT - mv ${SDCARD}.raw $destimg/${version}.img + mkdir -p $DESTIMG + mv ${SDCARD}.raw $DESTIMG/${version}.img + + FINALDEST=${destimg} + + # custom post_build_image_modify hook to run before fingerprinting and compression + [[ $(type -t post_build_image_modify) == function ]] && display_alert "Custom Hook Detected" "post_build_image_modify" "info" && post_build_image_modify "${DESTIMG}/${version}.img" if [[ $BUILD_ALL != yes ]]; then - + if [[ $COMPRESS_OUTPUTIMAGE == "" || $COMPRESS_OUTPUTIMAGE == no ]]; then COMPRESS_OUTPUTIMAGE="sha,gpg,img" elif [[ $COMPRESS_OUTPUTIMAGE == yes ]]; then @@ -635,76 +854,104 @@ create_image() fi if [[ $COMPRESS_OUTPUTIMAGE == *gz* ]]; then - display_alert "Compressing" "$destimg/${version}.img.gz" "info" - pigz -3 < $destimg/${version}.img > $destimg/${version}.img.gz + display_alert "Compressing" "${DESTIMG}/${version}.img.gz" "info" + pigz -3 < $DESTIMG/${version}.img > $DESTIMG/${version}.img.gz compression_type=".gz" fi if [[ $COMPRESS_OUTPUTIMAGE == *xz* ]]; then - display_alert "Compressing" "$destimg/${version}.img.xz" "info" - pixz -3 < $destimg/${version}.img > $destimg/${version}.img.xz + display_alert "Compressing" "${DESTIMG}/${version}.img.xz" "info" + # compressing consumes a lot of memory we don't have. Waiting for previous packing job to finish helps to run a lot more builds in parallel + available_cpu=$(grep -c 'processor' /proc/cpuinfo) + [[ ${BUILD_ALL} == yes ]] && available_cpu=$(( $available_cpu * 30 / 100 )) # lets use 20% of resources in case of build-all + [[ ${available_cpu} -gt 8 ]] && available_cpu=8 # using more cpu cores for compressing is pointless + available_mem=$(LC_ALL=c free | grep Mem | awk '{print $4/$2 * 100.0}' | awk '{print int($1)}') # in percentage + # build optimisations when memory drops below 5% + if [[ ${BUILD_ALL} == yes && ( ${available_mem} -lt 15 || $(ps -uax | grep "pixz" | wc -l) -gt 4 )]]; then + while [[ $(ps -uax | grep "pixz" | wc -l) -gt 2 ]] + do echo -en "#" + sleep 20 + done + fi + pixz -7 -p ${available_cpu} -f $(expr ${available_cpu} + 2) < $DESTIMG/${version}.img > ${DESTIMG}/${version}.img.xz compression_type=".xz" fi - if [[ $COMPRESS_OUTPUTIMAGE == *img* || $COMPRESS_OUTPUTIMAGE == *7z* ]]; then - compression_type="" - fi + if [[ $COMPRESS_OUTPUTIMAGE == *img* || $COMPRESS_OUTPUTIMAGE == *7z* ]]; then +# mv $DESTIMG/${version}.img ${FINALDEST}/${version}.img || exit 1 + compression_type="" + fi if [[ $COMPRESS_OUTPUTIMAGE == *sha* ]]; then - cd $destimg + cd ${DESTIMG} display_alert "SHA256 calculating" "${version}.img${compression_type}" "info" sha256sum -b ${version}.img${compression_type} > ${version}.img${compression_type}.sha fi if [[ $COMPRESS_OUTPUTIMAGE == *gpg* ]]; then - cd $destimg + cd ${DESTIMG} if [[ -n $GPG_PASS ]]; then display_alert "GPG signing" "${version}.img${compression_type}" "info" - echo $GPG_PASS | gpg --passphrase-fd 0 --armor --detach-sign --pinentry-mode loopback --batch --yes $destimg/${version}.img${compression_type} || exit 1 + [[ -n ${SUDO_USER} ]] && sudo chown -R ${SUDO_USER}:${SUDO_USER} "${DESTIMG}"/ + echo "${GPG_PASS}" | sudo -H -u ${SUDO_USER} bash -c "gpg --passphrase-fd 0 --armor --detach-sign --pinentry-mode loopback --batch --yes ${DESTIMG}/${version}.img${compression_type}" || exit 1 else display_alert "GPG signing skipped - no GPG_PASS" "${version}.img" "wrn" fi fi - #fingerprint_image "$destimg/${version}.img${compression_type}.txt" "${version}" + #fingerprint_image "${DESTIMG}/${version}.img${compression_type}.txt" "${version}" if [[ $COMPRESS_OUTPUTIMAGE == *7z* ]]; then - display_alert "Compressing" "$destimg/${version}.7z" "info" + display_alert "Compressing" "${DESTIMG}/${version}.7z" "info" 7za a -t7z -bd -m0=lzma2 -mx=3 -mfb=64 -md=32m -ms=on \ - $destimg/${version}.7z ${version}.key ${version}.img{,.sha,.txt} >/dev/null 2>&1 - - #find $destimg/ -type \ - #f \( -name "${version}.img" -o -name "${version}.img.asc" -o -name "${version}.img.txt" -o -name "${version}.img.sha" \) -print0 \ - #| xargs -0 rm >/dev/null 2>&1 + ${DESTIMG}/${version}.7z ${version}.key ${version}.img* >/dev/null 2>&1 + find ${DESTIMG}/ -type \ + f \( -name "${version}.img" -o -name "${version}.img.asc" -o -name "${version}.img.txt" -o -name "${version}.img.sha" \) -print0 \ + >/dev/null 2>&1 fi + fi - display_alert "Done building" "$destimg/${version}.img" "info" + #display_alert "Done building" "${DESTIMG}/${version}.img" "info" + display_alert "Done building" "${FINALDEST}/${version}.img" "info" # call custom post build hook - [[ $(type -t post_build_image) == function ]] && post_build_image "$destimg/${version}.img" + [[ $(type -t post_build_image) == function ]] && post_build_image "${DESTIMG}/${version}.img" + + # move artefacts from temporally directory to its final destination + [[ -n $compression_type ]] && rm $DESTIMG/${version}.img + mv $DESTIMG/${version}* ${FINALDEST} + rm -rf $DESTIMG # write image to SD card - if [[ $(lsblk "$CARD_DEVICE" 2>/dev/null) && -f $destimg/${version}.img ]]; then + if [[ $(lsblk "$CARD_DEVICE" 2>/dev/null) && -f ${FINALDEST}/${version}.img ]]; then # make sha256sum if it does not exists. we need it for comparisson - if [[ -f "$destimg/${version}".img.sha ]]; then - local ifsha=$(cat $destimg/${version}.img.sha | awk '{print $1}') + if [[ -f "${FINALDEST}/${version}".img.sha ]]; then + local ifsha=$(cat ${FINALDEST}/${version}.img.sha | awk '{print $1}') else - local ifsha=$(sha256sum -b "$destimg/${version}".img | awk '{print $1}') + local ifsha=$(sha256sum -b "${FINALDEST}/${version}".img | awk '{print $1}') fi display_alert "Writing image" "$CARD_DEVICE ${readsha}" "info" # write to SD card - pv -p -b -r -c -N "[ .... ] dd" $destimg/${version}.img | dd of=$CARD_DEVICE bs=1M iflag=fullblock oflag=direct status=none + pv -p -b -r -c -N "[ .... ] dd" ${FINALDEST}/${version}.img | dd of=$CARD_DEVICE bs=1M iflag=fullblock oflag=direct status=none - # read and compare - display_alert "Verifying. Please wait!" - local ofsha=$(dd if=$CARD_DEVICE count=$(du -b $destimg/${version}.img | cut -f1) status=none iflag=count_bytes oflag=direct | sha256sum | awk '{print $1}') - if [[ $ifsha == $ofsha ]]; then - display_alert "Writing verified" "${version}.img" "info" - else - display_alert "Writing failed" "${version}.img" "err" + call_extension_method "post_write_sdcard" <<- 'POST_BUILD_IMAGE' + *run after writing img to sdcard* + After the image is written to `$CARD_DEVICE`, but before verifying it. + You can still set SKIP_VERIFY=yes to skip verification. + POST_BUILD_IMAGE + + if [[ "${SKIP_VERIFY}" != "yes" ]]; then + # read and compare + display_alert "Verifying. Please wait!" + local ofsha=$(dd if=$CARD_DEVICE count=$(du -b ${FINALDEST}/${version}.img | cut -f1) status=none iflag=count_bytes oflag=direct | sha256sum | awk '{print $1}') + if [[ $ifsha == $ofsha ]]; then + display_alert "Writing verified" "${version}.img" "info" + else + display_alert "Writing failed" "${version}.img" "err" + fi fi elif [[ `systemd-detect-virt` == 'docker' && -n $CARD_DEVICE ]]; then # display warning when we want to write sd card under Docker diff --git a/scripts/desktop.sh b/scripts/desktop.sh index 62edc3f..f6c6620 100755 --- a/scripts/desktop.sh +++ b/scripts/desktop.sh @@ -1,26 +1,53 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. +# Functions: + +# create_desktop_package +# install_ppa_prerequisites +# add_apt_sources +# add_desktop_package_sources +# desktop_postinstall + + + create_desktop_package () { - # join and cleanup package list - PACKAGE_LIST_DESKTOP+=" "${PACKAGE_LIST_DESKTOP_RECOMMENDS} - PACKAGE_LIST_DESKTOP=${PACKAGE_LIST_DESKTOP// /,}; - PACKAGE_LIST_DESKTOP=${PACKAGE_LIST_DESKTOP//[[:space:]]/} + echo "Showing PACKAGE_LIST_DESKTOP before postprocessing" >> "${DEST}"/${LOG_SUBPATH}/output.log + # Use quotes to show leading and trailing spaces + echo "\"$PACKAGE_LIST_DESKTOP\"" >> "${DEST}"/${LOG_SUBPATH}/output.log + + # Remove leading and trailing spaces with some bash monstruosity + # https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-a-bash-variable#12973694 + DEBIAN_RECOMMENDS="${PACKAGE_LIST_DESKTOP#"${PACKAGE_LIST_DESKTOP%%[![:space:]]*}"}" + DEBIAN_RECOMMENDS="${DEBIAN_RECOMMENDS%"${DEBIAN_RECOMMENDS##*[![:space:]]}"}" + # Replace whitespace characters by commas + DEBIAN_RECOMMENDS=${DEBIAN_RECOMMENDS// /,}; + # Remove others 'spacing characters' (like tabs) + DEBIAN_RECOMMENDS=${DEBIAN_RECOMMENDS//[[:space:]]/} + + echo "DEBIAN_RECOMMENDS : ${DEBIAN_RECOMMENDS}" >> "${DEST}"/${LOG_SUBPATH}/output.log + + # Replace whitespace characters by commas PACKAGE_LIST_PREDEPENDS=${PACKAGE_LIST_PREDEPENDS// /,}; + # Remove others 'spacing characters' (like tabs) PACKAGE_LIST_PREDEPENDS=${PACKAGE_LIST_PREDEPENDS//[[:space:]]/} - local destination=${SRC}/.tmp/${RELEASE}/${BOARD}/${CHOSEN_DESKTOP}_${REVISION}_all + local destination tmp_dir + tmp_dir=$(mktemp -d) + destination=${tmp_dir}/${BOARD}/${CHOSEN_DESKTOP}_${REVISION}_all rm -rf "${destination}" mkdir -p "${destination}"/DEBIAN + echo "${PACKAGE_LIST_PREDEPENDS}" >> "${DEST}"/${LOG_SUBPATH}/output.log + # set up control file cat <<-EOF > "${destination}"/DEBIAN/control Package: ${CHOSEN_DESKTOP} @@ -30,109 +57,219 @@ create_desktop_package () Installed-Size: 1 Section: xorg Priority: optional - Recommends: ${PACKAGE_LIST_DESKTOP//[:space:]+/,} - Provides: ${CHOSEN_DESKTOP} + Recommends: ${DEBIAN_RECOMMENDS//[:space:]+/,}, orangepi-bsp-desktop + Provides: ${CHOSEN_DESKTOP}, orangepi-${RELEASE}-desktop Pre-Depends: ${PACKAGE_LIST_PREDEPENDS//[:space:]+/,} Description: Orange Pi desktop for ${DISTRIBUTION} ${RELEASE} EOF - cat <<-EOF > "${destination}"/DEBIAN/postinst - #!/bin/sh -e + # Recreating the DEBIAN/postinst file + echo "#!/bin/sh -e" > "${destination}/DEBIAN/postinst" - # overwrite stock chromium and firefox configuration - if [ -d /etc/chromium-browser/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium-browser/default; fi - if [ -d /etc/chromium.d/ ]; then ln -sf /etc/orangepi/chromium.conf /etc/chromium.d/chromium.conf; fi - cp -R /etc/orangepi/chromium /usr/share - # overwrite stock lightdm greeter configuration - if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi + local aggregated_content="" + aggregate_all_desktop "debian/postinst" $'\n' + echo "${aggregated_content}" >> "${destination}/DEBIAN/postinst" + echo "exit 0" >> "${destination}/DEBIAN/postinst" - if [ -d /usr/lib/firefox-esr/ ]; then - ln -sf /etc/orangepi/firefox.conf /usr/lib/firefox-esr/mozilla.cfg - echo 'pref("general.config.obscure_value", 0);' > /usr/lib/firefox-esr/defaults/pref/local-settings.js - echo 'pref("general.config.filename", "mozilla.cfg");' >> /usr/lib/firefox-esr/defaults/pref/local-settings.js - fi - - # Adjust menu - #if [ -f /etc/xdg/menus/xfce-applications.menu ]; then - #sed -i -n '/Settings<\/Menuname>/{p;:a;N;/xfce4-session-logout.desktop<\/Filename>/!ba;s/.*\n/\ - #\t\n\t\n \n orangepi-donate.desktop<\/Filename>\ - #\n orangepi-support.desktop<\/Filename>\n/};p' /etc/xdg/menus/xfce-applications.menu - #fi - - # Hide few items - if [ -f /usr/share/applications/display-im6.q16.desktop ]; then mv /usr/share/applications/display-im6.q16.desktop /usr/share/applications/display-im6.q16.desktop.hidden; fi - if [ -f /usr/share/applications/display-im6.desktop ]]; then mv /usr/share/applications/display-im6.desktop /usr/share/applications/display-im6.desktop.hidden; fi - if [ -f /usr/share/applications/vim.desktop ]]; then mv /usr/share/applications/vim.desktop /usr/share/applications/vim.desktop.hidden; fi - if [ -f /usr/share/applications/libreoffice-startcenter.desktop ]]; then mv /usr/share/applications/libreoffice-startcenter.desktop /usr/share/applications/libreoffice-startcenter.desktop.hidden; fi - - # Disable Pulseaudio timer scheduling which does not work with sndhdmi driver - if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi - - exit 0 - EOF chmod 755 "${destination}"/DEBIAN/postinst - # add loading desktop splash service - mkdir -p "${destination}"/etc/systemd/system/ - cp "${EXTER}"/packages/blobs/desktop/desktop-splash/desktop-splash.service "${destination}"/etc/systemd/system/desktop-splash.service + #display_alert "Showing ${destination}/DEBIAN/postinst" + cat "${destination}/DEBIAN/postinst" >> "${DEST}"/${LOG_SUBPATH}/install.log + + # OrangePi create_desktop_package scripts + + unset aggregated_content - # install optimized browser configurations mkdir -p "${destination}"/etc/orangepi - cp "${EXTER}"/packages/blobs/desktop/chromium.conf "${destination}"/etc/orangepi - cp "${EXTER}"/packages/blobs/desktop/firefox.conf "${destination}"/etc/orangepi - cp -R "${EXTER}"/packages/blobs/desktop/chromium "${destination}"/etc/orangepi - # install lightdm greeter - cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi + local aggregated_content="" + aggregate_all_desktop "orangepi/create_desktop_package.sh" $'\n' + eval "${aggregated_content}" + [[ $? -ne 0 ]] && display_alert "create_desktop_package.sh exec error" "" "wrn" - # install default desktop settings - mkdir -p "${destination}"/etc/skel - cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel - - - # using different icon pack. Workaround due to this bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867779 - if [[ ${RELEASE} == bionic || ${RELEASE} == stretch || ${RELEASE} == buster || ${RELEASE} == bullseye || ${RELEASE} == focal || ${RELEASE} == eoan ]]; then - sed -i 's//g' \ - "${destination}"/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml - fi - - # install dedicated startup icons - mkdir -p "${destination}"/usr/share/pixmaps "${destination}"/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ - cp "${EXTER}/packages/blobs/desktop/icons/${DISTRIBUTION,,}.png" "${destination}"/usr/share/pixmaps - sed 's/xenial.png/'"${DISTRIBUTION,,}"'.png/' -i "${destination}"/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml - - # install logo for login screen - cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps - - # install wallpapers - mkdir -p "${destination}"/usr/share/backgrounds/xfce/ - cp "${EXTER}"/packages/blobs/desktop/wallpapers/orangepi*.jpg "${destination}"/usr/share/backgrounds/xfce/ - - # create board DEB file display_alert "Building desktop package" "${CHOSEN_DESKTOP}_${REVISION}_all" "info" - fakeroot dpkg-deb -b "${destination}" "${destination}.deb" >/dev/null + mkdir -p "${DEB_STORAGE}/${RELEASE}" - mv "${destination}.deb" "${DEB_STORAGE}/${RELEASE}" + cd "${destination}"; cd .. + fakeroot dpkg-deb -b -Z${DEB_COMPRESS} "${destination}" "${DEB_STORAGE}/${RELEASE}/${CHOSEN_DESKTOP}_${REVISION}_all.deb" >/dev/null + # cleanup - rm -rf "${destination}" + rm -rf "${tmp_dir}" + + unset aggregated_content + } + + + +create_bsp_desktop_package () +{ + + display_alert "Creating board support package for desktop" "${package_name}" "info" + + local package_name="${BSP_DESKTOP_PACKAGE_FULLNAME}" + + local destination tmp_dir + tmp_dir=$(mktemp -d) + destination=${tmp_dir}/${BOARD}/${BSP_DESKTOP_PACKAGE_FULLNAME} + rm -rf "${destination}" + mkdir -p "${destination}"/DEBIAN + + copy_all_packages_files_for "bsp-desktop" + + # set up control file + cat <<-EOF > "${destination}"/DEBIAN/control + Package: orangepi-bsp-desktop-${BOARD} + Version: $REVISION + Architecture: $ARCH + Maintainer: $MAINTAINER <$MAINTAINERMAIL> + Installed-Size: 1 + Section: xorg + Priority: optional + Provides: orangepi-bsp-desktop, orangepi-bsp-desktop-${BOARD} + Depends: ${BSP_CLI_PACKAGE_NAME} + Description: Orange Pi Board Specific Packages for desktop users using $ARCH ${BOARD} machines + EOF + + # Recreating the DEBIAN/postinst file + echo "#!/bin/sh -e" > "${destination}/DEBIAN/postinst" + + local aggregated_content="" + aggregate_all_desktop "debian/orangepi-bsp-desktop/postinst" $'\n' + + echo "${aggregated_content}" >> "${destination}/DEBIAN/postinst" + echo "exit 0" >> "${destination}/DEBIAN/postinst" + + chmod 755 "${destination}"/DEBIAN/postinst + + # Orange Pi create_desktop_package scripts + + unset aggregated_content + + mkdir -p "${destination}"/etc/orangepi + + local aggregated_content="" + aggregate_all_desktop "debian/orangepi-bsp-desktop/prepare.sh" $'\n' + eval "${aggregated_content}" + [[ $? -ne 0 ]] && display_alert "prepare.sh exec error" "" "wrn" + + mkdir -p "${DEB_STORAGE}/${RELEASE}" + cd "${destination}"; cd .. + fakeroot dpkg-deb -b "${destination}" "${DEB_STORAGE}/${RELEASE}/${package_name}.deb" >/dev/null + + # cleanup + rm -rf "${tmp_dir}" + + unset aggregated_content + +} + + + + +install_ppa_prerequisites() { + + # Myy : So... The whole idea is that, a good bunch of external sources + # are PPA. + # Adding PPA without add-apt-repository is poorly conveninent since + # you need to reconstruct the URL by hand, and find the GPG key yourself. + # add-apt-repository does that automatically, and in a way that allows you + # to remove it cleanly through the same tool. + + # Myy : TODO Try to find a way to install this package only when + # we encounter a PPA. + run_on_sdcard "DEBIAN_FRONTEND=noninteractive apt-get install -yqq software-properties-common" + +} + + + + +add_apt_sources() { + + local potential_paths="" + local sub_dirs_to_check=". " + if [[ ! -z "${SELECTED_CONFIGURATION+x}" ]]; then + sub_dirs_to_check+="config_${SELECTED_CONFIGURATION}" + fi + get_all_potential_paths "${DEBOOTSTRAP_SEARCH_RELATIVE_DIRS}" "${sub_dirs_to_check}" "sources/apt" + get_all_potential_paths "${CLI_SEARCH_RELATIVE_DIRS}" "${sub_dirs_to_check}" "sources/apt" + get_all_potential_paths "${DESKTOP_ENVIRONMENTS_SEARCH_RELATIVE_DIRS}" "." "sources/apt" + get_all_potential_paths "${DESKTOP_APPGROUPS_SEARCH_RELATIVE_DIRS}" "${DESKTOP_APPGROUPS_SELECTED}" "sources/apt" + + display_alert "ADDING ADDITIONAL APT SOURCES" + + for apt_sources_dirpath in ${potential_paths}; do + if [[ -d "${apt_sources_dirpath}" ]]; then + for apt_source_filepath in "${apt_sources_dirpath}/"*.source; do + local new_apt_source="$(cat "${apt_source_filepath}")" + display_alert "Adding APT Source ${new_apt_source}" + # -y -> Assumes yes to all queries + # -n -> Do not update package cache after adding + run_on_sdcard "add-apt-repository -y -n \"${new_apt_source}\"" + display_alert "Return code : $?" + + # temporally exception for jammy + [[ $RELEASE == "jammy" ]] && find "${SDCARD}/etc/apt/sources.list.d/." -type f \( -name "*.list" ! -name "armbian.list" \) -print0 | xargs -0 sed -i 's/jammy/hirsute/g' + + local apt_source_gpg_filepath="${apt_source_filepath}.gpg" + + # PPA provide GPG keys automatically, it seems. + # But other repositories (Docker for example) require the + # user to import GPG keys manually + # Myy : FIXME We need some automatic Git warnings when someone + # add a GPG key, since trusting the wrong keys could lead to + # serious issues. + if [[ -f "${apt_source_gpg_filepath}" ]]; then + display_alert "Adding GPG Key ${apt_source_gpg_filepath}" + local apt_source_gpg_filename="$(basename ${apt_source_gpg_filepath})" + cp "${apt_source_gpg_filepath}" "${SDCARD}/tmp/${apt_source_gpg_filename}" + run_on_sdcard "apt-key add \"/tmp/${apt_source_gpg_filename}\"" + echo "APT Key returned : $?" + fi + done + fi + done + +} + + + + +add_desktop_package_sources() { + + # Myy : I see Snap and Flatpak coming up in the next releases + # so... let's prepare for that + add_apt_sources + run_on_sdcard "apt-get -y -q update" + ls -l "${SDCARD}/etc/apt/sources.list.d" >> "${DEST}"/${LOG_SUBPATH}/install.log + cat "${SDCARD}/etc/apt/sources.list" >> "${DEST}"/${LOG_SUBPATH}/install.log + +} + + + + desktop_postinstall () { - # disable display manager for first run - #chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload disable lightdm.service >/dev/null 2>&1" - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get update" >> "${DEST}"/debug/install.log 2>&1 - if [[ ${FULL_DESKTOP} == yes ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_DESKTOP_FULL" >> "${DEST}"/debug/install.log 2>&1 - fi + # disable display manager for the first run + #run_on_sdcard "systemctl --no-reload disable lightdm.service >/dev/null 2>&1" + #run_on_sdcard "systemctl --no-reload disable gdm3.service >/dev/null 2>&1" + + # update packages index + run_on_sdcard "DEBIAN_FRONTEND=noninteractive apt-get update >/dev/null 2>&1" + + # install per board packages if [[ -n ${PACKAGE_LIST_DESKTOP_BOARD} ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_DESKTOP_BOARD" >> "${DEST}"/debug/install.log 2>&1 + run_on_sdcard "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_DESKTOP_BOARD" fi + # install per family packages if [[ -n ${PACKAGE_LIST_DESKTOP_FAMILY} ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_DESKTOP_FAMILY" >> "${DEST}"/debug/install.log 2>&1 + run_on_sdcard "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_DESKTOP_FAMILY" fi # Compile Turbo Frame buffer for sunxi @@ -144,11 +281,20 @@ desktop_postinstall () echo "extraargs=cma=96M" >> "${SDCARD}"/boot/orangepiEnv.txt fi - mkdir -p ${SDCARD}/etc/lightdm/lightdm.conf.d - cat <<-EOF > ${SDCARD}/etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf - [Seat:*] - autologin-user=$OPI_USERNAME - autologin-user-timeout=0 - user-session=xfce - EOF + if [[ -d ${SDCARD}/etc/lightdm ]]; then + mkdir -p ${SDCARD}/etc/lightdm/lightdm.conf.d + cat <<-EOF > ${SDCARD}/etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf + [Seat:*] + autologin-user=$OPI_USERNAME + autologin-user-timeout=0 + user-session=xfce + EOF + fi + + #mkdir -p /etc/gdm3 + #cat <<-EOF > /etc/gdm3/custom.conf + #[daemon] + #AutomaticLoginEnable = true + #AutomaticLogin = $RealUserName + #EOF } diff --git a/scripts/distributions.sh b/scripts/distributions.sh index 8765a46..09f956e 100755 --- a/scripts/distributions.sh +++ b/scripts/distributions.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,11 +8,15 @@ # Functions: + # install_common # install_rclocal # install_distribution_specific # post_debootstrap_tweaks + + + install_common() { display_alert "Applying common tweaks" "" "info" @@ -21,11 +25,11 @@ install_common() if [[ $CRYPTROOT_ENABLE == yes ]]; then display_alert "Installing rootfs encryption related packages" "cryptsetup" "info" chroot "${SDCARD}" /bin/bash -c "apt-get -y -qq --no-install-recommends install cryptsetup" \ - >> "${DEST}"/debug/install.log 2>&1 + >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 if [[ $CRYPTROOT_SSH_UNLOCK == yes ]]; then display_alert "Installing rootfs encryption related packages" "dropbear-initramfs" "info" chroot "${SDCARD}" /bin/bash -c "apt-get -y -qq --no-install-recommends install dropbear-initramfs cryptsetup-initramfs" \ - >> "${DEST}"/debug/install.log 2>&1 + >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 fi fi @@ -38,7 +42,7 @@ install_common() # adjust initramfs dropbear configuration # needs to be done before kernel installation, else it won't be in the initrd image if [[ $CRYPTROOT_ENABLE == yes && $CRYPTROOT_SSH_UNLOCK == yes ]]; then - # Set the port of the dropbear ssh deamon in the initramfs to a different one if configured + # Set the port of the dropbear ssh daemon in the initramfs to a different one if configured # this avoids the typical 'host key changed warning' - `WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!` [[ -f "${SDCARD}"/etc/dropbear-initramfs/config ]] && \ sed -i 's/^#DROPBEAR_OPTIONS=/DROPBEAR_OPTIONS="-p '"${CRYPTROOT_SSH_UNLOCK_PORT}"'"/' \ @@ -52,13 +56,13 @@ install_common() # this key should be changed by the user on first login display_alert "Generating a new SSH key pair for dropbear (initramfs)" "" "" ssh-keygen -t ecdsa -f "${SDCARD}"/etc/dropbear-initramfs/id_ecdsa \ - -N '' -O force-command=cryptroot-unlock -C 'AUTOGENERATED_BY_ARMBIAN_BUILD' >> "${DEST}"/debug/install.log 2>&1 + -N '' -O force-command=cryptroot-unlock -C 'AUTOGENERATED_BY_ARMBIAN_BUILD' >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 # /usr/share/initramfs-tools/hooks/dropbear will automatically add 'id_ecdsa.pub' to authorized_keys file # during mkinitramfs of update-initramfs #cat "${SDCARD}"/etc/dropbear-initramfs/id_ecdsa.pub > "${SDCARD}"/etc/dropbear-initramfs/authorized_keys # The version of the Linux kernel - CRYPTROOT_SSH_UNLOCK_KEY_NAME="${BOARD^}_${REVISION}_${DISTRIBUTION,}_${RELEASE}_${IMAGETYPE}_linux"$(grab_version "$LINUXSOURCEDIR")"".key + CRYPTROOT_SSH_UNLOCK_KEY_NAME="${BOARD^}_${REVISION}_${DISTRIBUTION,}_${RELEASE}_${SELECTED_CONFIGURATION}_linux"$(grab_version "$LINUXSOURCEDIR")"".key # copy dropbear ssh key to image output dir for convenience cp "${SDCARD}"/etc/dropbear-initramfs/id_ecdsa "${DEST}/images/${CRYPTROOT_SSH_UNLOCK_KEY_NAME}" display_alert "SSH private key for dropbear (initramfs) has been copied to:" \ @@ -83,7 +87,7 @@ install_common() fi # configure MIN / MAX speed for cpufrequtils - cat <<-EOF > "${SDCARD}"/etc/default/cpufrequtils + cat <<-EOF > "${SDCARD}"/etc/default/cpufrequtils ENABLE=true MIN_SPEED=$CPUMIN MAX_SPEED=$CPUMAX @@ -131,9 +135,9 @@ install_common() #mkdir -p "${SDCARD}"/etc/systemd/system/serial-getty@.service.d/ #cat <<-EOF > "${SDCARD}"/etc/systemd/system/serial-getty@.service.d/override.conf #[Service] - #ExecStartPre=/bin/sleep 6 + #ExecStartPre=/bin/sh -c 'exec /bin/sleep 10' #ExecStart= - #ExecStart=-/sbin/agetty --noclear --autologin root %I $TERM + #ExecStart=-/sbin/agetty --noissue --autologin root %I $TERM #Type=idle #EOF #cp "${SDCARD}"/etc/systemd/system/serial-getty@.service.d/override.conf "${SDCARD}"/etc/systemd/system/getty@.service.d/override.conf @@ -142,9 +146,9 @@ install_common() #chroot "${SDCARD}" /bin/bash -c "chage -d 0 root" # change console welcome text - echo -e "Orange Pi ${REVISION} ${RELEASE^} \\l \n" > "${SDCARD}"/etc/issue - echo "Orange Pi ${REVISION} ${RELEASE^}" > "${SDCARD}"/etc/issue.net - sed -i "s/^PRETTY_NAME=.*/PRETTY_NAME=\"Orange Pi $REVISION "${RELEASE^}"\"/" "${SDCARD}"/etc/os-release + echo -e "${VENDOR} ${REVISION} ${RELEASE^} \\l \n" > "${SDCARD}"/etc/issue + echo "${VENDOR} ${REVISION} ${RELEASE^}" > "${SDCARD}"/etc/issue.net + sed -i "s/^PRETTY_NAME=.*/PRETTY_NAME=\"${VENDOR} $REVISION "${RELEASE^}"\"/" "${SDCARD}"/etc/os-release # enable few bash aliases enabled in Ubuntu by default to make it even sed "s/#alias ll='ls -l'/alias ll='ls -l'/" -i "${SDCARD}"/etc/skel/.bashrc @@ -164,42 +168,62 @@ install_common() # NOTE: this needs to be executed before family_tweaks local bootscript_src=${BOOTSCRIPT%%:*} local bootscript_dst=${BOOTSCRIPT##*:} - cp "${EXTER}/config/bootscripts/${bootscript_src}" "${SDCARD}/boot/${bootscript_dst}" - if [[ -n $BOOTENV_FILE ]]; then - if [[ -f $USERPATCHES_PATH/bootenv/$BOOTENV_FILE ]]; then - cp "$USERPATCHES_PATH/bootenv/${BOOTENV_FILE}" "${SDCARD}"/boot/orangepiEnv.txt - elif [[ -f $EXTER/config/bootenv/$BOOTENV_FILE ]]; then - cp "${EXTER}/config/bootenv/${BOOTENV_FILE}" "${SDCARD}"/boot/orangepiEnv.txt - fi - fi - - if [[ $ROOTFS_TYPE == nfs ]]; then - display_alert "Copying NFS boot script template" - if [[ -f $USERPATCHES_PATH/nfs-boot.cmd ]]; then - cp "$USERPATCHES_PATH"/nfs-boot.cmd "${SDCARD}"/boot/boot.cmd - else - cp "${EXTER}"/config/templates/nfs-boot.cmd.template "${SDCARD}"/boot/boot.cmd - - if [[ -z $NFS_LOCAL_IP ]]; then - NFS_LOCAL_IP=$(ifconfig "${NET_IFNAME}" | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p') + # create extlinux config file + if [[ $SRC_EXTLINUX == yes ]]; then + mkdir -p $SDCARD/boot/extlinux + cat <<-EOF > "$SDCARD/boot/extlinux/extlinux.conf" + label ${VENDOR} + kernel /boot/$NAME_KERNEL + initrd /boot/$NAME_INITRD + EOF + if [[ -n $BOOT_FDT_FILE ]]; then + if [[ $BOOT_FDT_FILE != "none" ]]; then + echo " fdt /boot/dtb/$BOOT_FDT_FILE" >> "$SDCARD/boot/extlinux/extlinux.conf" fi - - sed -i "s#BRANCH#$BRANCH#" "${SDCARD}"/boot/boot.cmd - sed -i "s#NFS_LOCAL_IP#$NFS_LOCAL_IP#" "${SDCARD}"/boot/boot.cmd - sed -i "s#NFS_ROOTFS#$NFS_ROOTFS#" "${SDCARD}"/boot/boot.cmd + else + echo " fdtdir /boot/dtb/" >> "$SDCARD/boot/extlinux/extlinux.conf" fi + else + + if [[ "${BOOTCONFIG}" != "none" ]]; then + if [ -f "${USERPATCHES_PATH}/bootscripts/${bootscript_src}" ]; then + cp "${USERPATCHES_PATH}/bootscripts/${bootscript_src}" "${SDCARD}/boot/${bootscript_dst}" + else + cp "${EXTER}/config/bootscripts/${bootscript_src}" "${SDCARD}/boot/${bootscript_dst}" + fi + fi + + if [[ -n $BOOTENV_FILE ]]; then + if [[ -f $USERPATCHES_PATH/bootenv/$BOOTENV_FILE ]]; then + cp "$USERPATCHES_PATH/bootenv/${BOOTENV_FILE}" "${SDCARD}"/boot/orangepiEnv.txt + elif [[ -f $EXTER/config/bootenv/$BOOTENV_FILE ]]; then + cp "${EXTER}/config/bootenv/${BOOTENV_FILE}" "${SDCARD}"/boot/orangepiEnv.txt + fi + fi + + # TODO: modify $bootscript_dst or orangepiEnv.txt to make NFS boot universal + # instead of copying sunxi-specific template + if [[ $ROOTFS_TYPE == nfs ]]; then + display_alert "Copying NFS boot script template" + if [[ -f $USERPATCHES_PATH/nfs-boot.cmd ]]; then + cp "$USERPATCHES_PATH"/nfs-boot.cmd "${SDCARD}"/boot/boot.cmd + else + cp "${EXTER}"/config/templates/nfs-boot.cmd.template "${SDCARD}"/boot/boot.cmd + fi + fi + + [[ -n $OVERLAY_PREFIX && -f "${SDCARD}"/boot/orangepiEnv.txt && $BRANCH == current ]] && \ + echo "overlay_prefix=$OVERLAY_PREFIX" >> "${SDCARD}"/boot/orangepiEnv.txt + + [[ -n $DEFAULT_OVERLAYS && -f "${SDCARD}"/boot/orangepiEnv.txt && $BRANCH == current ]] && \ + echo "overlays=${DEFAULT_OVERLAYS//,/ }" >> "${SDCARD}"/boot/orangepiEnv.txt + + [[ -n $BOOT_FDT_FILE && -f "${SDCARD}"/boot/orangepiEnv.txt ]] && \ + echo "fdtfile=${BOOT_FDT_FILE}" >> "${SDCARD}/boot/orangepiEnv.txt" + fi - [[ -n $OVERLAY_PREFIX && -f $SDCARD/boot/orangepiEnv.txt && $BRANCH == current ]] && \ - echo "overlay_prefix=$OVERLAY_PREFIX" >> "${SDCARD}"/boot/orangepiEnv.txt - - [[ -n $DEFAULT_OVERLAYS && -f $SDCARD/boot/orangepiEnv.txt && $BRANCH == current ]] && \ - echo "overlays=${DEFAULT_OVERLAYS//,/ }" >> "${SDCARD}"/boot/orangepiEnv.txt - - [[ -n $BOOT_FDT_FILE && -f $SDCARD/boot/orangepiEnv.txt ]] && \ - echo "fdtfile=${BOOT_FDT_FILE}" >> "${SDCARD}/boot/orangepiEnv.txt" - # initial date for fake-hwclock date -u '+%Y-%m-%d %H:%M:%S' > "${SDCARD}"/etc/fake-hwclock.data @@ -207,7 +231,8 @@ install_common() # set hostname in hosts file cat <<-EOF > "${SDCARD}"/etc/hosts - 127.0.0.1 localhost $HOST + 127.0.0.1 localhost + 127.0.1.1 $HOST ::1 localhost $HOST ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix @@ -215,81 +240,116 @@ install_common() ff02::2 ip6-allrouters EOF + cd $SRC + + # Prepare and export caching-related params common to all apt calls below, to maximize apt-cacher-ng usage + export APT_EXTRA_DIST_PARAMS="" + [[ $NO_APT_CACHER != yes ]] && APT_EXTRA_DIST_PARAMS="-o Acquire::http::Proxy=\"http://${APT_PROXY_ADDR:-localhost:3142}\" -o Acquire::http::Proxy::localhost=\"DIRECT\"" + + display_alert "Cleaning" "package lists" + chroot "${SDCARD}" /bin/bash -c "apt-get clean" + display_alert "Updating" "package lists" - chroot "${SDCARD}" /bin/bash -c "apt-get update" >> "${DEST}"/debug/install.log 2>&1 + chroot "${SDCARD}" /bin/bash -c "apt-get ${APT_EXTRA_DIST_PARAMS} update" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + + display_alert "Temporarily disabling" "initramfs-tools hook for kernel" + chroot "${SDCARD}" /bin/bash -c "chmod -v -x /etc/kernel/postinst.d/initramfs-tools" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 # install family packages if [[ -n ${PACKAGE_LIST_FAMILY} ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_FAMILY" >> "${DEST}"/debug/install.log 2>&1 + display_alert "Installing PACKAGE_LIST_FAMILY packages" "${PACKAGE_LIST_FAMILY}" + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq --no-install-recommends install $PACKAGE_LIST_FAMILY" >> "${DEST}"/${LOG_SUBPATH}/install.log fi - # install family packages + # install board packages if [[ -n ${PACKAGE_LIST_BOARD} ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq --no-install-recommends install $PACKAGE_LIST_BOARD" >> "${DEST}"/debug/install.log 2>&1 + display_alert "Installing PACKAGE_LIST_BOARD packages" "${PACKAGE_LIST_BOARD}" + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq --no-install-recommends install $PACKAGE_LIST_BOARD" >> "${DEST}"/${LOG_SUBPATH}/install.log || { display_alert "Failed to install PACKAGE_LIST_BOARD" "${PACKAGE_LIST_BOARD}" "err"; exit 2; } fi - # remove family packages - if [[ -n ${PACKAGE_LIST_FAMILY_REMOVE} ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq remove --auto-remove $PACKAGE_LIST_FAMILY_REMOVE" >> "${DEST}"/debug/install.log 2>&1 - fi - - # remove board packages - if [[ -n ${PACKAGE_LIST_BOARD_REMOVE} ]]; then - chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq remove --auto-remove $PACKAGE_LIST_BOARD_REMOVE" >> "${DEST}"/debug/install.log 2>&1 - fi + # remove family packages + if [[ -n ${PACKAGE_LIST_FAMILY_REMOVE} ]]; then + display_alert "Removing PACKAGE_LIST_FAMILY_REMOVE packages" "${PACKAGE_LIST_FAMILY_REMOVE}" + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq remove --auto-remove $PACKAGE_LIST_FAMILY_REMOVE" >> "${DEST}"/${LOG_SUBPATH}/install.log + fi + + # remove board packages + if [[ -n ${PACKAGE_LIST_BOARD_REMOVE} ]]; then + display_alert "Removing PACKAGE_LIST_BOARD_REMOVE packages" "${PACKAGE_LIST_BOARD_REMOVE}" + for PKG_REMOVE in ${PACKAGE_LIST_BOARD_REMOVE}; do + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get ${APT_EXTRA_DIST_PARAMS} -yqq remove --auto-remove ${PKG_REMOVE}" >> "${DEST}"/${LOG_SUBPATH}/install.log + done + fi # install u-boot - if [[ "${REPOSITORY_INSTALL}" != *u-boot* ]]; then - UBOOT_VER=$(dpkg --info "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') - install_deb_chroot "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" - else - UBOOT_VER=$(dpkg --info "${DEB_ORANGEPI}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') - install_deb_chroot "${DEB_ORANGEPI}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" "orangepi" - fi + # @TODO: add install_bootloader() extension method, refactor into u-boot extension + [[ "${BOOTCONFIG}" != "none" ]] && { + if [[ "${REPOSITORY_INSTALL}" != *u-boot* ]]; then + UBOOT_VER=$(dpkg --info "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') + install_deb_chroot "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" + else + UBOOT_VER=$(dpkg --info "${DEB_ORANGEPI}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') + install_deb_chroot "${DEB_ORANGEPI}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" "orangepi" + fi + } + + call_extension_method "pre_install_kernel_debs" << 'PRE_INSTALL_KERNEL_DEBS' +*called before installing the Armbian-built kernel deb packages* +It is not too late to `unset KERNELSOURCE` here and avoid kernel install. +PRE_INSTALL_KERNEL_DEBS # install kernel - if [[ "${REPOSITORY_INSTALL}" != *kernel* ]]; then - VER=$(dpkg --info "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') - VER="${VER/-$LINUXFAMILY/}" - install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" - if [[ -f ${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then - install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb" - fi - if [[ $INSTALL_HEADERS == yes ]]; then - install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" - fi - else - VER=$(dpkg --info "${DEB_ORANGEPI}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') - VER="${VER/-$LINUXFAMILY/}" + [[ -n $KERNELSOURCE ]] && { + if [[ "${REPOSITORY_INSTALL}" != *kernel* ]]; then + VER=$(dpkg --info "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | awk -F"-" '/Source:/{print $2}') - install_deb_chroot "${DEB_ORANGEPI}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" "orangepi" + install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" + if [[ -f ${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then + install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb" + fi + if [[ $INSTALL_HEADERS == yes ]]; then + install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" + fi + else + VER=$(dpkg --info "${DEB_ORANGEPI}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}') + VER="${VER/-$LINUXFAMILY/}" - if [[ -f ${DEB_ORANGEPI}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then - install_deb_chroot "${DEB_ORANGEPI}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb" "orangepi" - fi + install_deb_chroot "${DEB_ORANGEPI}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" "orangepi" - if [[ $INSTALL_HEADERS == yes ]]; then - install_deb_chroot "${DEB_ORANGEPI}/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" "orangepi" + if [[ -f ${DEB_ORANGEPI}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then + install_deb_chroot "${DEB_ORANGEPI}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb" "orangepi" + fi + + if [[ $INSTALL_HEADERS == yes ]]; then + install_deb_chroot "${DEB_ORANGEPI}/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" "orangepi" + fi fi - fi + } + + call_extension_method "post_install_kernel_debs" << 'POST_INSTALL_KERNEL_DEBS' +*allow config to do more with the installed kernel/headers* +Called after packages, u-boot, kernel and headers installed in the chroot, but before the BSP is installed. +If `KERNELSOURCE` is (still?) unset after this, Armbian-built firmware will not be installed. +POST_INSTALL_KERNEL_DEBS # install board support packages if [[ "${REPOSITORY_INSTALL}" != *bsp* ]]; then - install_deb_chroot "${DEB_STORAGE}/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" + install_deb_chroot "${DEB_STORAGE}/$RELEASE/${BSP_CLI_PACKAGE_FULLNAME}.deb" | tee "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 else - install_deb_chroot "${DEB_ORANGEPI}/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" "orangepi" + install_deb_chroot "${DEB_ORANGEPI}/$RELEASE/${CHOSEN_ROOTFS}_${BSP_CLI_PACKAGE_FULLNAME}.deb" "orangepi" fi # install orangepi-desktop if [[ "${REPOSITORY_INSTALL}" != *orangepi-desktop* ]]; then if [[ $BUILD_DESKTOP == yes ]]; then - install_deb_chroot "${DEB_STORAGE}/$RELEASE/orangepi-${RELEASE}-desktop_${REVISION}_all.deb" + install_deb_chroot "${DEB_STORAGE}/${RELEASE}/${CHOSEN_DESKTOP}_${REVISION}_all.deb" + install_deb_chroot "${DEB_STORAGE}/${RELEASE}/${BSP_DESKTOP_PACKAGE_FULLNAME}.deb" # install display manager and PACKAGE_LIST_DESKTOP_FULL packages if enabled per board desktop_postinstall fi else if [[ $BUILD_DESKTOP == yes ]]; then - install_deb_chroot "${DEB_ORANGEPI}/$RELEASE/orangepi-${RELEASE}-desktop_${REVISION}_all.deb" "orangepi" + install_deb_chroot "${CHOSEN_DESKTOP}" "orangepi" # install display manager and PACKAGE_LIST_DESKTOP_FULL packages if enabled per board desktop_postinstall fi @@ -307,13 +367,28 @@ install_common() fi # install orangepi-config - if [[ "${REPOSITORY_INSTALL}" != *orangepi-config* ]]; then - if [[ $BUILD_MINIMAL != yes ]]; then - install_deb_chroot "${DEB_STORAGE}/orangepi-config_${REVISION}_all.deb" + if [[ "${PACKAGE_LIST_RM}" != *orangepi-config* ]]; then + if [[ "${REPOSITORY_INSTALL}" != *orangepi-config* ]]; then + if [[ $BUILD_MINIMAL != yes ]]; then + install_deb_chroot "${DEB_STORAGE}/orangepi-config_${REVISION}_all.deb" + fi + else + if [[ $BUILD_MINIMAL != yes ]]; then + install_deb_chroot "${DEB_ORANGEPI}/orangepi-config_${REVISION}_all.deb" "orangepi" + fi fi - else - if [[ $BUILD_MINIMAL != yes ]]; then - install_deb_chroot "${DEB_ORANGEPI}/orangepi-config_${REVISION}_all.deb" "orangepi" + fi + + # install orangepi-zsh + if [[ "${PACKAGE_LIST_RM}" != *orangepi-zsh* ]]; then + if [[ "${REPOSITORY_INSTALL}" != *orangepi-zsh* ]]; then + if [[ $BUILD_MINIMAL != yes ]]; then + install_deb_chroot "${DEB_STORAGE}/orangepi-zsh_${REVISION}_all.deb" + fi + else + if [[ $BUILD_MINIMAL != yes ]]; then + install_deb_chroot "orangepi-zsh" "remote" + fi fi fi @@ -333,7 +408,7 @@ install_common() if [[ $BSPFREEZE == yes ]]; then display_alert "Freezing Orange Pi packages" "$BOARD" "info" chroot "${SDCARD}" /bin/bash -c "apt-mark hold ${CHOSEN_KERNEL} ${CHOSEN_KERNEL/image/headers} \ - linux-u-boot-${BOARD}-${BRANCH} ${CHOSEN_KERNEL/image/dtb}" >> "${DEST}"/debug/install.log 2>&1 + linux-u-boot-${BOARD}-${BRANCH} ${CHOSEN_KERNEL/image/dtb}" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 fi # add orangepi user @@ -366,6 +441,12 @@ install_common() # execute $LINUXFAMILY-specific tweaks [[ $(type -t family_tweaks) == function ]] && family_tweaks + call_extension_method "post_family_tweaks" << 'FAMILY_TWEAKS' +*customize the tweaks made by $LINUXFAMILY-specific family_tweaks* +It is run after packages are installed in the rootfs, but before enabling additional services. +It allows implementors access to the rootfs (`${SDCARD}`) in its pristine state after packages are installed. +FAMILY_TWEAKS + # enable additional services chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload enable orangepi-firstrun.service >/dev/null 2>&1" chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload enable orangepi-firstrun-config.service >/dev/null 2>&1" @@ -395,7 +476,13 @@ install_common() chroot "${SDCARD}" /bin/bash -c "chown root:messagebus /usr/lib/dbus-1.0/dbus-daemon-launch-helper" chroot "${SDCARD}" /bin/bash -c "chmod u+s /usr/lib/dbus-1.0/dbus-daemon-launch-helper" - sed -i "s/^#kernel.printk*/kernel.printk/" "${SDCARD}"/etc/sysctl.conf + # disable samba NetBIOS over IP name service requests since it hangs when no network is present at boot + chroot "${SDCARD}" /bin/bash -c "systemctl --quiet disable nmbd 2> /dev/null" + + # disable low-level kernel messages for non betas + if [[ -z $BETA ]]; then + sed -i "s/^#kernel.printk*/kernel.printk/" "${SDCARD}"/etc/sysctl.conf + fi # disable repeated messages due to xconsole not being installed. [[ -f "${SDCARD}"/etc/rsyslog.d/50-default.conf ]] && \ @@ -413,6 +500,8 @@ install_common() for i in $(echo "${SERIALCON:-'ttyS0'}" | sed "s/,/ /g") do IFS=':' read -r -a array <<< "$i" + [[ "${array[0]}" == "tty1" ]] && continue # Don't enable tty1 as serial console. + display_alert "Enabling serial console" "${array[0]}" "info" # add serial console to secure tty list [ -z "$(grep -w '^${array[0]}' "${SDCARD}"/etc/securetty 2> /dev/null)" ] && \ echo "${array[0]}" >> "${SDCARD}"/etc/securetty @@ -423,10 +512,9 @@ install_common() sed -i "s/--keep-baud 115200/--keep-baud ${array[1]},115200/" \ "${SDCARD}/lib/systemd/system/serial-getty@${array[0]}.service" fi - display_alert "Enabling serial console" "${array[0]}" "info" - chroot "${SDCARD}" /bin/bash -c "systemctl daemon-reload" >> "${DEST}"/debug/install.log 2>&1 + chroot "${SDCARD}" /bin/bash -c "systemctl daemon-reload" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload enable serial-getty@${array[0]}.service" \ - >> "${DEST}"/debug/install.log 2>&1 + >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 if [[ "${array[0]}" == "ttyGS0" && $LINUXFAMILY == sun8i && $BRANCH == legacy ]]; then mkdir -p "${SDCARD}"/etc/systemd/system/serial-getty@ttyGS0.service.d cat <<-EOF > "${SDCARD}"/etc/systemd/system/serial-getty@ttyGS0.service.d/10-switch-role.conf @@ -451,7 +539,7 @@ install_common() cp "${SDCARD}"/etc/orangepi-release "${SDCARD}"/etc/orangepi-image-release # DNS fix. package resolvconf is not available everywhere - if [ -d /etc/resolvconf/resolv.conf.d ]; then + if [ -d /etc/resolvconf/resolv.conf.d ] && [ -n "$NAMESERVER" ]; then echo "nameserver $NAMESERVER" > "${SDCARD}"/etc/resolvconf/resolv.conf.d/head fi @@ -461,14 +549,55 @@ install_common() # enable PubkeyAuthentication sed -i 's/#\?PubkeyAuthentication .*/PubkeyAuthentication yes/' "${SDCARD}"/etc/ssh/sshd_config - # configure network manager - sed "s/managed=\(.*\)/managed=true/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf + if [ -f "${SDCARD}"/etc/NetworkManager/NetworkManager.conf ]; then + # configure network manager + sed "s/managed=\(.*\)/managed=true/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf - # remove network manager defaults to handle eth by default - rm -f "${SDCARD}"/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf + # remove network manager defaults to handle eth by default + rm -f "${SDCARD}"/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf - # most likely we don't need to wait for nm to get online - chroot "${SDCARD}" /bin/bash -c "systemctl disable NetworkManager-wait-online.service" >> "${DEST}"/debug/install.log 2>&1 + # most likely we don't need to wait for nm to get online + chroot "${SDCARD}" /bin/bash -c "systemctl disable NetworkManager-wait-online.service" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + + # Just regular DNS and maintain /etc/resolv.conf as a file + sed "/dns/d" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf + sed "s/\[main\]/\[main\]\ndns=default\nrc-manager=file/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf + if [[ -n $NM_IGNORE_DEVICES ]]; then + mkdir -p "${SDCARD}"/etc/NetworkManager/conf.d/ + cat <<-EOF > "${SDCARD}"/etc/NetworkManager/conf.d/10-ignore-interfaces.conf + [keyfile] + unmanaged-devices=$NM_IGNORE_DEVICES + EOF + fi + + elif [ -d "${SDCARD}"/etc/systemd/network ]; then + # configure networkd + rm "${SDCARD}"/etc/resolv.conf + ln -s /run/systemd/resolve/resolv.conf "${SDCARD}"/etc/resolv.conf + + # enable services + chroot "${SDCARD}" /bin/bash -c "systemctl enable systemd-networkd.service systemd-resolved.service" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + + if [ -e /etc/systemd/timesyncd.conf ]; then + chroot "${SDCARD}" /bin/bash -c "systemctl enable systemd-timesyncd.service" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + fi + umask 022 + cat > "${SDCARD}"/etc/systemd/network/eth0.network <<- __EOF__ + [Match] + Name=eth0 + + [Network] + #MACAddress= + DHCP=ipv4 + LinkLocalAddressing=ipv4 + #Address=192.168.1.100/24 + #Gateway=192.168.1.1 + #DNS=192.168.1.1 + #Domains=example.com + NTP=0.pool.ntp.org 1.pool.ntp.org + __EOF__ + + fi # avahi daemon defaults if exists [[ -f "${SDCARD}"/usr/share/doc/avahi-daemon/examples/sftp-ssh.service ]] && \ @@ -476,28 +605,17 @@ install_common() [[ -f "${SDCARD}"/usr/share/doc/avahi-daemon/examples/ssh.service ]] && \ cp "${SDCARD}"/usr/share/doc/avahi-daemon/examples/ssh.service "${SDCARD}"/etc/avahi/services/ - # Just regular DNS and maintain /etc/resolv.conf as a file - sed "/dns/d" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf - sed "s/\[main\]/\[main\]\ndns=default\nrc-manager=file/g" -i "${SDCARD}"/etc/NetworkManager/NetworkManager.conf - if [[ -n $NM_IGNORE_DEVICES ]]; then - mkdir -p "${SDCARD}"/etc/NetworkManager/conf.d/ - cat <<-EOF > "${SDCARD}"/etc/NetworkManager/conf.d/10-ignore-interfaces.conf - [keyfile] - unmanaged-devices=$NM_IGNORE_DEVICES - EOF - fi - # nsswitch settings for sane DNS behavior: remove resolve, assure libnss-myhostname support sed "s/hosts\:.*/hosts: files mymachines dns myhostname/g" -i "${SDCARD}"/etc/nsswitch.conf # build logo in any case - #boot_logo + boot_logo + + # disable MOTD for first boot - we want as clean 1st run as possible + chmod -x "${SDCARD}"/etc/update-motd.d/* } - - - install_rclocal() { @@ -521,9 +639,6 @@ install_rclocal() } - - - install_distribution_specific() { @@ -544,7 +659,7 @@ install_distribution_specific() ;; - stretch|buster) + stretch|buster|sid) # remove doubled uname from motd [[ -f "${SDCARD}"/etc/update-motd.d/10-uname ]] && rm "${SDCARD}"/etc/update-motd.d/10-uname @@ -563,17 +678,33 @@ install_distribution_specific() [[ $(grep -L "VERSION_ID=" "${SDCARD}"/etc/os-release) ]] && echo 'VERSION_ID="11"' >> "${SDCARD}"/etc/os-release [[ $(grep -L "VERSION=" "${SDCARD}"/etc/os-release) ]] && echo 'VERSION="11 (bullseye)"' >> "${SDCARD}"/etc/os-release + + ;; + + bookworm) + + # remove doubled uname from motd + [[ -f "${SDCARD}"/etc/update-motd.d/10-uname ]] && rm "${SDCARD}"/etc/update-motd.d/10-uname + # rc.local is not existing but one might need it + install_rclocal + # fix missing versioning + [[ $(grep -L "VERSION_ID=" "${SDCARD}"/etc/os-release) ]] && echo 'VERSION_ID="12"' >> "${SDCARD}"/etc/os-release + [[ $(grep -L "VERSION=" "${SDCARD}"/etc/os-release) ]] && echo 'VERSION="11 (bookworm)"' >> "${SDCARD}"/etc/os-release + # remove security updates repository since it does not exists yet sed '/security/ d' -i "${SDCARD}"/etc/apt/sources.list ;; - bionic|eoan|focal) + bionic|focal|hirsute|impish|jammy) # by using default lz4 initrd compression leads to corruption, go back to proven method sed -i "s/^COMPRESS=.*/COMPRESS=gzip/" "${SDCARD}"/etc/initramfs-tools/initramfs.conf - # remove doubled uname from motd - [[ -f "${SDCARD}"/etc/update-motd.d/10-uname ]] && rm "${SDCARD}"/etc/update-motd.d/10-uname + # cleanup motd services and related files + chroot "${SDCARD}" /bin/bash -c "systemctl disable motd-news.service >/dev/null 2>&1" + chroot "${SDCARD}" /bin/bash -c "systemctl disable motd-news.timer >/dev/null 2>&1" + + rm -f "${SDCARD}"/etc/update-motd.d/{10-uname,10-help-text,50-motd-news,80-esm,80-livepatch,90-updates-available,91-release-upgrade,95-hwe-eol} # remove motd news from motd.ubuntu.com [[ -f "${SDCARD}"/etc/default/motd-news ]] && sed -i "s/^ENABLED=.*/ENABLED=0/" "${SDCARD}"/etc/default/motd-news @@ -581,15 +712,23 @@ install_distribution_specific() # rc.local is not existing but one might need it install_rclocal - # Basic Netplan config. Let NetworkManager manage all devices on this system + if [ -d "${SDCARD}"/etc/NetworkManager ]; then + local RENDERER=NetworkManager + else + local RENDERER=networkd + fi + + # Basic Netplan config. Let NetworkManager/networkd manage all devices on this system [[ -d "${SDCARD}"/etc/netplan ]] && cat <<-EOF > "${SDCARD}"/etc/netplan/orangepi-default.yaml network: version: 2 - renderer: NetworkManager + renderer: $RENDERER EOF # DNS fix - sed -i "s/#DNS=.*/DNS=$NAMESERVER/g" "${SDCARD}"/etc/systemd/resolved.conf + if [ -n "$NAMESERVER" ]; then + sed -i "s/#DNS=.*/DNS=$NAMESERVER/g" "${SDCARD}"/etc/systemd/resolved.conf + fi # Journal service adjustements sed -i "s/#Storage=.*/Storage=volatile/g" "${SDCARD}"/etc/systemd/journald.conf @@ -607,6 +746,12 @@ install_distribution_specific() esac + # use list modules INITRAMFS + if [ -f "${EXTER}"/config/modules/"${MODULES_INITRD}" ]; then + display_alert "Use file list modules INITRAMFS" "${MODULES_INITRD}" + sed -i "s/^MODULES=.*/MODULES=list/" "${SDCARD}"/etc/initramfs-tools/initramfs.conf + cat "${EXTER}"/config/modules/"${MODULES_INITRD}" >> "${SDCARD}"/etc/initramfs-tools/modules + fi } @@ -621,4 +766,10 @@ post_debootstrap_tweaks() chroot "${SDCARD}" /bin/bash -c "dpkg-divert --quiet --local --rename --remove /sbin/start-stop-daemon" rm -f "${SDCARD}"/usr/sbin/policy-rc.d "${SDCARD}/usr/bin/${QEMU_BINARY}" + call_extension_method "post_post_debootstrap_tweaks" "config_post_debootstrap_tweaks" << 'POST_POST_DEBOOTSTRAP_TWEAKS' +*run after removing diversions and qemu with chroot unmounted* +Last chance to touch the `${SDCARD}` filesystem before it is copied to the final media. +It is too late to run any chrooted commands, since the supporting filesystems are already unmounted. +POST_POST_DEBOOTSTRAP_TWEAKS + } diff --git a/scripts/extensions.sh b/scripts/extensions.sh new file mode 100755 index 0000000..4bc75fc --- /dev/null +++ b/scripts/extensions.sh @@ -0,0 +1,447 @@ +# global variables managing the state of the extension manager. treat as private. +declare -A extension_function_info # maps a function name to a string with KEY=VALUEs information about the defining extension +declare -i initialize_extension_manager_counter=0 # how many times has the extension manager initialized? +declare -A defined_hook_point_functions # keeps a map of hook point functions that were defined and their extension info +declare -A hook_point_function_trace_sources # keeps a map of hook point functions that were actually called and their source +declare -A hook_point_function_trace_lines # keeps a map of hook point functions that were actually called and their source +declare fragment_manager_cleanup_file # this is a file used to cleanup the manager's produced functions, for build_all_ng +# configuration. +export DEBUG_EXTENSION_CALLS=no # set to yes to log every hook function called to the main build log +export LOG_ENABLE_EXTENSION=yes # colorful logs with stacktrace when enable_extension is called. + +# This is a helper function for calling hooks. +# It follows the pattern long used in the codebase for hook-like behaviour: +# [[ $(type -t name_of_hook_function) == function ]] && name_of_hook_function +# but with the following added behaviors: +# 1) it allows for many arguments, and will treat each as a hook point. +# this allows for easily kept backwards compatibility when renaming hooks, for example. +# 2) it will read the stdin and assume it's (Markdown) documentation for the hook point. +# combined with heredoc in the call site, it allows for "inline" documentation about the hook +# notice: this is not involved in how the hook functions came to be. read below for that. +call_extension_method() { + # First, consume the stdin and write metadata about the call. + write_hook_point_metadata "$@" || true + + # @TODO: hack to handle stdin again, possibly with '< /dev/tty' + + # Then a sanity check, hook points should only be invoked after the manager has initialized. + if [[ ${initialize_extension_manager_counter} -lt 1 ]]; then + display_alert "Extension problem" "Call to call_extension_method() (in ${BASH_SOURCE[1]- $(get_extension_hook_stracktrace "${BASH_SOURCE[*]}" "${BASH_LINENO[*]}")}) before extension manager is initialized." "err" + fi + + # With DEBUG_EXTENSION_CALLS, log the hook call. Users might be wondering what/when is a good hook point to use, and this is visual aid. + [[ "${DEBUG_EXTENSION_CALLS}" == "yes" ]] && + display_alert "--> Extension Method '${1}' being called from" "$(get_extension_hook_stracktrace "${BASH_SOURCE[*]}" "${BASH_LINENO[*]}")" "" + + # Then call the hooks, if they are defined. + for hook_name in "$@"; do + echo "-- Extension Method being called: ${hook_name}" >>"${EXTENSION_MANAGER_LOG_FILE}" + # shellcheck disable=SC2086 + [[ $(type -t ${hook_name}) == function ]] && { ${hook_name}; } + done +} + +# what this does is a lot of bash mumbo-jumbo to find all board-,family-,config- or user-defined hook points. +# the meat of this is 'compgen -A function', which is bash builtin that lists all defined functions. +# it will then compose a full hook point (function) that calls all the implementing hooks. +# this centralized function will then be called by the regular Armbian build system, which is oblivious to how +# it came to be. (although it is encouraged to call hook points via call_extension_method() above) +# to avoid hard coding the list of hook-points (eg: user_config, image_tweaks_pre_customize, etc) we use +# a marker in the function names, namely "__" (two underscores) to determine the hook point. +initialize_extension_manager() { + # before starting, auto-add extensions specified (eg, on the command-line) via the ENABLE_EXTENSIONS env var. Do it only once. + [[ ${initialize_extension_manager_counter} -lt 1 ]] && [[ "${ENABLE_EXTENSIONS}" != "" ]] && { + local auto_extension + for auto_extension in $(echo "${ENABLE_EXTENSIONS}" | tr "," " "); do + ENABLE_EXTENSION_TRACE_HINT="ENABLE_EXTENSIONS -> " enable_extension "${auto_extension}" + done + } + + # This marks the manager as initialized, no more extensions are allowed to load after this. + export initialize_extension_manager_counter=$((initialize_extension_manager_counter + 1)) + + # Have a unique temporary dir, even if being built concurrently by build_all_ng. + export EXTENSION_MANAGER_TMP_DIR="${SRC}/.tmp/.extensions/${LOG_SUBPATH}" + mkdir -p "${EXTENSION_MANAGER_TMP_DIR}" + + # Log destination. + export EXTENSION_MANAGER_LOG_FILE="${EXTENSION_MANAGER_TMP_DIR}/extensions.log" + echo -n "" >"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt" + + # globally initialize the extensions log. + echo "-- lib/extensions.sh included. logs will be below, followed by the debug generated by the initialize_extension_manager() function." >"${EXTENSION_MANAGER_LOG_FILE}" + + # log whats happening. + echo "-- initialize_extension_manager() called." >>"${EXTENSION_MANAGER_LOG_FILE}" + + # this is the all-important separator. + local hook_extension_delimiter="__" + + # list all defined functions. filter only the ones that have the delimiter. get only the part before the delimiter. + # sort them, and make them unique. the sorting is required for uniq to work, and does not affect the ordering of execution. + # get them on a single line, space separated. + local all_hook_points + all_hook_points="$(compgen -A function | grep "${hook_extension_delimiter}" | awk -F "${hook_extension_delimiter}" '{print $1}' | sort | uniq | xargs echo -n)" + + declare -i hook_points_counter=0 hook_functions_counter=0 hook_point_functions_counter=0 + + # initialize the cleanups file. + fragment_manager_cleanup_file="${SRC}"/.tmp/extension_function_cleanup.sh + echo "# cleanups: " >"${fragment_manager_cleanup_file}" + + local FUNCTION_SORT_OPTIONS="--general-numeric-sort --ignore-case" # --random-sort could be used to introduce chaos + local hook_point="" + # now loop over the hook_points. + for hook_point in ${all_hook_points}; do + echo "-- hook_point ${hook_point}" >>"${EXTENSION_MANAGER_LOG_FILE}" + + # check if the hook point is already defined as a function. + # that can happen for example with user_config(), that can be implemented itself directly by a userpatches config. + # for now, just warn, but we could devise a way to actually integrate it in the call list. + # or: advise the user to rename their user_config() function to something like user_config__make_it_awesome() + local existing_hook_point_function + existing_hook_point_function="$(compgen -A function | grep "^${hook_point}\$")" + if [[ "${existing_hook_point_function}" == "${hook_point}" ]]; then + echo "--- hook_point_functions (final sorted realnames): ${hook_point_functions}" >>"${EXTENSION_MANAGER_LOG_FILE}" + display_alert "Extension conflict" "function ${hook_point} already defined! ignoring functions: $(compgen -A function | grep "^${hook_point}${hook_extension_delimiter}")" "wrn" + continue + fi + + # for each hook_point, obtain the list of implementing functions. + # the sort order here is (very) relevant, since it determines final execution order. + # so the name of the functions actually determine the ordering. + local hook_point_functions hook_point_functions_pre_sort hook_point_functions_sorted_by_sort_id + + # Sorting. Multiple extensions (or even the same extension twice) can implement the same hook point + # as long as they have different function names (the part after the double underscore __). + # the order those will be called depends on the name; eg: + # 'hook_point__033_be_awesome()' would be caller sooner than 'hook_point__799_be_even_more_awesome()' + # independent from where they were defined or in which order the extensions containing them were added. + # since requiring specific ordering could hamper portability, we reward extension authors who + # don't mind ordering for writing just: 'hook_point__be_just_awesome()' which is automatically rewritten + # as 'hook_point__500_be_just_awesome()'. + # extension authors who care about ordering can use the 3-digit number, and use the context variables + # HOOK_ORDER and HOOK_POINT_TOTAL_FUNCS to confirm in which order they're being run. + + # gather the real names of the functions (after the delimiter). + hook_point_functions_pre_sort="$(compgen -A function | grep "^${hook_point}${hook_extension_delimiter}" | awk -F "${hook_extension_delimiter}" '{print $2}' | xargs echo -n)" + echo "--- hook_point_functions_pre_sort: ${hook_point_functions_pre_sort}" >>"${EXTENSION_MANAGER_LOG_FILE}" + + # add "500_" to the names of function that do NOT start with a number. + # keep a reference from the new names to the old names (we'll sort on the new, but invoke the old) + declare -A hook_point_functions_sortname_to_realname + declare -A hook_point_functions_realname_to_sortname + for hook_point_function_realname in ${hook_point_functions_pre_sort}; do + local sort_id="${hook_point_function_realname}" + [[ ! $sort_id =~ ^[0-9] ]] && sort_id="500_${sort_id}" + hook_point_functions_sortname_to_realname[${sort_id}]="${hook_point_function_realname}" + hook_point_functions_realname_to_sortname[${hook_point_function_realname}]="${sort_id}" + done + + # actually sort the sort_id's... + # shellcheck disable=SC2086 + hook_point_functions_sorted_by_sort_id="$(echo "${hook_point_functions_realname_to_sortname[*]}" | tr " " "\n" | LC_ALL=C sort ${FUNCTION_SORT_OPTIONS} | xargs echo -n)" + echo "--- hook_point_functions_sorted_by_sort_id: ${hook_point_functions_sorted_by_sort_id}" >>"${EXTENSION_MANAGER_LOG_FILE}" + + # then map back to the real names, keeping the order.. + hook_point_functions="" + for hook_point_function_sortname in ${hook_point_functions_sorted_by_sort_id}; do + hook_point_functions="${hook_point_functions} ${hook_point_functions_sortname_to_realname[${hook_point_function_sortname}]}" + done + # shellcheck disable=SC2086 + hook_point_functions="$(echo -n ${hook_point_functions})" + echo "--- hook_point_functions (final sorted realnames): ${hook_point_functions}" >>"${EXTENSION_MANAGER_LOG_FILE}" + + hook_point_functions_counter=0 + hook_points_counter=$((hook_points_counter + 1)) + + # determine the variables we'll pass to the hook function during execution. + # this helps the extension author create extensions that are portable between userpatches and official Armbian. + # shellcheck disable=SC2089 + local common_function_vars="HOOK_POINT=\"${hook_point}\"" + + # loop over the functions for this hook_point (keep a total for the hook point and a grand running total) + for hook_point_function in ${hook_point_functions}; do + hook_point_functions_counter=$((hook_point_functions_counter + 1)) + hook_functions_counter=$((hook_functions_counter + 1)) + done + common_function_vars="${common_function_vars} HOOK_POINT_TOTAL_FUNCS=\"${hook_point_functions_counter}\"" + + echo "-- hook_point: ${hook_point} will run ${hook_point_functions_counter} functions: ${hook_point_functions}" >>"${EXTENSION_MANAGER_LOG_FILE}" + local temp_source_file_for_hook_point="${EXTENSION_MANAGER_TMP_DIR}/extension_function_definition.sh" + + hook_point_functions_loop_counter=0 + + # prepare the cleanup for the function, so we can remove our mess at the end of the build. + cat <<-FUNCTION_CLEANUP_FOR_HOOK_POINT >>"${fragment_manager_cleanup_file}" + unset ${hook_point} + FUNCTION_CLEANUP_FOR_HOOK_POINT + + # now compose a function definition. notice the heredoc. it will be written to tmp file, logged, then sourced. + # theres a lot of opportunities here, but for now I keep it simple: + # - execute functions in the order defined by ${hook_point_functions} above + # - define call-specific environment variables, to help extension authors to write portable extensions (eg: EXTENSION_DIR) + cat <<-FUNCTION_DEFINITION_HEADER >"${temp_source_file_for_hook_point}" + ${hook_point}() { + echo "*** Extension-managed hook starting '${hook_point}': will run ${hook_point_functions_counter} functions: '${hook_point_functions}'" >>"\${EXTENSION_MANAGER_LOG_FILE}" + FUNCTION_DEFINITION_HEADER + + for hook_point_function in ${hook_point_functions}; do + hook_point_functions_loop_counter=$((hook_point_functions_loop_counter + 1)) + + # store the full name in a hash, so we can track which were actually called later. + defined_hook_point_functions["${hook_point}${hook_extension_delimiter}${hook_point_function}"]="DEFINED=yes ${extension_function_info["${hook_point}${hook_extension_delimiter}${hook_point_function}"]}" + + # prepare the call context + local hook_point_function_variables="${common_function_vars}" # start with common vars... (eg: HOOK_POINT_TOTAL_FUNCS) + # add the contextual extension info for the function (eg, EXTENSION_DIR) + hook_point_function_variables="${hook_point_function_variables} ${extension_function_info["${hook_point}${hook_extension_delimiter}${hook_point_function}"]}" + # add the current execution counter, so the extension author can know in which order it is being actually called + hook_point_function_variables="${hook_point_function_variables} HOOK_ORDER=\"${hook_point_functions_loop_counter}\"" + + # add it to our (not the call site!) environment. if we export those in the call site, the stack is corrupted. + eval "${hook_point_function_variables}" + + # output the call, passing arguments, and also logging the output to the extensions log. + # attention: don't pipe here (eg, capture output), otherwise hook function cant modify the environment (which is mostly the point) + # @TODO: better error handling. we have a good opportunity to 'set -e' here, and 'set +e' after, so that extension authors are encouraged to write error-free handling code + cat <<-FUNCTION_DEFINITION_CALLSITE >>"${temp_source_file_for_hook_point}" + hook_point_function_trace_sources["${hook_point}${hook_extension_delimiter}${hook_point_function}"]="\${BASH_SOURCE[*]}" + hook_point_function_trace_lines["${hook_point}${hook_extension_delimiter}${hook_point_function}"]="\${BASH_LINENO[*]}" + [[ "\${DEBUG_EXTENSION_CALLS}" == "yes" ]] && display_alert "---> Extension Method ${hook_point}" "${hook_point_functions_loop_counter}/${hook_point_functions_counter} (ext:${EXTENSION:-built-in}) ${hook_point_function}" "" + echo "*** *** Extension-managed hook starting ${hook_point_functions_loop_counter}/${hook_point_functions_counter} '${hook_point}${hook_extension_delimiter}${hook_point_function}':" >>"\${EXTENSION_MANAGER_LOG_FILE}" + ${hook_point_function_variables} ${hook_point}${hook_extension_delimiter}${hook_point_function} "\$@" + echo "*** *** Extension-managed hook finished ${hook_point_functions_loop_counter}/${hook_point_functions_counter} '${hook_point}${hook_extension_delimiter}${hook_point_function}':" >>"\${EXTENSION_MANAGER_LOG_FILE}" + FUNCTION_DEFINITION_CALLSITE + + # output the cleanup for the implementation as well. + cat <<-FUNCTION_CLEANUP_FOR_HOOK_POINT_IMPLEMENTATION >>"${fragment_manager_cleanup_file}" + unset ${hook_point}${hook_extension_delimiter}${hook_point_function} + FUNCTION_CLEANUP_FOR_HOOK_POINT_IMPLEMENTATION + + # unset extension vars for the next loop. + unset EXTENSION EXTENSION_DIR EXTENSION_FILE EXTENSION_ADDED_BY + done + + cat <<-FUNCTION_DEFINITION_FOOTER >>"${temp_source_file_for_hook_point}" + echo "*** Extension-managed hook ending '${hook_point}': completed." >>"\${EXTENSION_MANAGER_LOG_FILE}" + } # end ${hook_point}() function + FUNCTION_DEFINITION_FOOTER + + # unsets, lest the next loop inherits them + unset hook_point_functions hook_point_functions_sortname_to_realname hook_point_functions_realname_to_sortname + + # log what was produced in our own debug logfile + cat "${temp_source_file_for_hook_point}" >>"${EXTENSION_MANAGER_LOG_FILE}" + cat "${fragment_manager_cleanup_file}" >>"${EXTENSION_MANAGER_LOG_FILE}" + + # source the generated function. + # shellcheck disable=SC1090 + source "${temp_source_file_for_hook_point}" + + rm -f "${temp_source_file_for_hook_point}" + done + + # Dont show any output until we have more than 1 hook function (we implement one already, below) + [[ ${hook_functions_counter} -gt 0 ]] && + display_alert "Extension manager" "processed ${hook_points_counter} Extension Methods calls and ${hook_functions_counter} Extension Method implementations" "info" | tee -a "${EXTENSION_MANAGER_LOG_FILE}" +} + +cleanup_extension_manager() { + if [[ -f "${fragment_manager_cleanup_file}" ]]; then + display_alert "Cleaning up" "extension manager" "info" + # this will unset all the functions. + # shellcheck disable=SC1090 # dynamic source, thanks, shellcheck + source "${fragment_manager_cleanup_file}" + fi + # reset/unset the variables used + initialize_extension_manager_counter=0 + unset extension_function_info defined_hook_point_functions hook_point_function_trace_sources hook_point_function_trace_lines fragment_manager_cleanup_file +} + +# why not eat our own dog food? +# process everything that happened during extension related activities +# and write it to the log. also, move the log from the .tmp dir to its +# final location. this will make run_after_build() "hot" (eg, emit warnings) +run_after_build__999_finish_extension_manager() { + # export these maps, so the hook can access them and produce useful stuff. + export defined_hook_point_functions hook_point_function_trace_sources + + # eat our own dog food, pt2. + call_extension_method "extension_metadata_ready" <<'EXTENSION_METADATA_READY' +*meta-Meta time!* +Implement this hook to work with/on the meta-data made available by the extension manager. +Interesting stuff to process: +- `"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt"` contains a list of all hook points called, in order. +- For each hook_point in the list, more files will have metadata about that hook point. + - `${EXTENSION_MANAGER_TMP_DIR}/hook_point.orig.md` contains the hook documentation at the call site (inline docs), hopefully in Markdown format. + - `${EXTENSION_MANAGER_TMP_DIR}/hook_point.compat` contains the compatibility names for the hooks. + - `${EXTENSION_MANAGER_TMP_DIR}/hook_point.exports` contains _exported_ environment variables. + - `${EXTENSION_MANAGER_TMP_DIR}/hook_point.vars` contains _all_ environment variables. +- `${defined_hook_point_functions}` is a map of _all_ the defined hook point functions and their extension information. +- `${hook_point_function_trace_sources}` is a map of all the hook point functions _that were really called during the build_ and their BASH_SOURCE information. +- `${hook_point_function_trace_lines}` is the same, but BASH_LINENO info. +After this hook is done, the `${EXTENSION_MANAGER_TMP_DIR}` will be removed. +EXTENSION_METADATA_READY + + # Move temporary log file over to final destination, and start writing to it instead (although 999 is pretty late in the game) + mv "${EXTENSION_MANAGER_LOG_FILE}" "${DEST}/${LOG_SUBPATH:-debug}/extensions.log" + export EXTENSION_MANAGER_LOG_FILE="${DEST}/${LOG_SUBPATH:-debug}/extensions.log" + + # Cleanup. Leave no trace... + [[ -d "${EXTENSION_MANAGER_TMP_DIR}" ]] && rm -rf "${EXTENSION_MANAGER_TMP_DIR}" +} + +# This is called by call_extension_method(). To say the truth, this should be in an extension. But then it gets too meta for anyone's head. +write_hook_point_metadata() { + local main_hook_point_name="$1" + + [[ ! -d "${EXTENSION_MANAGER_TMP_DIR}" ]] && mkdir -p "${EXTENSION_MANAGER_TMP_DIR}" + cat - >"${EXTENSION_MANAGER_TMP_DIR}/${main_hook_point_name}.orig.md" # Write the hook point documentation received via stdin to a tmp file for later processing. + shift + echo -n "$@" >"${EXTENSION_MANAGER_TMP_DIR}/${main_hook_point_name}.compat" # log the 2nd+ arguments too (those are the alternative/compatibility names), separate file. + compgen -A export >"${EXTENSION_MANAGER_TMP_DIR}/${main_hook_point_name}.exports" # capture the exported env vars. + compgen -A variable >"${EXTENSION_MANAGER_TMP_DIR}/${main_hook_point_name}.vars" # capture all env vars. + + # add to the list of hook points called, in order. + echo "${main_hook_point_name}" >>"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt" +} + +# Helper function, to get clean "stack traces" that do not include the hook/extension infrastructure code. +get_extension_hook_stracktrace() { + local sources_str="$1" # Give this ${BASH_SOURCE[*]} - expanded + local lines_str="$2" # And this # Give this ${BASH_LINENO[*]} - expanded + local sources lines index final_stack="" + IFS=' ' read -r -a sources <<<"${sources_str}" + IFS=' ' read -r -a lines <<<"${lines_str}" + for index in "${!sources[@]}"; do + local source="${sources[index]}" line="${lines[((index - 1))]}" + # skip extension infrastructure sources, these only pollute the trace and add no insight to users + [[ ${source} == */.tmp/extension_function_definition.sh ]] && continue + [[ ${source} == *lib/extensions.sh ]] && continue + [[ ${source} == */compile.sh ]] && continue + # relativize the source, otherwise too long to display + source="${source#"${SRC}/"}" + # remove 'lib/'. hope this is not too confusing. + source="${source#"lib/"}" + # add to the list + arrow="$([[ "$final_stack" != "" ]] && echo "-> ")" + final_stack="${source}:${line} ${arrow} ${final_stack} " + done + # output the result, no newline + # shellcheck disable=SC2086 # I wanna suppress double spacing, thanks + echo -n $final_stack +} + +show_caller_full() { + local frame=0 + while caller $frame; do + ((frame++)) + done +} +# can be called by board, family, config or user to make sure an extension is included. +# single argument is the extension name. +# will look for it in /userpatches/extensions first. +# if not found there will look in /extensions +# if not found will exit 17 +declare -i enable_extension_recurse_counter=0 +declare -a enable_extension_recurse_stack +enable_extension() { + local extension_name="$1" + local extension_dir extension_file extension_file_in_dir extension_floating_file + local stacktrace + + # capture the stack leading to this, possibly with a hint in front. + stacktrace="${ENABLE_EXTENSION_TRACE_HINT}$(get_extension_hook_stracktrace "${BASH_SOURCE[*]}" "${BASH_LINENO[*]}")" + + # if LOG_ENABLE_EXTENSION, output useful stack, so user can figure out which extensions are being added where + [[ "${LOG_ENABLE_EXTENSION}" == "yes" ]] && + display_alert "Extension being added" "${extension_name} :: added by ${stacktrace}" "" + + # first a check, has the extension manager already initialized? then it is too late to enable_extension(). bail. + if [[ ${initialize_extension_manager_counter} -gt 0 ]]; then + display_alert "Extension problem" "already initialized -- too late to add '${extension_name}' (trace: ${stacktrace})" "err" + exit 2 + fi + + # check the counter. if recurring, add to the stack and return success + if [[ $enable_extension_recurse_counter -gt 1 ]]; then + enable_extension_recurse_stack+=("${extension_name}") + return 0 + fi + + # increment the counter + enable_extension_recurse_counter=$((enable_extension_recurse_counter + 1)) + + # there are many opportunities here. too many, actually. let userpatches override just some functions, etc. + for extension_base_path in "${SRC}/userpatches/extensions" "${EXTER}/extensions"; do + extension_dir="${extension_base_path}/${extension_name}" + extension_file_in_dir="${extension_dir}/${extension_name}.sh" + extension_floating_file="${extension_base_path}/${extension_name}.sh" + + if [[ -d "${extension_dir}" ]] && [[ -f "${extension_file_in_dir}" ]]; then + extension_file="${extension_file_in_dir}" + break + elif [[ -f "${extension_floating_file}" ]]; then + extension_dir="${extension_base_path}" # this is misleading. only directory-based extensions should have this. + extension_file="${extension_floating_file}" + break + fi + done + + # After that, we should either have extension_file and extension_dir, or throw. + if [[ ! -f "${extension_file}" ]]; then + echo "ERR: Extension problem -- cant find extension '${extension_name}' anywhere - called by ${BASH_SOURCE[1]}" + exit 17 # exit, forcibly. no way we can recover from this, and next extensions will get bogus errors as well. + fi + + local before_function_list after_function_list new_function_list + + # store a list of existing functions at this point, before sourcing the extension. + before_function_list="$(compgen -A function)" + + # error handling during a 'source' call is quite insane in bash after 4.3. + # to be able to catch errors in sourced scripts the only way is to trap + declare -i extension_source_generated_error=0 + trap 'extension_source_generated_error=1;' ERR + + # source the file. extensions are not supposed to do anything except export variables and define functions, so nothing should happen here. + # there is no way to enforce it though, short of static analysis. + # we could punish the extension authors who violate it by removing some essential variables temporarily from the environment during this source, and restore them later. + # shellcheck disable=SC1090 + source "${extension_file}" + + # remove the trap we set. + trap - ERR + + # decrement the recurse counter, so calls to this method are allowed again. + enable_extension_recurse_counter=$((enable_extension_recurse_counter - 1)) + + # test if it fell into the trap, and abort immediately with an error. + if [[ $extension_source_generated_error != 0 ]]; then + display_alert "Extension failed to load" "${extension_file}" "err" + exit 4 + fi + + # get a new list of functions after sourcing the extension + after_function_list="$(compgen -A function)" + + # compare before and after, thus getting the functions defined by the extension. + # comm is oldskool. we like it. go "man comm" to understand -13 below + new_function_list="$(comm -13 <(echo "$before_function_list" | sort) <(echo "$after_function_list" | sort))" + + # iterate over defined functions, store them in global associative array extension_function_info + for newly_defined_function in ${new_function_list}; do + extension_function_info["${newly_defined_function}"]="EXTENSION=\"${extension_name}\" EXTENSION_DIR=\"${extension_dir}\" EXTENSION_FILE=\"${extension_file}\" EXTENSION_ADDED_BY=\"${stacktrace}\"" + done + + # snapshot, then clear, the stack + local -a stack_snapshot=("${enable_extension_recurse_stack[@]}") + enable_extension_recurse_stack=() + + # process the stacked snapshot, finally enabling the extensions + for stacked_extension in "${stack_snapshot[@]}"; do + ENABLE_EXTENSION_TRACE_HINT="RECURSE ${stacktrace} ->" enable_extension "${stacked_extension}" + done + +} diff --git a/scripts/general.sh b/scripts/general.sh index ca9ecbf..da25f89 100755 --- a/scripts/general.sh +++ b/scripts/general.sh @@ -12,29 +12,38 @@ # exit_with_error # get_package_list_hash # create_sources_list +# clean_up_git +# waiter_local_git # fetch_from_repo +# improved_git # display_alert # fingerprint_image # distro_menu # addtorepo # repo-remove-old-packages # wait_for_package_manager +# install_pkg_deb # prepare_host_basic # prepare_host # webseed # download_and_verify -# run_after_build +# show_developer_warning +# show_checklist_variables + # cleaning # # target: what to clean # "make" - "make clean" for selected kernel and u-boot -# "debs" - delete output/debs +# "debs" - delete output/debs for board&branch +# "ubootdebs" - delete output/debs for uboot&board&branch +# "alldebs" - delete output/debs # "cache" - delete output/cache # "oldcache" - remove old output/cache # "images" - delete output/images # "sources" - delete output/sources # + cleaning() { case $1 in @@ -50,7 +59,15 @@ cleaning() -name "${CHOSEN_KERNEL/image/source}_*.deb" -o \ -name "${CHOSEN_KERNEL/image/firmware-image}_*.deb" \) -delete [[ -n $RELEASE ]] && rm -f "${DEB_STORAGE}/${RELEASE}/${CHOSEN_ROOTFS}"_*.deb - [[ -n $RELEASE ]] && rm -f ${DEB_STORAGE}/$RELEASE/orangepi-desktop-${RELEASE}_*.deb + [[ -n $RELEASE ]] && rm -f "${DEB_STORAGE}/${RELEASE}/orangepi-desktop-${RELEASE}"_*.deb + fi + ;; + + ubootdebs) # delete ${DEB_STORAGE} for uboot, current branch and family + if [[ -d "${DEB_STORAGE}" ]]; then + display_alert "Cleaning ${DEB_STORAGE} for u-boot" "$BOARD $BRANCH" "info" + # easier than dealing with variable expansion and escaping dashes in file names + find "${DEB_STORAGE}" -name "${CHOSEN_UBOOT}_*.deb" -delete fi ;; @@ -74,7 +91,7 @@ cleaning() ;; sources) # delete output/sources and output/buildpkg - [[ -d $EXTER/cache/sources ]] && display_alert "Cleaning" "sources" "info" && rm -rf $EXTER/cache/sources/* $DEST/buildpkg/* + [[ -d $EXTER/cache/sources ]] && display_alert "Cleaning" "sources" "info" && rm -rf $EXTER/cache/sources/* "${DEST}"/buildpkg/* ;; oldcache) # remove old `cache/rootfs` except for the newest 8 files @@ -102,14 +119,23 @@ exit_with_error() local _description=$1 local _highlight=$2 _file=$(basename "${BASH_SOURCE[1]}") + local stacktrace="$(get_extension_hook_stracktrace "${BASH_SOURCE[*]}" "${BASH_LINENO[*]}")" - display_alert "ERROR in function $_function" "$_file:$_line" "err" - display_alert "$_description" "$_highlight" "err" - display_alert "Process terminated" "" "info" - # TODO: execute run_after_build here? - overlayfs_wrapper "cleanup" - # unlock loop device access in case of starvation - exec {FD}>/var/lock/orangepi-debootstrap-losetup + display_alert "ERROR in function $_function" "$stacktrace" "err" + display_alert "$_description" "$_highlight" "err" + display_alert "Process terminated" "" "info" + + if [[ "${ERROR_DEBUG_SHELL}" == "yes" ]]; then + display_alert "MOUNT" "${MOUNT}" "err" + display_alert "SDCARD" "${SDCARD}" "err" + display_alert "Here's a shell." "debug it" "err" + bash < /dev/tty || true + fi + + # TODO: execute run_after_build here? + overlayfs_wrapper "cleanup" + # unlock loop device access in case of starvation + exec {FD}>/var/lock/orangepi-debootstrap-losetup flock -u "${FD}" exit 255 @@ -121,13 +147,17 @@ exit_with_error() get_package_list_hash() { - ( printf '%s\n' "${PACKAGE_LIST}" | sort -u; printf '%s\n' "${PACKAGE_LIST_EXCLUDE}" | sort -u; echo "${1}" ) \ + local package_arr exclude_arr + local list_content + read -ra package_arr <<< "${DEBOOTSTRAP_LIST} ${PACKAGE_LIST}" + read -ra exclude_arr <<< "${PACKAGE_LIST_EXCLUDE}" + ( ( printf "%s\n" "${package_arr[@]}"; printf -- "-%s\n" "${exclude_arr[@]}" ) | sort -u; echo "${1}" ) \ | md5sum | cut -d' ' -f 1 } # create_sources_list # -# : stretch|buster|bullseye|xenial|bionic|eoan|focal +# : buster|bullseye|bookworm|bionic|focal|jammy|hirsute|sid # : path to root directory # create_sources_list() @@ -137,7 +167,7 @@ create_sources_list() [[ -z $basedir ]] && exit_with_error "No basedir passed to create_sources_list" case $release in - stretch|buster|bullseye) + stretch|buster) cat <<-EOF > "${basedir}"/etc/apt/sources.list deb http://${DEBIAN_MIRROR} $release main contrib non-free #deb-src http://${DEBIAN_MIRROR} $release main contrib non-free @@ -153,7 +183,30 @@ create_sources_list() EOF ;; - xenial|bionic|eoan|focal) + bullseye|bookworm|trixie) + cat <<-EOF > "${basedir}"/etc/apt/sources.list + deb http://${DEBIAN_MIRROR} $release main contrib non-free + #deb-src http://${DEBIAN_MIRROR} $release main contrib non-free + + deb http://${DEBIAN_MIRROR} ${release}-updates main contrib non-free + #deb-src http://${DEBIAN_MIRROR} ${release}-updates main contrib non-free + + deb http://${DEBIAN_MIRROR} ${release}-backports main contrib non-free + #deb-src http://${DEBIAN_MIRROR} ${release}-backports main contrib non-free + + deb http://${DEBIAN_SECURTY} ${release}-security main contrib non-free + #deb-src http://${DEBIAN_SECURTY} ${release}-security main contrib non-free + EOF + ;; + + sid) # sid is permanent unstable development and has no such thing as updates or security + cat <<-EOF > "${basedir}"/etc/apt/sources.list + deb http://${DEBIAN_MIRROR} $release main contrib non-free + #deb-src http://${DEBIAN_MIRROR} $release main contrib non-free + EOF + ;; + + xenial|bionic|focal|hirsute|impish|jammy) cat <<-EOF > "${basedir}"/etc/apt/sources.list deb http://${UBUNTU_MIRROR} $release main restricted universe multiverse #deb-src http://${UBUNTU_MIRROR} $release main restricted universe multiverse @@ -170,22 +223,197 @@ create_sources_list() ;; esac - ## stage: add armbian repository and install key + # stage: add armbian repository and install key #if [[ $DOWNLOAD_MIRROR == "china" ]]; then - # echo "deb http://mirrors.tuna.tsinghua.edu.cn/armbian $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" > "${SDCARD}"/etc/apt/sources.list.d/armbian.list + # echo "deb https://mirrors.tuna.tsinghua.edu.cn/armbian $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" > "${SDCARD}"/etc/apt/sources.list.d/armbian.list + #elif [[ $DOWNLOAD_MIRROR == "bfsu" ]]; then + # echo "deb http://mirrors.bfsu.edu.cn/armbian $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" > "${SDCARD}"/etc/apt/sources.list.d/armbian.list #else - # echo "deb http://apt.armbian.com $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" > "${SDCARD}"/etc/apt/sources.list.d/armbian.list + # echo "deb http://"$([[ $BETA == yes ]] && echo "beta" || echo "apt" )".armbian.com $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" > "${SDCARD}"/etc/apt/sources.list.d/armbian.list #fi - ## add local package server if defined. Suitable for development - #[[ -n $LOCAL_MIRROR ]] && echo "deb http://$LOCAL_MIRROR $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" >> "${SDCARD}"/etc/apt/sources.list.d/armbian.list + # replace local package server if defined. Suitable for development + #[[ -n $LOCAL_MIRROR ]] && echo "deb http://$LOCAL_MIRROR $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" > "${SDCARD}"/etc/apt/sources.list.d/armbian.list #display_alert "Adding Armbian repository and authentication key" "/etc/apt/sources.list.d/armbian.list" "info" - #cp "${SRC}"/config/armbian.key "${SDCARD}" + #cp "${EXTER}"/config/armbian.key "${SDCARD}" #chroot "${SDCARD}" /bin/bash -c "cat armbian.key | apt-key add - > /dev/null 2>&1" #rm "${SDCARD}"/armbian.key } + +# +# This function retries Git operations to avoid failure in case remote is borked +# If the git team needs to call a remote server, use this function. +# +improved_git() +{ + + local realgit=$(command -v git) + local retries=3 + local delay=10 + local count=1 + while [ $count -lt $retries ]; do + $realgit "$@" + if [[ $? -eq 0 || -f .git/index.lock ]]; then + retries=0 + break + fi + let count=$count+1 + sleep $delay + done + +} + +clean_up_git () +{ + local target_dir=$1 + + # Files that are not tracked by git and were added + # when the patch was applied must be removed. + git -C $target_dir clean -qdf + + # Return the files that are tracked by git to the initial state. + git -C $target_dir checkout -qf HEAD +} + +# used : waiter_local_git arg1='value' arg2:'value' +# waiter_local_git \ +# url='https://github.com/megous/linux' \ +# name='megous' \ +# dir='linux-mainline/5.14' \ +# branch='orange-pi-5.14' \ +# obj= or tag:$tag ... +# An optional parameter for switching to a git object such as a tag, commit, +# or a specific branch. The object must exist in the local repository. +# This optional parameter takes precedence. If it is specified, then +# the commit state corresponding to the specified git object will be extracted +# to the working directory. Otherwise, the commit corresponding to the top of +# the branch will be extracted. +# The settings for the kernel variables of the original kernel +# VAR_SHALLOW_ORIGINAL=var_origin_kernel must be in the main script +# before calling the function +waiter_local_git () +{ + for arg in $@;do + + case $arg in + url=*|https://*|git://*) eval "local url=${arg/url=/}" + ;; + dir=*|/*/*/*) eval "local dir=${arg/dir=/}" + ;; + *=*|*:*) eval "local ${arg/:/=}" + ;; + esac + + done + + # Required variables cannot be empty. + for var in url name dir branch; do + [ "${var#*=}" == "" ] && exit_with_error "Error in configuration" + done + + local reachability + + # The 'offline' variable must always be set to 'true' or 'false' + if [ "$OFFLINE_WORK" == "yes" ]; then + local offline=true + else + local offline=false + fi + + local work_dir="$(realpath ${EXTER}/cache/sources)/$dir" + mkdir -p $work_dir + cd $work_dir || exit_with_error + + display_alert "Checking git sources" "$dir $url$name/$branch" "info" + + if [ "$(git rev-parse --git-dir 2>/dev/null)" != ".git" ]; then + git init -q . + + # Run in the sub shell to avoid mixing environment variables. + if [ -n "$VAR_SHALLOW_ORIGINAL" ]; then + ( + $VAR_SHALLOW_ORIGINAL + + display_alert "Add original git sources" "$dir $name/$branch" "info" + if [ "$(improved_git ls-remote -h $url $branch | \ + awk -F'/' '{if (NR == 1) print $NF}')" != "$branch" ];then + display_alert "Bad $branch for $url in $VAR_SHALLOW_ORIGINAL" + exit 177 + fi + + git remote add -t $branch $name $url + + # Handle an exception if the initial tag is the top of the branch + # As v5.16 == HEAD + if [ "${start_tag}.1" == "$(improved_git ls-remote -t $url ${start_tag}.1 | \ + awk -F'/' '{ print $NF }')" ] + then + improved_git fetch --shallow-exclude=$start_tag $name + else + improved_git fetch --depth 1 $name + fi + improved_git fetch --deepen=1 $name + # For a shallow clone, this works quickly and saves space. + git gc + ) + + [ "$?" == "177" ] && exit + fi + fi + + files_for_clean="$(git status -s | wc -l)" + if [ "$files_for_clean" != "0" ];then + display_alert " Cleaning .... " "$files_for_clean files" + clean_up_git $work_dir + fi + + if [ "$name" != "$(git remote show | grep $name)" ];then + git remote add -t $branch $name $url + fi + + if ! $offline; then + for t_name in $(git remote show);do + improved_git fetch $t_name + done + fi + + # When switching, we use the concept of only "detached branch". Therefore, + # we extract the hash from the tag, the branch name, or from the hash itself. + # This serves as a check of the reachability of the extraction. + # We do not use variables that characterize the current state of the git, + # such as `HEAD` and `FETCH_HEAD`. + reachability=false + for var in obj tag commit branch;do + eval pval=\$$var + + if [ -n "$pval" ] && [ "$pval" != *HEAD ]; then + case $var in + obj|tag|commit) obj=$pval ;; + branch) obj=${name}/$branch ;; + esac + + if t_hash=$(git rev-parse $obj 2>/dev/null);then + reachability=true + break + else + display_alert "Variable $var=$obj unreachable for extraction" + fi + fi + done + + if $reachability && [ "$t_hash" != "$(git rev-parse @ 2>/dev/null)" ];then + # Switch "detached branch" as hash + display_alert "Switch $obj = $t_hash" + git checkout -qf $t_hash + else + # the working directory corresponds to the target commit, + # nothing needs to be done + display_alert "Up to date" + fi +} + # fetch_from_repo # : remote repository URL # : local directory; subdir for branch/tag will be created @@ -206,6 +434,8 @@ fetch_from_repo() local ref=$3 local ref_subdir=$4 + # Set GitHub mirror before anything else touches $url + url=${url//'https://github.com/'/$GITHUB_SOURCE} # The 'offline' variable must always be set to 'true' or 'false' if [ "$OFFLINE_WORK" == "yes" ]; then local offline=true @@ -244,7 +474,7 @@ fetch_from_repo() # Then the target URL matches the local URL. if [[ "$(git rev-parse --git-dir 2>/dev/null)" == ".git" && \ - "$url" != "$(git remote get-url origin 2>/dev/null)" ]]; then + "$url" != *"$(git remote get-url origin | sed 's/^.*@//' | sed 's/^.*\/\///' 2>/dev/null)" ]]; then display_alert "Remote URL does not match, removing existing local copy" rm -rf .git ./* fi @@ -268,22 +498,22 @@ fetch_from_repo() branch) # TODO: grep refs/heads/$name local remote_hash - remote_hash=$(git ls-remote -h "${url}" "$ref_name" | head -1 | cut -f1) + remote_hash=$(improved_git ls-remote -h "${url}" "$ref_name" | head -1 | cut -f1) [[ -z $local_hash || "${local_hash}" != "${remote_hash}" ]] && changed=true ;; tag) local remote_hash - remote_hash=$(git ls-remote -t "${url}" "$ref_name" | cut -f1) + remote_hash=$(improved_git ls-remote -t "${url}" "$ref_name" | cut -f1) if [[ -z $local_hash || "${local_hash}" != "${remote_hash}" ]]; then - remote_hash=$(git ls-remote -t "${url}" "$ref_name^{}" | cut -f1) + remote_hash=$(improved_git ls-remote -t "${url}" "$ref_name^{}" | cut -f1) [[ -z $remote_hash || "${local_hash}" != "${remote_hash}" ]] && changed=true fi ;; head) local remote_hash - remote_hash=$(git ls-remote "${url}" HEAD | cut -f1) + remote_hash=$(improved_git ls-remote "${url}" HEAD | cut -f1) [[ -z $local_hash || "${local_hash}" != "${remote_hash}" ]] && changed=true ;; @@ -299,21 +529,21 @@ fetch_from_repo() # remote was updated, fetch and check out updates display_alert "Fetching updates" case $ref_type in - branch) git fetch --depth 1 origin "${ref_name}" ;; - tag) git fetch --depth 1 origin tags/"${ref_name}" ;; - head) git fetch --depth 1 origin HEAD ;; + branch) improved_git fetch --depth 200 origin "${ref_name}" ;; + tag) improved_git fetch --depth 200 origin tags/"${ref_name}" ;; + head) improved_git fetch --depth 200 origin HEAD ;; esac # commit type needs support for older git servers that doesn't support fetching id directly if [[ $ref_type == commit ]]; then - git fetch --depth 1 origin "${ref_name}" + improved_git fetch --depth 200 origin "${ref_name}" # cover old type if [[ $? -ne 0 ]]; then display_alert "Commit checkout not supported on this repository. Doing full clone." "" "wrn" - git pull + improved_git pull git checkout -fq "${ref_name}" display_alert "Checkout out to" "$(git --no-pager log -2 --pretty=format:"$ad%s [%an]" | head -1)" "info" @@ -370,7 +600,7 @@ fetch_from_repo() display_alert() { # log function parameters to install.log - [[ -n "${DEST}" ]] && echo "Displaying message: $@" >> "${DEST}"/debug/output.log + [[ -n "${DEST}" ]] && echo "Displaying message: $@" >> "${DEST}"/${LOG_SUBPATH}/output.log local tmp="" [[ -n $2 ]] && tmp="[\e[0;33m $2 \x1B[0m]" @@ -404,10 +634,9 @@ display_alert() #-------------------------------------------------------------------------------------------------------------------------------- fingerprint_image() { - display_alert "Fingerprinting" cat <<-EOF > "${1}" -------------------------------------------------------------------------------- - Title: Orange Pi $REVISION ${BOARD^} $DISTRIBUTION $RELEASE $BRANCH + Title: ${VENDOR} $REVISION ${BOARD^} $DISTRIBUTION $RELEASE $BRANCH Kernel: Linux $VER Build date: $(date +'%d.%m.%Y') Maintainer: $MAINTAINER <$MAINTAINERMAIL> @@ -416,28 +645,27 @@ fingerprint_image() EOF if [ -n "$2" ]; then - cat <<-EOF >> "${1}" - -------------------------------------------------------------------------------- - Partitioning configuration: - Root partition type: $ROOTFS_TYPE - Boot partition type: ${BOOTFS_TYPE:-(none)} - User provided boot partition size: ${BOOTSIZE:-0} - Offset: $OFFSET - CPU configuration: $CPUMIN - $CPUMAX with $GOVERNOR - -------------------------------------------------------------------------------- - Verify GPG signature: - gpg --verify $2.img.asc + cat <<-EOF >> "${1}" + -------------------------------------------------------------------------------- + Partitioning configuration: $IMAGE_PARTITION_TABLE offset: $OFFSET + Boot partition type: ${BOOTFS_TYPE:-(none)} ${BOOTSIZE:+"(${BOOTSIZE} MB)"} + Root partition type: $ROOTFS_TYPE ${FIXED_IMAGE_SIZE:+"(${FIXED_IMAGE_SIZE} MB)"} - Verify image file integrity: - sha256sum --check $2.img.sha + CPU configuration: $CPUMIN - $CPUMAX with $GOVERNOR + -------------------------------------------------------------------------------- + Verify GPG signature: + gpg --verify $2.img.asc - Prepare micro SD card (four methodes): - zcat $2.img.gz | pv | dd of=/dev/sdX bs=1M - dd if=$2.img of=/dev/sdX bs=1M - balena-etcher $2.img.gz -d /dev/sdX - balena-etcher $2.img -d /dev/sdX - EOF - fi + Verify image file integrity: + sha256sum --check $2.img.sha + + Prepare SD card (four methodes): + zcat $2.img.gz | pv | dd of=/dev/sdX bs=1M + dd if=$2.img of=/dev/sdX bs=1M + balena-etcher $2.img.gz -d /dev/sdX + balena-etcher $2.img -d /dev/sdX + EOF + fi cat <<-EOF >> "${1}" -------------------------------------------------------------------------------- @@ -569,23 +797,366 @@ display_alert "Building kernel splash logo" "$RELEASE" "info" +DISTRIBUTIONS_DESC_DIR="external/config/distributions" + function distro_menu () { +# create a select menu for choosing a distribution based EXPERT status - for i in "${!distro_name[@]}" - do - if [[ "${i}" == "${1}" ]]; then - if [[ "${RELEASE_TARGET}" != *$1* ]]; then - : - else - local text="" - options+=("$i" "${distro_name[$i]} $text") + local distrib_dir="${1}" + + if [[ -d "${distrib_dir}" && -f "${distrib_dir}/support" ]]; then + local support_level="$(cat "${distrib_dir}/support")" + if [[ "${support_level}" != "supported" && $EXPERT != "yes" ]]; then + : + else + local distro_codename="$(basename "${distrib_dir}")" + local distro_fullname="$(cat "${distrib_dir}/name")" + local expert_infos="" + [[ $EXPERT == "yes" ]] && expert_infos="(${support_level})" + + if [[ "${BRANCH}" == "legacy" ]]; then + DISTRIB_TYPE="${DISTRIB_TYPE_LEGACY}" + [[ -z "${DISTRIB_TYPE_LEGACY}" ]] && DISTRIB_TYPE="buster bionic focal" + elif [[ "${BRANCH}" == "current" ]]; then + DISTRIB_TYPE="${DISTRIB_TYPE_CURRENT}" + [[ -z "${DISTRIB_TYPE_LEGACY}" ]] && DISTRIB_TYPE="bullseye bookworm focal jammy" + fi + + if [[ "${DISTRIB_TYPE}" =~ "${distro_codename}" ]]; then + options+=("${distro_codename}" "${distro_fullname} ${expert_infos}") fi - break fi + fi +} + +function distros_options() { + for distrib_dir in "${DISTRIBUTIONS_DESC_DIR}/"*; do + distro_menu "${distrib_dir}" done } +function set_distribution_status() { + + local distro_support_desc_filepath="${SRC}/${DISTRIBUTIONS_DESC_DIR}/${RELEASE}/support" + if [[ ! -f "${distro_support_desc_filepath}" ]]; then + exit_with_error "Distribution ${distribution_name} does not exist" + else + DISTRIBUTION_STATUS="$(cat "${distro_support_desc_filepath}")" + fi + + [[ "${DISTRIBUTION_STATUS}" != "supported" ]] && [[ "${EXPERT}" != "yes" ]] && exit_with_error "Orange Pi ${RELEASE} is unsupported and, therefore, only available to experts (EXPERT=yes)" + +} + +adding_packages() +{ +# add deb files to repository if they are not already there + + display_alert "Checking and adding to repository $release" "$3" "ext" + for f in "${DEB_STORAGE}${2}"/*.deb + do + local name version arch + name=$(dpkg-deb -I "${f}" | grep Package | awk '{print $2}') + version=$(dpkg-deb -I "${f}" | grep Version | awk '{print $2}') + arch=$(dpkg-deb -I "${f}" | grep Architecture | awk '{print $2}') + # add if not already there + aptly repo search -architectures="${arch}" -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${1}" 'Name (% '${name}'), $Version (='${version}'), $Architecture (='${arch}')' &>/dev/null + if [[ $? -ne 0 ]]; then + display_alert "Adding ${1}" "$name" "info" + aptly repo add -force-replace=true -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${1}" "${f}" &>/dev/null + fi + done + +} + + + + +addtorepo() +{ +# create repository +# parameter "remove" dumps all and creates new +# parameter "delete" remove incoming directory if publishing is succesful +# function: cycle trough distributions + + local distributions=("stretch" "bionic" "buster" "bullseye" "bookworm" "focal" "hirsute" "jammy" "sid") + #local distributions=($(grep -rw config/distributions/*/ -e 'supported' | cut -d"/" -f3)) + local errors=0 + + for release in "${distributions[@]}"; do + + local forceoverwrite="" + + # let's drop from publish if exits + if [[ -n $(aptly publish list -config="${SCRIPTPATH}config/${REPO_CONFIG}" -raw | awk '{print $(NF)}' | grep "${release}") ]]; then + aptly publish drop -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" > /dev/null 2>&1 + fi + + # create local repository if not exist + if [[ -z $(aptly repo list -config="${SCRIPTPATH}config/${REPO_CONFIG}" -raw | awk '{print $(NF)}' | grep "${release}") ]]; then + display_alert "Creating section" "main" "info" + aptly repo create -config="${SCRIPTPATH}config/${REPO_CONFIG}" -distribution="${release}" -component="main" \ + -comment="Armbian main repository" "${release}" >/dev/null + fi + + if [[ -z $(aptly repo list -config="${SCRIPTPATH}config/${REPO_CONFIG}" -raw | awk '{print $(NF)}' | grep "^utils") ]]; then + aptly repo create -config="${SCRIPTPATH}config/${REPO_CONFIG}" -distribution="${release}" -component="utils" \ + -comment="Armbian utilities (backwards compatibility)" utils >/dev/null + fi + if [[ -z $(aptly repo list -config="${SCRIPTPATH}config/${REPO_CONFIG}" -raw | awk '{print $(NF)}' | grep "${release}-utils") ]]; then + aptly repo create -config="${SCRIPTPATH}config/${REPO_CONFIG}" -distribution="${release}" -component="${release}-utils" \ + -comment="Armbian ${release} utilities" "${release}-utils" >/dev/null + fi + if [[ -z $(aptly repo list -config="${SCRIPTPATH}config/${REPO_CONFIG}" -raw | awk '{print $(NF)}' | grep "${release}-desktop") ]]; then + aptly repo create -config="${SCRIPTPATH}config/${REPO_CONFIG}" -distribution="${release}" -component="${release}-desktop" \ + -comment="Armbian ${release} desktop" "${release}-desktop" >/dev/null + fi + + + # adding main + if find "${DEB_STORAGE}"/ -maxdepth 1 -type f -name "*.deb" 2>/dev/null | grep -q .; then + adding_packages "$release" "" "main" + else + aptly repo add -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" "${SCRIPTPATH}config/templates/example.deb" >/dev/null + fi + + local COMPONENTS="main" + + # adding main distribution packages + if find "${DEB_STORAGE}/${release}" -maxdepth 1 -type f -name "*.deb" 2>/dev/null | grep -q .; then + adding_packages "${release}-utils" "/${release}" "release packages" + else + # workaround - add dummy package to not trigger error + aptly repo add -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" "${SCRIPTPATH}config/templates/example.deb" >/dev/null + fi + + # adding release-specific utils + if find "${DEB_STORAGE}/extra/${release}-utils" -maxdepth 1 -type f -name "*.deb" 2>/dev/null | grep -q .; then + adding_packages "${release}-utils" "/extra/${release}-utils" "release utils" + else + aptly repo add -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-utils" "${SCRIPTPATH}config/templates/example.deb" >/dev/null + fi + COMPONENTS="${COMPONENTS} ${release}-utils" + + # adding desktop + if find "${DEB_STORAGE}/extra/${release}-desktop" -maxdepth 1 -type f -name "*.deb" 2>/dev/null | grep -q .; then + adding_packages "${release}-desktop" "/extra/${release}-desktop" "desktop" + else + # workaround - add dummy package to not trigger error + aptly repo add -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-desktop" "${SCRIPTPATH}config/templates/example.deb" >/dev/null + fi + COMPONENTS="${COMPONENTS} ${release}-desktop" + + local mainnum utilnum desknum + mainnum=$(aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" | grep "Number of packages" | awk '{print $NF}') + utilnum=$(aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-desktop" | grep "Number of packages" | awk '{print $NF}') + desknum=$(aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-utils" | grep "Number of packages" | awk '{print $NF}') + + if [ $mainnum -gt 0 ] && [ $utilnum -gt 0 ] && [ $desknum -gt 0 ]; then + + # publish + aptly publish \ + -acquire-by-hash \ + -passphrase="${GPG_PASS}" \ + -origin="Armbian" \ + -label="Armbian" \ + -config="${SCRIPTPATH}config/${REPO_CONFIG}" \ + -component="${COMPONENTS// /,}" \ + -distribution="${release}" repo "${release}" ${COMPONENTS//main/} >/dev/null + + if [[ $? -ne 0 ]]; then + display_alert "Publishing failed" "${release}" "err" + errors=$((errors+1)) + exit 0 + fi + else + errors=$((errors+1)) + local err_txt=": All components must be present: main, utils and desktop for first build" + fi + + done + + # cleanup + display_alert "Cleaning repository" "${DEB_STORAGE}" "info" + aptly db cleanup -config="${SCRIPTPATH}config/${REPO_CONFIG}" + + # display what we have + echo "" + display_alert "List of local repos" "local" "info" + (aptly repo list -config="${SCRIPTPATH}config/${REPO_CONFIG}") | grep -E packages + + # remove debs if no errors found + if [[ $errors -eq 0 ]]; then + if [[ "$2" == "delete" ]]; then + display_alert "Purging incoming debs" "all" "ext" + find "${DEB_STORAGE}" -name "*.deb" -type f -delete + fi + else + display_alert "There were some problems $err_txt" "leaving incoming directory intact" "err" + fi + +} + + + + +repo-manipulate() +{ +# repository manipulation +# "show" displays packages in each repository +# "server" serve repository - useful for local diagnostics +# "unique" manually select which package should be removed from all repositories +# "update" search for new files in output/debs* to add them to repository +# "purge" leave only last 5 versions + + local DISTROS=("stretch" "bionic" "buster" "bullseye" "bookworm" "focal" "hirsute" "jammy" "sid") + #local DISTROS=($(grep -rw config/distributions/*/ -e 'supported' | cut -d"/" -f3)) + + case $@ in + + serve) + # display repository content + display_alert "Serving content" "common utils" "ext" + aptly serve -listen=$(ip -f inet addr | grep -Po 'inet \K[\d.]+' | grep -v 127.0.0.1 | head -1):80 -config="${SCRIPTPATH}config/${REPO_CONFIG}" + exit 0 + ;; + + show) + # display repository content + for release in "${DISTROS[@]}"; do + display_alert "Displaying repository contents for" "$release" "ext" + aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" | tail -n +7 + aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-desktop" | tail -n +7 + done + display_alert "Displaying repository contents for" "common utils" "ext" + aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" utils | tail -n +7 + echo "done." + exit 0 + ;; + + unique) + # which package should be removed from all repositories + IFS=$'\n' + while true; do + LIST=() + for release in "${DISTROS[@]}"; do + LIST+=( $(aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" | tail -n +7) ) + LIST+=( $(aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-desktop" | tail -n +7) ) + done + LIST+=( $(aptly repo show -with-packages -config="${SCRIPTPATH}config/${REPO_CONFIG}" utils | tail -n +7) ) + LIST=( $(echo "${LIST[@]}" | tr ' ' '\n' | sort -u)) + new_list=() + # create a human readable menu + for ((n=0;n<$((${#LIST[@]}));n++)); + do + new_list+=( "${LIST[$n]}" ) + new_list+=( "" ) + done + LIST=("${new_list[@]}") + LIST_LENGTH=$((${#LIST[@]}/2)); + exec 3>&1 + TARGET_VERSION=$(dialog --cancel-label "Cancel" --backtitle "BACKTITLE" --no-collapse --title "Remove packages from repositories" --clear --menu "Delete" $((9+${LIST_LENGTH})) 82 65 "${LIST[@]}" 2>&1 1>&3) + exitstatus=$?; + exec 3>&- + if [[ $exitstatus -eq 0 ]]; then + for release in "${DISTROS[@]}"; do + aptly repo remove -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" "$TARGET_VERSION" + aptly repo remove -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}-desktop" "$TARGET_VERSION" + done + aptly repo remove -config="${SCRIPTPATH}config/${REPO_CONFIG}" "utils" "$TARGET_VERSION" + else + exit 1 + fi + aptly db cleanup -config="${SCRIPTPATH}config/${REPO_CONFIG}" > /dev/null 2>&1 + done + ;; + + update) + # display full help test + # run repository update + addtorepo "update" "" + # add a key to repo + cp "${SCRIPTPATH}"config/armbian.key "${REPO_STORAGE}"/public/ + exit 0 + ;; + + purge) + for release in "${DISTROS[@]}"; do + repo-remove-old-packages "$release" "armhf" "5" + repo-remove-old-packages "$release" "arm64" "5" + repo-remove-old-packages "$release" "amd64" "5" + repo-remove-old-packages "$release" "all" "5" + aptly -config="${SCRIPTPATH}config/${REPO_CONFIG}" -passphrase="${GPG_PASS}" publish update "${release}" > /dev/null 2>&1 + done + exit 0 + ;; + + purgeedge) + for release in "${DISTROS[@]}"; do + repo-remove-old-packages "$release" "armhf" "3" "edge" + repo-remove-old-packages "$release" "arm64" "3" "edge" + repo-remove-old-packages "$release" "amd64" "3" "edge" + repo-remove-old-packages "$release" "all" "3" "edge" + aptly -config="${SCRIPTPATH}config/${REPO_CONFIG}" -passphrase="${GPG_PASS}" publish update "${release}" > /dev/null 2>&1 + done + exit 0 + ;; + + + purgesource) + for release in "${DISTROS[@]}"; do + aptly repo remove -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${release}" 'Name (% *-source*)' + aptly -config="${SCRIPTPATH}config/${REPO_CONFIG}" -passphrase="${GPG_PASS}" publish update "${release}" > /dev/null 2>&1 + done + aptly db cleanup -config="${SCRIPTPATH}config/${REPO_CONFIG}" > /dev/null 2>&1 + exit 0 + ;; + *) + + echo -e "Usage: repository show | serve | unique | create | update | purge | purgesource\n" + echo -e "\n show = display repository content" + echo -e "\n serve = publish your repositories on current server over HTTP" + echo -e "\n unique = manually select which package should be removed from all repositories" + echo -e "\n update = updating repository" + echo -e "\n purge = removes all but last 5 versions" + echo -e "\n purgeedge = removes all but last 3 edge versions" + echo -e "\n purgesource = removes all sources\n\n" + exit 0 + ;; + + esac + +} + + + + +# Removes old packages in the received repo +# +# $1: Repository +# $2: Architecture +# $3: Amount of packages to keep +# $4: Additional search pattern +repo-remove-old-packages() { + local repo=$1 + local arch=$2 + local keep=$3 + for pkg in $(aptly repo search -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${repo}" "Architecture ($arch)" | grep -v "ERROR: no results" | sort -t '.' -nk4 | grep -e "$4"); do + local pkg_name + count=0 + pkg_name=$(echo "${pkg}" | cut -d_ -f1) + for subpkg in $(aptly repo search -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${repo}" "Name ($pkg_name)" | grep -v "ERROR: no results" | sort -rt '.' -nk4); do + ((count+=1)) + if [[ $count -gt $keep ]]; then + pkg_version=$(echo "${subpkg}" | cut -d_ -f2) + aptly repo remove -config="${SCRIPTPATH}config/${REPO_CONFIG}" "${repo}" "Name ($pkg_name), Version (= $pkg_version)" + fi + done + done +} + + # wait_for_package_manager @@ -607,6 +1178,113 @@ wait_for_package_manager() +# Installing debian packages in the orangepi build system. +# The function accepts four optional parameters: +# autoupdate - If the installation list is not empty then update first. +# upgrade, clean - the same name for apt +# verbose - detailed log for the function +# +# list="pkg1 pkg2 pkg3 pkgbadname pkg-1.0 | pkg-2.0 pkg5 (>= 9)" +# install_pkg_deb upgrade verbose $list +# or +# install_pkg_deb autoupdate $list +# +# If the package has a bad name, we will see it in the log file. +# If there is an LOG_OUTPUT_FILE variable and it has a value as +# the full real path to the log file, then all the information will be there. +# +# The LOG_OUTPUT_FILE variable must be defined in the calling function +# before calling the install_pkg_deb function and unset after. +# +install_pkg_deb () +{ + local list="" + local log_file + local for_install + local need_autoup=false + local need_upgrade=false + local need_clean=false + local need_verbose=false + local _line=${BASH_LINENO[0]} + local _function=${FUNCNAME[1]} + local _file=$(basename "${BASH_SOURCE[1]}") + local tmp_file=$(mktemp /tmp/install_log_XXXXX) + export DEBIAN_FRONTEND=noninteractive + + list=$( + for p in $*;do + case $p in + autoupdate) need_autoup=true; continue ;; + upgrade) need_upgrade=true; continue ;; + clean) need_clean=true; continue ;; + verbose) need_verbose=true; continue ;; + \||\(*|*\)) continue ;; + esac + echo " $p" + done + ) + + if [ -d $(dirname $LOG_OUTPUT_FILE) ]; then + log_file=${LOG_OUTPUT_FILE} + else + log_file="${SRC}/output/${LOG_SUBPATH}/install.log" + fi + + # This is necessary first when there is no apt cache. + if $need_upgrade; then + apt-get -q update || echo "apt cannot update" >>$tmp_file + apt-get -y upgrade || echo "apt cannot upgrade" >>$tmp_file + fi + + # If the package is not installed, check the latest + # up-to-date version in the apt cache. + # Exclude bad package names and send a message to the log. + for_install=$( + for p in $list;do + if $(dpkg-query -W -f '${db:Status-Abbrev}' $p |& awk '/ii/{exit 1}');then + apt-cache show $p -o APT::Cache::AllVersions=no |& \ + awk -v p=$p -v tmp_file=$tmp_file \ + '/^Package:/{print $2} /^E:/{print "Bad package name: ",p >>tmp_file}' + fi + done + ) + + # This information should be logged. + if [ -s $tmp_file ]; then + echo -e "\nInstalling packages in function: $_function" "[$_file:$_line]" \ + >>$log_file + echo -e "\nIncoming list:" >>$log_file + printf "%-30s %-30s %-30s %-30s\n" $list >>$log_file + echo "" >>$log_file + cat $tmp_file >>$log_file + fi + + if [ -n "$for_install" ]; then + if $need_autoup; then + apt-get -q update + apt-get -y upgrade + fi + apt-get install -qq -y --no-install-recommends $for_install + echo -e "\nPackages installed:" >>$log_file + dpkg-query -W \ + -f '${binary:Package;-27} ${Version;-23}\n' \ + $for_install >>$log_file + + fi + + # We will show the status after installation all listed + if $need_verbose; then + echo -e "\nstatus after installation:" >>$log_file + dpkg-query -W \ + -f '${binary:Package;-27} ${Version;-23} [ ${Status} ]\n' \ + $list >>$log_file + fi + + if $need_clean;then apt-get clean; fi + rm $tmp_file +} + + # prepare_host_basic # @@ -614,19 +1292,28 @@ wait_for_package_manager() # prepare_host_basic() { - # wait until package manager finishes possible system maintanace - wait_for_package_manager - # need lsb_release to decide what to install - if [[ $(dpkg-query -W -f='${db:Status-Abbrev}\n' lsb-release 2>/dev/null) != *ii* ]]; then - display_alert "Installing package" "lsb-release" - apt-get -q update && apt-get install -q -y --no-install-recommends lsb-release - fi + # command:package1 package2 ... + # list of commands that are neeeded:packages where this command is + local check_pack install_pack + local checklist=( + "whiptail:whiptail" + "dialog:dialog" + "fuser:psmisc" + "getfacl:acl" + "uuid:uuid uuid-runtime" + "curl:curl" + "gpg:gnupg" + "gawk:gawk" + ) - # need to install whiptail if person is starting with a interactive mode - if [[ $(dpkg-query -W -f='${db:Status-Abbrev}\n' whiptail 2>/dev/null) != *ii* ]]; then - display_alert "Installing package" "whiptail" - apt-get -q update && apt-get install -q -y --no-install-recommends whiptail + for check_pack in "${checklist[@]}"; do + if ! which ${check_pack%:*} >/dev/null; then local install_pack+=${check_pack#*:}" "; fi + done + + if [[ -n $install_pack ]]; then + display_alert "Installing basic packages" "$install_pack" + sudo bash -c "apt-get -qq update && apt-get install -qq -y --no-install-recommends $install_pack" fi } @@ -651,32 +1338,52 @@ prepare_host() local offline=false fi - if [[ $(dpkg --print-architecture) != amd64 ]]; then - display_alert "Please read documentation to set up proper compilation environment" - display_alert "http://www.orangepi.org" - exit_with_error "Running this tool on non x86-x64 build host in not supported" - fi - # wait until package manager finishes possible system maintanace wait_for_package_manager - # temporally fix for Locales settings + # fix for Locales settings + if ! grep -q "^en_US.UTF-8 UTF-8" /etc/locale.gen; then + sudo sed -i 's/# en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen + sudo locale-gen + fi + export LC_ALL="en_US.UTF-8" # packages list for host # NOTE: please sync any changes here with the Dockerfile and Vagrantfile - local hostdeps="wget ca-certificates device-tree-compiler pv bc lzop zip binfmt-support build-essential ccache debootstrap ntpdate \ - gawk gcc-arm-linux-gnueabihf qemu-user-static u-boot-tools uuid-dev zlib1g-dev unzip libusb-1.0-0-dev fakeroot \ - parted pkg-config libncurses5-dev whiptail debian-keyring debian-archive-keyring f2fs-tools libfile-fcntllock-perl rsync libssl-dev \ - nfs-kernel-server btrfs-progs ncurses-term p7zip-full kmod dosfstools libc6-dev-armhf-cross imagemagick \ - curl patchutils liblz4-tool libpython2.7-dev linux-base swig acl python3-dev python3-distutils libfdt-dev \ - locales ncurses-base pixz dialog systemd-container udev lib32stdc++6 libc6-i386 lib32ncurses5 lib32tinfo5 \ - bison libbison-dev flex libfl-dev cryptsetup gpg gnupg1 gpgv1 gpgv2 cpio aria2 pigz dirmngr python3-distutils distcc git dos2unix" - local codename=$(lsb_release -sc) + local hostdeps="acl aptly aria2 bc binfmt-support bison btrfs-progs \ + build-essential ca-certificates ccache cpio cryptsetup curl \ + debian-archive-keyring debian-keyring debootstrap device-tree-compiler \ + dialog dirmngr dosfstools dwarves f2fs-tools fakeroot flex gawk \ + gcc-arm-linux-gnueabihf gdisk gnupg1 gpg imagemagick jq kmod libbison-dev \ + libc6-dev-armhf-cross libelf-dev libfdt-dev libfile-fcntllock-perl \ + libfl-dev liblz4-tool libncurses-dev libpython2.7-dev libssl-dev \ + libusb-1.0-0-dev linux-base locales lzop ncurses-base ncurses-term \ + nfs-kernel-server ntpdate p7zip-full parted patchutils pigz pixz \ + pkg-config pv python3-dev python3-distutils qemu-user-static rsync swig \ + systemd-container u-boot-tools udev unzip uuid-dev wget whiptail zip \ + zlib1g-dev" - # Getting ready for Ubuntu 20.04 - if [[ $codename == focal || $codename == ulyana ]]; then + if [[ $(dpkg --print-architecture) == amd64 ]]; then + + hostdeps+=" distcc lib32ncurses-dev lib32stdc++6 libc6-i386 zlib1g:i386" + grep -q i386 <(dpkg --print-foreign-architectures) || dpkg --add-architecture i386 + + elif [[ $(dpkg --print-architecture) == arm64 ]]; then + + hostdeps+=" gcc-arm-linux-gnueabi gcc-arm-none-eabi libc6 libc6-amd64-cross qemu" + + else + + display_alert "Please read documentation to set up proper compilation environment" + display_alert "https://www.armbian.com/using-armbian-tools/" + exit_with_error "Running this tool on non x86_64 build host is not supported" + + fi + + # Add support for Ubuntu 20.04, 21.04 and Mint 20.x + if [[ $HOSTRELEASE =~ ^(focal|hirsute|ulyana|ulyssa|bullseye|bookworm|uma)$ ]]; then hostdeps+=" python2 python3" ln -fs /usr/bin/python2.7 /usr/bin/python2 ln -fs /usr/bin/python2.7 /usr/bin/python @@ -684,32 +1391,30 @@ prepare_host() hostdeps+=" python libpython-dev" fi - display_alert "Build host OS release" "${codename:-(unknown)}" "info" + display_alert "Build host OS release" "${HOSTRELEASE:-(unknown)}" "info" - # Ubuntu Focal x86_64 is the only fully supported host OS release - # Ubuntu Bionic x86_64 support is legacy until it breaks + # Ubuntu 21.04.x (Hirsute) x86_64 is the only fully supported host OS release # Using Docker/VirtualBox/Vagrant is the only supported way to run the build script on other Linux distributions # # NO_HOST_RELEASE_CHECK overrides the check for a supported host system - # Disable host OS check at your own risk, any issues reported with unsupported releases will be closed without a discussion - if [[ -z $codename || "bionic buster eoan focal debbie tricia ulyana" != *"$codename"* ]]; then + # Disable host OS check at your own risk. Any issues reported with unsupported releases will be closed without discussion + if [[ -z $HOSTRELEASE || "buster bullseye bookworm focal hirsute debbie tricia ulyana ulyssa uma" != *"$HOSTRELEASE"* ]]; then if [[ $NO_HOST_RELEASE_CHECK == yes ]]; then - display_alert "You are running on an unsupported system" "${codename:-(unknown)}" "wrn" + display_alert "You are running on an unsupported system" "${HOSTRELEASE:-(unknown)}" "wrn" display_alert "Do not report any errors, warnings or other issues encountered beyond this point" "" "wrn" else - exit_with_error "It seems you ignore documentation and run an unsupported build system: ${codename:-(unknown)}" + exit_with_error "It seems you ignore documentation and run an unsupported build system: ${HOSTRELEASE:-(unknown)}" fi fi if grep -qE "(Microsoft|WSL)" /proc/version; then - exit_with_error "Windows subsystem for Linux is not a supported build environment" + if [ -f /.dockerenv ]; then + display_alert "Building images using Docker on WSL2 may fail" "" "wrn" + else + exit_with_error "Windows subsystem for Linux is not a supported build environment" + fi fi - if [[ -z $codename || "focal" == "$codename" || "eoan" == "$codename" || "debbie" == "$codename" || "buster" == "$codename" || "ulyana" == "$codename" ]]; then - hostdeps="${hostdeps/lib32ncurses5 lib32tinfo5/lib32ncurses6 lib32tinfo6}" - fi - - grep -q i386 <(dpkg --print-foreign-architectures) || dpkg --add-architecture i386 if systemd-detect-virt -q -c; then display_alert "Running in container" "$(systemd-detect-virt)" "info" # disable apt-cacher unless NO_APT_CACHER=no is not specified explicitly @@ -726,48 +1431,40 @@ prepare_host() SYNC_CLOCK=no fi + # Skip verification if you are working offline if ! $offline; then - # warning: apt-cacher-ng will fail if installed and used both on host and in container/chroot environment with shared network + # warning: apt-cacher-ng will fail if installed and used both on host and in + # container/chroot environment with shared network # set NO_APT_CACHER=yes to prevent installation errors in such case - if [[ $NO_APT_CACHER != yes ]]; then hostdeps="$hostdeps apt-cacher-ng"; fi + if [[ $NO_APT_CACHER != yes ]]; then hostdeps+=" apt-cacher-ng"; fi - local deps=() - local installed=$(dpkg-query -W -f '${db:Status-Abbrev}|${binary:Package}\n' '*' 2>/dev/null | grep '^ii' | awk -F '|' '{print $2}' | cut -d ':' -f 1) + export EXTRA_BUILD_DEPS="" + call_extension_method "add_host_dependencies" <<- 'ADD_HOST_DEPENDENCIES' + *run before installing host dependencies* + you can add packages to install, space separated, to ${EXTRA_BUILD_DEPS} here. + ADD_HOST_DEPENDENCIES - for packet in $hostdeps; do - if ! grep -q -x -e "$packet" <<< "$installed"; then deps+=("$packet"); fi - done + if [ -n "${EXTRA_BUILD_DEPS}" ]; then hostdeps+=" ${EXTRA_BUILD_DEPS}"; fi - # distribution packages are buggy, download from author - if [[ ! -f /etc/apt/sources.list.d/aptly.list ]]; then - display_alert "Updating from external repository" "aptly" "info" - if [ x"" != x"${http_proxy}" ]; then - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="${http_proxy}" --recv-keys ED75B5A4483DA07C >/dev/null 2>&1 - apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --keyserver-options http-proxy="${http_proxy}" --recv-keys ED75B5A4483DA07C >/dev/null 2>&1 - else - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys ED75B5A4483DA07C >/dev/null 2>&1 - apt-key adv --keyserver pool.sks-keyservers.net --recv-keys ED75B5A4483DA07C >/dev/null 2>&1 - fi - echo "deb http://repo.aptly.info/ nightly main" > /etc/apt/sources.list.d/aptly.list - else - sed "s/squeeze/nightly/" -i /etc/apt/sources.list.d/aptly.list - fi + display_alert "Installing build dependencies" + # don't prompt for apt cacher selection + sudo echo "apt-cacher-ng apt-cacher-ng/tunnelenable boolean false" | sudo debconf-set-selections - local aptly_ver=$(dpkg -s aptly | grep '^Version:' | cut -d " " -f 2) - if [[ $aptly_ver != "1.4.0+44+g24a0271" ]]; then - apt-get -q -y purge aptly 2>&1 >/dev/null - dpkg -i ${EXTER}/cache/debs/aptly/aptly_1.4.0+44+g24a0271_amd64.deb 2>&1 >/dev/null - fi + LOG_OUTPUT_FILE="${DEST}"/${LOG_SUBPATH}/hostdeps.log + install_pkg_deb "autoupdate $hostdeps" + unset LOG_OUTPUT_FILE - if [[ ${#deps[@]} -gt 0 ]]; then - display_alert "Installing build dependencies" - apt-get -q update - apt-get -y upgrade - apt-get -q -y --no-install-recommends install -o Dpkg::Options::='--force-confold' "${deps[@]}" | tee -a "${DEST}"/debug/hostdeps.log - update-ccache-symlinks - fi + update-ccache-symlinks + + export FINAL_HOST_DEPS="$hostdeps ${EXTRA_BUILD_DEPS}" + call_extension_method "host_dependencies_ready" <<- 'HOST_DEPENDENCIES_READY' + *run after all host dependencies are installed* + At this point we can read `${FINAL_HOST_DEPS}`, but changing won't have any effect. + All the dependencies, including the default/core deps and the ones added via `${EXTRA_BUILD_DEPS}` + are installed at this point. The system clock has not yet been synced. + HOST_DEPENDENCIES_READY # sync clock if [[ $SYNC_CLOCK != no ]]; then @@ -775,10 +1472,6 @@ prepare_host() ntpdate -s "${NTP_SERVER:-pool.ntp.org}" fi - if [[ $(dpkg-query -W -f='${db:Status-Abbrev}\n' 'zlib1g:i386' 2>/dev/null) != *ii* ]]; then - apt-get install -qq -y --no-install-recommends zlib1g:i386 >/dev/null 2>&1 - fi - # create directory structure mkdir -p $SRC/output $EXTER/cache $USERPATCHES_PATH if [[ -n $SUDO_USER ]]; then @@ -791,43 +1484,57 @@ prepare_host() fi mkdir -p $DEST/debs/{extra,u-boot} $DEST/{config,debug,patch,images} $USERPATCHES_PATH/overlay $EXTER/cache/{debs,sources,hash} $SRC/toolchains $SRC/.tmp - display_alert "Checking for external GCC compilers" "" "info" - # download external Linaro compiler and missing special dependencies since they are needed for certain sources +# build aarch64 + if [[ $(dpkg --print-architecture) == amd64 ]]; then + if [[ "${SKIP_EXTERNAL_TOOLCHAINS}" != "yes" ]]; then - local toolchains=( - "gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz" - "gcc-linaro-arm-none-eabi-4.8-2014.04_linux.tar.xz" - "gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.xz" - "gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz" - "gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz" - "gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz" - "gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi.tar.xz" - "gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz" - "gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz" - "gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz" - ) + # bind mount toolchain if defined + if [[ -d "${ARMBIAN_CACHE_TOOLCHAIN_PATH}" ]]; then + mountpoint -q "${SRC}"/cache/toolchain && umount -l "${SRC}"/cache/toolchain + mount --bind "${ARMBIAN_CACHE_TOOLCHAIN_PATH}" "${SRC}"/cache/toolchain + fi - USE_TORRENT_STATUS=${USE_TORRENT} - USE_TORRENT="no" - for toolchain in ${toolchains[@]}; do - download_and_verify "_toolchain" "${toolchain##*/}" - done - USE_TORRENT=${USE_TORRENT_STATUS} + display_alert "Checking for external GCC compilers" "" "info" + # download external Linaro compiler and missing special dependencies since they are needed for certain sources - rm -rf $SRC/toolchains/*.tar.xz* - local existing_dirs=( $(ls -1 $SRC/toolchains) ) - for dir in ${existing_dirs[@]}; do - local found=no + local toolchains=( + "gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz" + "gcc-linaro-arm-none-eabi-4.8-2014.04_linux.tar.xz" + "gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.xz" + "gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz" + "gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz" + "gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz" + "gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi.tar.xz" + "gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz" + "gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz" + "gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz" + ) + + USE_TORRENT_STATUS=${USE_TORRENT} + USE_TORRENT="no" for toolchain in ${toolchains[@]}; do - local filename=${toolchain##*/} - local dirname=${filename//.tar.xz} - [[ $dir == $dirname ]] && found=yes + download_and_verify "_toolchain" "${toolchain##*/}" done - if [[ $found == no ]]; then - display_alert "Removing obsolete toolchain" "$dir" - rm -rf $SRC/toolchains/$dir + USE_TORRENT=${USE_TORRENT_STATUS} + + rm -rf $SRC/toolchains/*.tar.xz* + local existing_dirs=( $(ls -1 $SRC/toolchains) ) + for dir in ${existing_dirs[@]}; do + local found=no + for toolchain in ${toolchains[@]}; do + local filename=${toolchain##*/} + local dirname=${filename//.tar.xz} + [[ $dir == $dirname ]] && found=yes + done + if [[ $found == no ]]; then + display_alert "Removing obsolete toolchain" "$dir" + rm -rf $SRC/toolchains/$dir + fi + done + else + display_alert "Ignoring toolchains" "SKIP_EXTERNAL_TOOLCHAINS: ${SKIP_EXTERNAL_TOOLCHAINS}" "info" + fi fi - done fi # check offline @@ -835,20 +1542,18 @@ prepare_host() if [[ $BUILD_OPT == "image" || $BUILD_OPT == "rootfs" ]]; then modprobe -q binfmt_misc mountpoint -q /proc/sys/fs/binfmt_misc/ || mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc - if [[ ! -f /proc/sys/fs/binfmt_misc/qemu-arm ]]; then - apt-get -q -y purge qemu-user-static - apt-get -q -y install qemu-user-static + if [[ "$(arch)" != "aarch64" ]]; then + test -e /proc/sys/fs/binfmt_misc/qemu-arm || update-binfmts --enable qemu-arm + test -e /proc/sys/fs/binfmt_misc/qemu-aarch64 || update-binfmts --enable qemu-aarch64 fi - test -e /proc/sys/fs/binfmt_misc/qemu-arm || update-binfmts --enable qemu-arm - test -e /proc/sys/fs/binfmt_misc/qemu-aarch64 || update-binfmts --enable qemu-aarch64 fi - [[ ! -f $USERPATCHES_PATH/customize-image.sh ]] && cp $EXTER/config/templates/customize-image.sh.template $USERPATCHES_PATH/customize-image.sh + [[ ! -f "${USERPATCHES_PATH}"/customize-image.sh ]] && cp "${EXTER}"/config/templates/customize-image.sh.template "${USERPATCHES_PATH}"/customize-image.sh - if [[ ! -f $USERPATCHES_PATH/README ]]; then - rm -f $USERPATCHES_PATH/readme.txt - echo 'Please read documentation about customizing build configuration' > $USERPATCHES_PATH/README - echo 'http://www.orangepi.org' >> $USERPATCHES_PATH/README + if [[ ! -f "${USERPATCHES_PATH}"/README ]]; then + rm -f "${USERPATCHES_PATH}"/readme.txt + echo 'Please read documentation about customizing build configuration' > "${USERPATCHES_PATH}"/README + echo 'https:/www.orangepi.org' >> "${USERPATCHES_PATH}"/README # create patches directory structure under USERPATCHES_PATH find $EXTER/patch -maxdepth 2 -type d ! -name . | sed "s%/.*patch%/$USERPATCHES_PATH%" | xargs mkdir -p @@ -869,34 +1574,24 @@ prepare_host() function webseed () { -# list of mirrors that host our files -unset text -WEBSEED=( - "https://dl.armbian.com/" - "https://imola.armbian.com/dl/" - "https://mirrors.netix.net/armbian/dl/" - "https://mirrors.dotsrc.org/armbian-dl/" - "https://us.mirrors.fossho.st/armbian/dl/" - "https://uk.mirrors.fossho.st/armbian/dl/" - "https://armbian.systemonachip.net/dl/" - ) - if [[ -z $DOWNLOAD_MIRROR ]]; then - WEBSEED=( - "https://dl.armbian.com/" - ) - fi + # list of mirrors that host our files + unset text + # Hardcoded to EU mirrors since + local CCODE=$(curl -s redirect.armbian.com/geoip | jq '.continent.code' -r) + WEBSEED=($(curl -s https://redirect.armbian.com/mirrors | jq -r '.'${CCODE}' | .[] | values')) # aria2 simply split chunks based on sources count not depending on download speed # when selecting china mirrors, use only China mirror, others are very slow there if [[ $DOWNLOAD_MIRROR == china ]]; then WEBSEED=( - "https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/" + https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/ + ) + elif [[ $DOWNLOAD_MIRROR == bfsu ]]; then + WEBSEED=( + https://mirrors.bfsu.edu.cn/armbian-releases/ ) fi for toolchain in ${WEBSEED[@]}; do - # use only live - if [[ $(wget -S --spider "${toolchain}${1}" 2>&1 >/dev/null | grep 'HTTP/1.1 200 OK') ]]; then - text="${text} ${toolchain}${1}" - fi + text="${text} ${toolchain}${1}" done text="${text:1}" echo "${text}" @@ -914,28 +1609,48 @@ download_and_verify() local dirname=${filename//.tar.xz} if [[ $DOWNLOAD_MIRROR == china ]]; then - local server="https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/" - else - local server="https://dl.armbian.com/" + local server="https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/" + elif [[ $DOWNLOAD_MIRROR == bfsu ]]; then + local server="https://mirrors.bfsu.edu.cn/armbian-releases/" + else + local server=${ARMBIAN_MIRROR} fi if [[ -f ${localdir}/${dirname}/.download-complete ]]; then return fi + # switch to china mirror if US timeouts + timeout 10 curl --head --fail --silent ${server}${remotedir}/${filename} 2>&1 >/dev/null + if [[ $? -ne 7 && $? -ne 22 && $? -ne 0 ]]; then + display_alert "Timeout from $server" "retrying" "info" + server="https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/" + + # switch to another china mirror if tuna timeouts + timeout 10 curl --head --fail --silent ${server}${remotedir}/${filename} 2>&1 >/dev/null + if [[ $? -ne 7 && $? -ne 22 && $? -ne 0 ]]; then + display_alert "Timeout from $server" "retrying" "info" + server="https://mirrors.bfsu.edu.cn/armbian-releases/" + fi + fi + + + # check if file exists on remote server before running aria2 downloader + [[ ! `timeout 10 curl --head --fail --silent ${server}${remotedir}/${filename}` ]] && return + cd "${localdir}" || exit # use local control file - if [[ -f $EXTER/config/torrents/${filename}.asc ]]; then - local torrent=$EXTER/config/torrents/${filename}.torrent - ln -s $EXTER/config/torrents/${filename}.asc ${localdir}/${filename}.asc - elif [[ ! $(wget -S --spider "${server}${remotedir}/${filename}.asc" 2>&1 >/dev/null | grep 'HTTP/1.1 200 OK') ]]; then + if [[ -f "${EXTER}"/config/torrents/${filename}.asc ]]; then + local torrent="${EXTER}"/config/torrents/${filename}.torrent + ln -sf "${EXTER}/config/torrents/${filename}.asc" "${localdir}/${filename}.asc" + elif [[ ! `timeout 10 curl --head --fail --silent "${server}${remotedir}/${filename}.asc"` ]]; then return else # download control file local torrent=${server}$remotedir/${filename}.torrent aria2c --download-result=hide --disable-ipv6=true --summary-interval=0 --console-log-level=error --auto-file-renaming=false \ - --continue=false --allow-overwrite=true --dir="${localdir}" "$(webseed "$remotedir/${filename}.asc")" -o "${filename}.asc" + --continue=false --allow-overwrite=true --dir="${localdir}" ${server}${remotedir}/${filename}.asc $(webseed "$remotedir/${filename}.asc") -o "${filename}.asc" [[ $? -ne 0 ]] && display_alert "Failed to download control file" "" "wrn" fi @@ -943,7 +1658,7 @@ download_and_verify() if [[ ${USE_TORRENT} == "yes" ]]; then display_alert "downloading using torrent network" "$filename" - local ariatorrent="--summary-interval=0 --auto-save-interval=0 --seed-time=0 --bt-stop-timeout=15 --console-log-level=error \ + local ariatorrent="--summary-interval=0 --auto-save-interval=0 --seed-time=0 --bt-stop-timeout=120 --console-log-level=error \ --allow-overwrite=true --download-result=hide --rpc-save-upload-metadata=false --auto-file-renaming=false \ --file-allocation=trunc --continue=true ${torrent} \ --dht-file-path=$EXTER/cache/.aria2/dht.dat --disable-ipv6=true --stderr --follow-torrent=mem --dir=${localdir}" @@ -954,7 +1669,7 @@ download_and_verify() aria2c ${ariatorrent} else # shellcheck disable=SC2035 - aria2c ${ariatorrent} &> "${DEST}"/debug/torrent.log + aria2c ${ariatorrent} &> "${DEST}"/${LOG_SUBPATH}/torrent.log fi # mark complete [[ $? -eq 0 ]] && touch "${localdir}/${filename}.complete" @@ -964,11 +1679,10 @@ download_and_verify() # direct download if torrent fails if [[ ! -f "${localdir}/${filename}.complete" ]]; then - if [[ $(wget -S --spider "${server}${remotedir}/${filename}" 2>&1 >/dev/null \ - | grep 'HTTP/1.1 200 OK') ]]; then + if [[ ! `timeout 10 curl --head --fail --silent ${server}${remotedir}/${filename} 2>&1 >/dev/null` ]]; then display_alert "downloading using http(s) network" "$filename" aria2c --download-result=hide --rpc-save-upload-metadata=false --console-log-level=error \ - --dht-file-path="${SRC}"/cache/.aria2/dht.dat --disable-ipv6=true --summary-interval=0 --auto-file-renaming=false --dir="${localdir}" "$(webseed "${remotedir}/${filename}")" -o "${filename}" + --dht-file-path="${SRC}"/cache/.aria2/dht.dat --disable-ipv6=true --summary-interval=0 --auto-file-renaming=false --dir="${localdir}" ${server}${remotedir}/${filename} $(webseed "${remotedir}/${filename}") -o "${filename}" # mark complete [[ $? -eq 0 ]] && touch "${localdir}/${filename}.complete" && echo "" @@ -989,29 +1703,29 @@ download_and_verify() # Verify archives with Linaro and Armbian GPG keys if [ x"" != x"${http_proxy}" ]; then - (gpg --homedir $EXTER/cache/.gpg --no-permission-warning --list-keys 8F427EAF >> $DEST/debug/output.log 2>&1\ - || gpg --homedir $EXTER/cache/.gpg --no-permission-warning \ + (gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning --list-keys 8F427EAF >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1\ + || gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning \ --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="${http_proxy}" \ - --recv-keys 8F427EAF >> $EXTER/debug/output.log 2>&1) + --recv-keys 8F427EAF >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1) - (gpg --homedir $EXTER/cache/.gpg --no-permission-warning --list-keys 9F0E78D5 >> $DEST/debug/output.log 2>&1\ - || gpg --homedir $EXTER/cache/.gpg --no-permission-warning \ + (gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning --list-keys 9F0E78D5 >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1\ + || gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning \ --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="${http_proxy}" \ - --recv-keys 9F0E78D5 >> $DEST/debug/output.log 2>&1) + --recv-keys 9F0E78D5 >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1) else - (gpg --homedir $EXTER/cache/.gpg --no-permission-warning --list-keys 8F427EAF >> $DEST/debug/output.log 2>&1\ - || gpg --homedir $EXTER/cache/.gpg --no-permission-warning \ + (gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning --list-keys 8F427EAF >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1\ + || gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning \ --keyserver hkp://keyserver.ubuntu.com:80 \ - --recv-keys 8F427EAF >> "${DEST}"/debug/output.log 2>&1) + --recv-keys 8F427EAF >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1) - (gpg --homedir $EXTER/cache/.gpg --no-permission-warning --list-keys 9F0E78D5 >> $DEST/debug/output.log 2>&1\ - || gpg --homedir $EXTER/cache/.gpg --no-permission-warning \ + (gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning --list-keys 9F0E78D5 >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1\ + || gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning \ --keyserver hkp://keyserver.ubuntu.com:80 \ - --recv-keys 9F0E78D5 >> "${DEST}"/debug/output.log 2>&1) + --recv-keys 9F0E78D5 >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1) fi - gpg --homedir $EXTER/cache/.gpg --no-permission-warning --verify \ - --trust-model always -q "${localdir}/${filename}.asc" >> "${DEST}"/debug/output.log 2>&1 + gpg --homedir "${EXTER}"/cache/.gpg --no-permission-warning --verify \ + --trust-model always -q "${localdir}/${filename}.asc" >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1 [[ ${PIPESTATUS[0]} -eq 0 ]] && verified=true && display_alert "Verified" "PGP" "info" else @@ -1037,10 +1751,128 @@ download_and_verify() -function run_after_build() +show_developer_warning() { - chown -R $(logname).$(logname) $BOOTSOURCEDIR - chown -R $(logname).$(logname) $LINUXSOURCEDIR - chown -R $(logname).$(logname) $USERPATCHES_PATH - chown -R $(logname).$(logname) $DEST/{config,debs,debug,images,patch} + local temp_rc + temp_rc=$(mktemp) + cat <<-'EOF' > "${temp_rc}" + screen_color = (WHITE,RED,ON) + EOF + local warn_text="You are switching to the \Z1EXPERT MODE\Zn + + This allows building experimental configurations that are provided + \Z1AS IS\Zn to developers and expert users, + \Z1WITHOUT ANY RESPONSIBILITIES\Zn from the Armbian team: + + - You are using these configurations \Z1AT YOUR OWN RISK\Zn + - Bug reports related to the dev kernel, CSC, WIP and EOS boards + \Z1will be closed without a discussion\Zn + - Forum posts related to dev kernel, CSC, WIP and EOS boards + should be created in the \Z2\"Community forums\"\Zn section + " + DIALOGRC=$temp_rc dialog --title "Expert mode warning" --backtitle "${backtitle}" --colors --defaultno --no-label "I do not agree" \ + --yes-label "I understand and agree" --yesno "$warn_text" "${TTY_Y}" "${TTY_X}" + [[ $? -ne 0 ]] && exit_with_error "Error switching to the expert mode" + SHOW_WARNING=no } + +# is a formatted output of the values of variables +# from the list at the place of the function call. +# +# The LOG_OUTPUT_FILE variable must be defined in the calling function +# before calling the `show_checklist_variables` function and unset after. +# +show_checklist_variables () +{ + local checklist=$* + local var pval + local log_file=${LOG_OUTPUT_FILE:-"${SRC}"/output/${LOG_SUBPATH}/trash.log} + local _line=${BASH_LINENO[0]} + local _function=${FUNCNAME[1]} + local _file=$(basename "${BASH_SOURCE[1]}") + + echo -e "Show variables in function: $_function" "[$_file:$_line]\n" >>$log_file + + for var in $checklist;do + eval pval=\$$var + echo -e "\n$var =:" >>$log_file + if [ $(echo "$pval" | awk -F"/" '{print NF}') -ge 4 ];then + printf "%s\n" $pval >>$log_file + else + printf "%-30s %-30s %-30s %-30s\n" $pval >>$log_file + fi + done +} + + + +#function run_after_build() +#{ +# chown -R $(logname).$(logname) $BOOTSOURCEDIR +# chown -R $(logname).$(logname) $LINUXSOURCEDIR +# chown -R $(logname).$(logname) $USERPATCHES_PATH +# chown -R $(logname).$(logname) $DEST/{config,debs,debug,images,patch} +# +# if [[ $DEBUG_DEB == yes && $BUILD_OPT =~ u-boot|kernel ]]; then +# +# [[ -z $REMOTEIP ]] && exit_with_error "The remote IP address has not been set" "" +# [[ -z $PASS_ROOT ]] && PASS_ROOT="orangepi" +# [[ -z $MMC_DEV ]] && MMC_DEV="tfcard" +# +# #ssh-keygen -f "~/.ssh/known_hosts" -R ${REMOTEIP} +# local num=0 +# while true; +# do +# ping ${REMOTEIP} -c 1 > /dev/null 2>&1 +# +# if [[ $? == 0 ]]; then +# echo " " +# break +# fi +# +# if [[ $num == 0 ]]; then +# display_alert "${BOARD} network cannot be connected" "${REMOTEIP}" "wrn" +# ((num++)) +# fi +# +# echo -e ".\c" +# done +# display_alert "${BOARD} network is connected" "${REMOTEIP}" "info" +# +# if [[ $BUILD_OPT == u-boot ]]; then +# sshpass -p ${PASS_ROOT} scp ${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb root@${REMOTEIP}:/root +# display_alert "Uninstall deb package" "linux-u-boot-${BOARD}-${BRANCH}" "info" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "apt-get purge -y linux-u-boot-${BOARD}-${BRANCH}" +# display_alert "Install deb package" "${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" "info" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "dpkg -i /root/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" +# +# if [[ $MMC_DEV == emmc ]]; then +# display_alert "Burn the U-Boot into EMMC" "" "info" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "dd bs=1k seek=8 if=/usr/lib/linux-u-boot-legacy-orangepi400_2.1.0_arm64/boot0_sdcard.fex of=/dev/mmcblk0" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "dd bs=1k seek=16400 if=/usr/lib/linux-u-boot-legacy-orangepi400_2.1.0_arm64/boot_package.fex of=/dev/mmcblk0" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "sync" +# else +# display_alert "Burn the U-Boot into TF card" "" "info" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "nand-sata-install DEBUG_UBOOT" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "sync" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "reboot" +# fi +# fi +# +# if [[ $BUILD_OPT == kernel ]]; then +# sshpass -p ${PASS_ROOT} scp ${DEB_STORAGE}/linux-image-${BRANCH}-${LINUXFAMILY}_${REVISION}_${ARCH}.deb root@${REMOTEIP}:/root +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "apt-get purge -y linux-image-${BRANCH}-${LINUXFAMILY}" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "dpkg -i /root/linux-image-${BRANCH}-${LINUXFAMILY}_${REVISION}_${ARCH}.deb" +# if [[ $BRANCH == current && $BOARD =~ orangepizero2|orangepi400 ]]; then +# sshpass -p ${PASS_ROOT} scp ${LINUXSOURCEDIR}/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-*.dtb root@${REMOTEIP}:/boot/dtb/allwinner/ +# fi +# +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "sync" +# sshpass -p ${PASS_ROOT} ssh root@${REMOTEIP} "reboot" +# fi +# fi +# +# if [[ $DEBUG_DEB == yes && $BUILD_OPT == image ]]; then +# scp ${destimg}/*.img ${PC_NAME}@${PC_IP}:${PC_DIR} +# fi +#} diff --git a/scripts/image-helpers.sh b/scripts/image-helpers.sh index e790cfd..f992652 100755 --- a/scripts/image-helpers.sh +++ b/scripts/image-helpers.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any @@ -8,14 +8,19 @@ # Functions: + # mount_chroot # umount_chroot # unmount_on_exit # check_loop_device # install_external_applications # write_uboot +# copy_all_packages_files_for # customize_image # install_deb_chroot +# run_on_sdcard + + # mount_chroot @@ -24,12 +29,17 @@ # mount_chroot() { + local target=$1 mount -t proc chproc "${target}"/proc mount -t sysfs chsys "${target}"/sys mount -t devtmpfs chdev "${target}"/dev || mount --bind /dev "${target}"/dev mount -t devpts chpts "${target}"/dev/pts -} ############################################################################# + +} + + + # umount_chroot # @@ -37,6 +47,7 @@ mount_chroot() # umount_chroot() { + local target=$1 display_alert "Unmounting" "$target" "info" while grep -Eq "${target}.*(dev|proc|sys)" /proc/mounts @@ -46,13 +57,28 @@ umount_chroot() umount -l "${target}"/sys >/dev/null 2>&1 sleep 5 done -} ############################################################################# + +} + + + # unmount_on_exit # unmount_on_exit() { + trap - INT TERM EXIT + local stacktrace="$(get_extension_hook_stracktrace "${BASH_SOURCE[*]}" "${BASH_LINENO[*]}")" + display_alert "unmount_on_exit() called!" "$stacktrace" "err" + if [[ "${ERROR_DEBUG_SHELL}" == "yes" ]]; then + ERROR_DEBUG_SHELL=no # dont do it twice + display_alert "MOUNT" "${MOUNT}" "err" + display_alert "SDCARD" "${SDCARD}" "err" + display_alert "ERROR_DEBUG_SHELL=yes, starting a shell." "ERROR_DEBUG_SHELL" "err" + bash < /dev/tty || true + fi + umount_chroot "${SDCARD}/" umount -l "${SDCARD}"/tmp >/dev/null 2>&1 umount -l "${SDCARD}" >/dev/null 2>&1 @@ -61,18 +87,18 @@ unmount_on_exit() [[ $CRYPTROOT_ENABLE == yes ]] && cryptsetup luksClose "${ROOT_MAPPER}" losetup -d "${LOOP}" >/dev/null 2>&1 rm -rf --one-file-system "${SDCARD}" + exit_with_error "debootstrap-ng was interrupted" || true # don't trigger again + +} + - if [[ -f "/run/orangepi/${BOARD^}_${BRANCH}_${RELEASE}_${BUILD_DESKTOP}_${BUILD_MINIMAL}.pid" ]];then - rm "/run/orangepi/${BOARD^}_${BRANCH}_${RELEASE}_${BUILD_DESKTOP}_${BUILD_MINIMAL}.pid" - fi - exit_with_error "debootstrap-ng was interrupted" -} ############################################################################# # check_loop_device # check_loop_device() { + local device=$1 if [[ ! -b $device ]]; then if [[ $CONTAINER_COMPAT == yes && -b /tmp/$device ]]; then @@ -82,62 +108,147 @@ check_loop_device() exit_with_error "Device node $device does not exist" fi fi -} ############################################################################# + +} + + + # write_uboot # -# writes u-boot to loop device -# Parameters: -# loopdev: loop device with mounted rootfs image -# write_uboot() { - local loop=$1 + + local loop=$1 revision display_alert "Writing U-boot bootloader" "$loop" "info" - mkdir -p /tmp/u-boot/ - dpkg -x "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" /tmp/u-boot/ - write_uboot_platform "/tmp/u-boot/usr/lib/${CHOSEN_UBOOT}_${REVISION}_${ARCH}" "$loop" + TEMP_DIR=$(mktemp -d || exit 1) + chmod 700 ${TEMP_DIR} + revision=${REVISION} + if [[ -n $UPSTREM_VER ]]; then + revision=${UPSTREM_VER} + dpkg -x "${DEB_STORAGE}/u-boot/linux-u-boot-${BOARD}-${BRANCH}_${revision}_${ARCH}.deb" ${TEMP_DIR}/ + else + dpkg -x "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${revision}_${ARCH}.deb" ${TEMP_DIR}/ + fi + + # source platform install to read $DIR + source ${TEMP_DIR}/usr/lib/u-boot/platform_install.sh + write_uboot_platform "${TEMP_DIR}${DIR}" "$loop" [[ $? -ne 0 ]] && exit_with_error "U-boot bootloader failed to install" "@host" - rm -r /tmp/u-boot/ - sync -} ############################################################################# + rm -rf ${TEMP_DIR} + +} + + + + +# copy_all_packages_files_for to package +# +copy_all_packages_files_for() +{ + local package_name="${1}" + for package_src_dir in ${PACKAGES_SEARCH_ROOT_ABSOLUTE_DIRS}; + do + local package_dirpath="${package_src_dir}/${package_name}" + if [ -d "${package_dirpath}" ]; + then + cp -r "${package_dirpath}/"* "${destination}/" 2> /dev/null + display_alert "Adding files from" "${package_dirpath}" + fi + done +} + + + customize_image() { + # for users that need to prepare files at host [[ -f $USERPATCHES_PATH/customize-image-host.sh ]] && source "$USERPATCHES_PATH"/customize-image-host.sh + + call_extension_method "pre_customize_image" "image_tweaks_pre_customize" << 'PRE_CUSTOMIZE_IMAGE' +*run before customize-image.sh* +This hook is called after `customize-image-host.sh` is called, but before the overlay is mounted. +It thus can be used for the same purposes as `customize-image-host.sh`. +PRE_CUSTOMIZE_IMAGE + cp "$USERPATCHES_PATH"/customize-image.sh "${SDCARD}"/tmp/customize-image.sh chmod +x "${SDCARD}"/tmp/customize-image.sh mkdir -p "${SDCARD}"/tmp/overlay # util-linux >= 2.27 required mount -o bind,ro "$USERPATCHES_PATH"/overlay "${SDCARD}"/tmp/overlay display_alert "Calling image customization script" "customize-image.sh" "info" - chroot "${SDCARD}" /bin/bash -c "/tmp/customize-image.sh $RELEASE $LINUXFAMILY $BOARD $BUILD_DESKTOP" + chroot "${SDCARD}" /bin/bash -c "/tmp/customize-image.sh $RELEASE $LINUXFAMILY $BOARD $BUILD_DESKTOP $ARCH" CUSTOMIZE_IMAGE_RC=$? umount -i "${SDCARD}"/tmp/overlay >/dev/null 2>&1 mountpoint -q "${SDCARD}"/tmp/overlay || rm -r "${SDCARD}"/tmp/overlay if [[ $CUSTOMIZE_IMAGE_RC != 0 ]]; then exit_with_error "customize-image.sh exited with error (rc: $CUSTOMIZE_IMAGE_RC)" fi -} ############################################################################# + + call_extension_method "post_customize_image" "image_tweaks_post_customize" << 'POST_CUSTOMIZE_IMAGE' +*post customize-image.sh hook* +Run after the customize-image.sh script is run, and the overlay is unmounted. +POST_CUSTOMIZE_IMAGE +} + + + install_deb_chroot() { + local package=$1 - local type=$2 - local name=$(basename "${package}") - - cp "${package}" "${SDCARD}/root/${name}" - - if [[ ${type} == "orangepi" ]]; then - display_alert "Installing form Orange Pi" "$name" + local variant=$2 + local transfer=$3 + local name + local desc + if [[ ${variant} != remote ]]; then + name="/root/"$(basename "${package}") + [[ ! -f "${SDCARD}${name}" ]] && cp "${package}" "${SDCARD}${name}" + desc="" else - display_alert "Installing" "$name" + name=$1 + desc=" from repository" fi + display_alert "Installing${desc}" "${name/\/root\//}" [[ $NO_APT_CACHER != yes ]] && local apt_extra="-o Acquire::http::Proxy=\"http://${APT_PROXY_ADDR:-localhost:3142}\" -o Acquire::http::Proxy::localhost=\"DIRECT\"" - LC_ALL=C LANG=C chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq \ - $apt_extra --no-install-recommends install ./root/$name" >> "${DEST}"/debug/install.log 2>&1 + # when building in bulk from remote, lets make sure we have up2date index + [[ $BUILD_ALL == yes && ${variant} == remote ]] && chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get $apt_extra -yqq update" + chroot "${SDCARD}" /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -yqq $apt_extra --no-install-recommends install $name" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + [[ $? -ne 0 ]] && exit_with_error "Installation of $name failed" "${BOARD} ${RELEASE} ${BUILD_DESKTOP} ${LINUXFAMILY}" + [[ ${variant} == remote && ${transfer} == yes ]] && rsync -rq "${SDCARD}"/var/cache/apt/archives/*.deb ${DEB_STORAGE}/ + +} + + + +dpkg_install_deb_chroot() +{ + + local package=$1 + local name + local desc + + name="/root/"$(basename "${package}") + [[ ! -f "${SDCARD}${name}" ]] && cp "${package}" "${SDCARD}${name}" + + display_alert "Installing${desc}" "${name/\/root\//}" + + # when building in bulk from remote, lets make sure we have up2date index + chroot "${SDCARD}" /bin/bash -c "dpkg -i $name" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 + [[ $? -ne 0 ]] && exit_with_error "Installation of $name failed" "${BOARD} ${RELEASE} ${BUILD_DESKTOP} ${LINUXFAMILY}" + +} + + + +run_on_sdcard() +{ + + # Lack of quotes allows for redirections and pipes easily. + chroot "${SDCARD}" /bin/bash -c "${@}" >> "${DEST}"/${LOG_SUBPATH}/install.log - rm -f "${SDCARD}/root/${name}" } diff --git a/scripts/main.sh b/scripts/main.sh index 789bafe..801dffd 100755 --- a/scripts/main.sh +++ b/scripts/main.sh @@ -1,28 +1,48 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. - - +# # Main program # + +cleanup_list() { + local varname="${1}" + local list_to_clean="${!varname}" + list_to_clean="${list_to_clean#"${list_to_clean%%[![:space:]]*}"}" + list_to_clean="${list_to_clean%"${list_to_clean##*[![:space:]]}"}" + echo ${list_to_clean} +} + + + + if [[ $(basename "$0") == main.sh ]]; then echo "Please use build.sh to start the build process" exit 255 + fi + + + # default umask for root is 022 so parent directories won't be group writeable without this # this is used instead of making the chmod in prepare_host() recursive umask 002 # destination -DEST="${SRC}"/output -REVISION="2.1.8" +if [ -d "$CONFIG_PATH/output" ]; then + DEST="${CONFIG_PATH}"/output +else + DEST="${SRC}"/output +fi + +REVISION="3.0.0" [[ $DOWNLOAD_MIRROR == "china" ]] && NTP_SERVER="cn.pool.ntp.org" @@ -38,15 +58,12 @@ fi backtitle="Orange Pi building script, http://www.orangepi.org" titlestr="Choose an option" -# if language not set, set to english -[[ -z $LANGUAGE ]] && export LANGUAGE="en_US:en" +# Warnings mitigation +[[ -z $LANGUAGE ]] && export LANGUAGE="en_US:en" # set to english if not set +[[ -z $CONSOLE_CHAR ]] && export CONSOLE_CHAR="UTF-8" # set console to UTF-8 if not set -# default console if not set -[[ -z $CONSOLE_CHAR ]] && export CONSOLE_CHAR="UTF-8" +# Libraries include -[[ -z $FORCE_CHECKOUT ]] && FORCE_CHECKOUT=yes - -# Load libraries # shellcheck source=debootstrap.sh source "${SRC}"/scripts/debootstrap.sh # system specific install # shellcheck source=image-helpers.sh @@ -58,23 +75,28 @@ source "${SRC}"/scripts/desktop.sh # desktop specific install # shellcheck source=compilation.sh source "${SRC}"/scripts/compilation.sh # patching and compilation of kernel, uboot, ATF # shellcheck source=compilation-prepare.sh -#source "${SRC}"/scripts/compilation-prepare.sh # kernel plugins - 3rd party drivers that are not upstreamed. Like WG, AUFS, various Wifi +#source "${SRC}"/scripts/compilation-prepare.sh # drivers that are not upstreamed # shellcheck source=makeboarddeb.sh -source "${SRC}"/scripts/makeboarddeb.sh # create board support package +source "${SRC}"/scripts/makeboarddeb.sh # board support package # shellcheck source=general.sh source "${SRC}"/scripts/general.sh # general functions # shellcheck source=chroot-buildpackages.sh -source "${SRC}"/scripts/chroot-buildpackages.sh # building packages in chroot +source "${SRC}"/scripts/chroot-buildpackages.sh # chroot packages building # shellcheck source=pack.sh source "${SRC}"/scripts/pack-uboot.sh + +# set log path +LOG_SUBPATH=${LOG_SUBPATH:=debug} + # compress and remove old logs -mkdir -p "${DEST}"/debug -(cd "${DEST}"/debug && tar -czf logs-"$( /dev/null 2>&1 -rm -f "${DEST}"/debug/*.log > /dev/null 2>&1 -date +"%d_%m_%Y-%H_%M_%S" > "${DEST}"/debug/timestamp +mkdir -p "${DEST}"/${LOG_SUBPATH} +(cd "${DEST}"/${LOG_SUBPATH} && tar -czf logs-"$( /dev/null 2>&1 +rm -f "${DEST}"/${LOG_SUBPATH}/*.log > /dev/null 2>&1 +date +"%d_%m_%Y-%H_%M_%S" > "${DEST}"/${LOG_SUBPATH}/timestamp + # delete compressed logs older than 7 days -(cd "${DEST}"/debug && find . -name '*.tgz' -mtime +7 -delete) > /dev/null +(cd "${DEST}"/${LOG_SUBPATH} && find . -name '*.tgz' -mtime +7 -delete) > /dev/null if [[ $PROGRESS_DISPLAY == none ]]; then @@ -88,15 +110,19 @@ fi if [[ $PROGRESS_LOG_TO_FILE != yes ]]; then unset PROGRESS_LOG_TO_FILE; fi + + SHOW_WARNING=yes + + if [[ $USE_CCACHE != no ]]; then CCACHE=ccache export PATH="/usr/lib/ccache:$PATH" # private ccache directory to avoid permission issues when using build script with "sudo" # see https://ccache.samba.org/manual.html#_sharing_a_cache for alternative solution - [[ $PRIVATE_CCACHE == yes ]] && export CCACHE_DIR=$DEST/cache/ccache + [[ $PRIVATE_CCACHE == yes ]] && export CCACHE_DIR=$EXTER/cache/ccache else @@ -104,19 +130,36 @@ else fi -if [ "$OFFLINE_WORK" == "yes" ]; then - echo -e "\n" - display_alert "* " "You are working offline." - display_alert "* " "Sources, time and host will not be checked" - echo -e "\n" - sleep 3s -else - # we need dialog to display the menu in case not installed. Other stuff gets installed later - prepare_host_basic + + + +if [[ -n $REPOSITORY_UPDATE ]]; then + + # select stable/beta configuration + if [[ $BETA == yes ]]; then + DEB_STORAGE=$DEST/debs-beta + REPO_STORAGE=$DEST/repository-beta + REPO_CONFIG="aptly-beta.conf" + else + DEB_STORAGE=$DEST/debs + REPO_STORAGE=$DEST/repository + REPO_CONFIG="aptly.conf" + fi + + # For user override + if [[ -f "${USERPATCHES_PATH}"/lib.config ]]; then + display_alert "Using user configuration override" "userpatches/lib.config" "info" + source "${USERPATCHES_PATH}"/lib.config + fi + + repo-manipulate "$REPOSITORY_UPDATE" + exit + fi -# if BUILD_OPT, KERNEL_CONFIGURE, BOARD, BRANCH or RELEASE are not set, display selection menu + +# if BUILD_OPT, KERNEL_CONFIGURE, BOARD, BRANCH or RELEASE are not set, display selection menu if [[ -z $BUILD_OPT ]]; then options+=("u-boot" "U-boot package") @@ -132,35 +175,62 @@ if [[ -z $BUILD_OPT ]]; then unset options [[ -z $BUILD_OPT ]] && exit_with_error "No option selected" + [[ $BUILD_OPT == rootfs ]] && ROOT_FS_CREATE_ONLY="yes" fi + + + +if [[ ${BUILD_OPT} =~ kernel|image ]]; then + + if [[ -z $KERNEL_CONFIGURE ]]; then + + options+=("no" "Do not change the kernel configuration") + options+=("yes" "Show a kernel configuration menu before compilation") + + menustr="Select the kernel configuration." + KERNEL_CONFIGURE=$(whiptail --title "${titlestr}" --backtitle "$backtitle" --notags \ + --menu "${menustr}" $TTY_Y $TTY_X $((TTY_Y - 8)) \ + --cancel-button Exit --ok-button Select "${options[@]}" \ + 3>&1 1>&2 2>&3) + + unset options + [[ -z $KERNEL_CONFIGURE ]] && exit_with_error "No option selected" + fi +fi + + + + if [[ -z $BOARD ]]; then - options+=("orangepir1" "Allwinner H2+ quad core 256MB RAM WiFi SPI 2xETH") - options+=("orangepizero" "Allwinner H2+ quad core 256MB/512MB RAM WiFi SPI") - options+=("orangepipc" "Allwinner H3 quad core 1GB RAM") - options+=("orangepipcplus" "Allwinner H3 quad core 1GB RAM WiFi eMMC") - options+=("orangepione" "Allwinner H3 quad core 512MB/1GB RAM") - options+=("orangepilite" "Allwinner H3 quad core 512MB/1GB RAM WiFi") - options+=("orangepiplus" "Allwinner H3 quad core 1GB/2GB RAM WiFi GBE eMMC") - options+=("orangepiplus2e" "Allwinner H3 quad core 2GB RAM WiFi GBE eMMC") - options+=("orangepizeroplus2h3" "Allwinner H3 quad core 512MB RAM WiFi/BT eMMC") - options+=("orangepipch5" "Allwinner H5 quad core 1GB RAM") - options+=("orangepipc2" "Allwinner H5 quad core 1GB RAM GBE SPI") - options+=("orangepioneh5" "Allwinner H5 quad core 512MB/1GB RAM") - options+=("orangepiprime" "Allwinner H5 quad core 2GB RAM GBE WiFi/BT") - options+=("orangepizeroplus" "Allwinner H5 quad core 512MB RAM GBE WiFi SPI") - options+=("orangepizeroplus2h5" "Allwinner H5 quad core 512MB RAM WiFi/BT eMMC") - options+=("orangepi3" "Allwinner H6 quad core 1GB/2GB RAM GBE WiFi/BT-AP6256 eMMC USB3") - options+=("orangepi3-lts" "Allwinner H6 quad core 2GB RAM GBE WiFi/BT-AW859A eMMC USB3") - options+=("orangepilite2" "Allwinner H6 quad core 1GB RAM WiFi/BT USB3") - options+=("orangepioneplus" "Allwinner H6 quad core 1GB RAM GBE") - options+=("orangepizero2" "Allwinner H616 quad core 512MB/1GB RAM WiFi/BT GBE SPI") - #options+=("orangepizero2-b" "Allwinner H616 quad core 1GB RAM WiFi/BT GBE SPI") - #options+=("orangepizero2-lts" "Allwinner H616 quad core 1.5GB RAM WiFi/BT GBE SPI") - options+=("orangepi4" "Rockchip RK3399 hexa core 4GB RAM GBE eMMc USB3 USB-C WiFi/BT") - options+=("orangepir1plus" "Rockchip RK3328 quad core 1GB RAM 2xGBE 8211E USB2 SPI") - options+=("orangepir1plus-lts" "Rockchip RK3328 quad core 1GB RAM 2xGBE YT8531C USB2 SPI") + #options+=("orangepir1" "Allwinner H2+ quad core 256MB RAM WiFi SPI 2xETH") + #options+=("orangepizero" "Allwinner H2+ quad core 256MB/512MB RAM WiFi SPI") + #options+=("orangepipc" "Allwinner H3 quad core 1GB RAM") + #options+=("orangepipcplus" "Allwinner H3 quad core 1GB RAM WiFi eMMC") + #options+=("orangepione" "Allwinner H3 quad core 512MB RAM") + #options+=("orangepilite" "Allwinner H3 quad core 512MB RAM WiFi") + #options+=("orangepiplus" "Allwinner H3 quad core 1GB/2GB RAM WiFi GBE eMMC") + #options+=("orangepiplus2e" "Allwinner H3 quad core 2GB RAM WiFi GBE eMMC") + #options+=("orangepizeroplus2h3" "Allwinner H3 quad core 512MB RAM WiFi/BT eMMC") + #options+=("orangepipch5" "Allwinner H5 quad core 1GB RAM") + #options+=("orangepipc2" "Allwinner H5 quad core 1GB RAM GBE SPI") + #options+=("orangepioneh5" "Allwinner H5 quad core 512MB/1GB RAM") + #options+=("orangepiprime" "Allwinner H5 quad core 2GB RAM GBE WiFi/BT") + #options+=("orangepizeroplus" "Allwinner H5 quad core 512MB RAM GBE WiFi SPI") + #options+=("orangepizeroplus2h5" "Allwinner H5 quad core 512MB RAM WiFi/BT eMMC") + #options+=("orangepi3" "Allwinner H6 quad core 1GB/2GB RAM GBE WiFi/BT eMMC USB3") + options+=("orangepi3-lts" "Allwinner H6 quad core 2GB RAM GBE WiFi/BT-AW859A eMMC USB3") + #options+=("orangepilite2" "Allwinner H6 quad core 1GB RAM WiFi/BT USB3") + #options+=("orangepioneplus" "Allwinner H6 quad core 1GB RAM GBE") + #options+=("orangepizero2" "Allwinner H616 quad core 512MB/1GB RAM WiFi/BT GBE SPI") + #options+=("orangepizero2-b" "Allwinner H616 quad core 512MB/1GB RAM WiFi/BT GBE SPI") + #options+=("orangepizero2-lts" "Allwinner H616 quad core 1.5GB RAM WiFi/BT GBE SPI") + #options+=("orangepi400" "Allwinner H616 quad core 4GB RAM WiFi/BT GBE eMMC VGA") + #options+=("orangepi4" "Rockchip RK3399 hexa core 4GB RAM GBE eMMC USB3 USB-C WiFi/BT") + #options+=("orangepi800" "Rockchip RK3399 hexa core 4GB RAM GBE eMMC USB3 USB-C WiFi/BT VGA") + options+=("orangepi4-lts" "Rockchip RK3399 hexa core 4GB RAM GBE eMMC USB3 USB-C WiFi/BT") + #options+=("orangepir1plus" "Rockchip RK3328 quad core 1GB RAM 2xGBE USB2 SPI") menustr="Please choose a Board." BOARD=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \ @@ -181,147 +251,115 @@ LINUXFAMILY="${BOARDFAMILY}" if [[ -z $BRANCH ]]; then - options=() - [[ $KERNEL_TARGET == *current* ]] && options+=("current" "Mainline") - [[ $KERNEL_TARGET == *legacy* ]] && options+=("legacy" "Old stable") - [[ $KERNEL_TARGET == *dev* && $EXPERT = yes ]] && options+=("dev" "\Z1Development version (@kernel.org)\Zn") + options=() + [[ $KERNEL_TARGET == *current* ]] && options+=("current" "Recommended. Come with best support") + [[ $KERNEL_TARGET == *legacy* ]] && options+=("legacy" "Old stable / Legacy") + [[ $KERNEL_TARGET == *edge* && $EXPERT = yes ]] && options+=("edge" "\Z1Bleeding edge from @kernel.org\Zn") - menustr="Select the target kernel branch\nExact kernel versions depend on selected board" - # do not display selection dialog if only one kernel branch is available - if [[ "${#options[@]}" == 2 ]]; then - BRANCH="${options[0]}" - else + menustr="Select the target kernel branch\nExact kernel versions depend on selected board" + # do not display selection dialog if only one kernel branch is available + if [[ "${#options[@]}" == 2 ]]; then + BRANCH="${options[0]}" + else BRANCH=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \ --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ --cancel-button Exit --ok-button Select "${options[@]}" \ 3>&1 1>&2 2>&3) - fi - - unset options - [[ -z $BRANCH ]] && exit_with_error "No kernel branch selected" + fi + unset options + [[ -z $BRANCH ]] && exit_with_error "No kernel branch selected" + [[ $BRANCH == dev && $SHOW_WARNING == yes ]] && show_developer_warning else - [[ $KERNEL_TARGET != *$BRANCH* ]] && exit_with_error "Kernel branch not defined for this board" "$BRANCH" + [[ $BRANCH == next ]] && KERNEL_TARGET="next" + # next = new legacy. Should stay for backward compatibility, but be removed from menu above + # or we left definitions in board configs and only remove menu + [[ $KERNEL_TARGET != *$BRANCH* ]] && exit_with_error "Kernel branch not defined for this board" "$BRANCH" fi -if [[ ${BUILD_OPT} == image || ${BUILD_OPT} == kernel ]]; then - if [[ -z $KERNEL_CONFIGURE ]]; then - options+=("no" "Do not change the kernel configuration") - options+=("yes" "Show a kernel configuration menu before compilation") +if [[ $BUILD_OPT =~ rootfs|image && -z $RELEASE ]]; then - menustr="Select the kernel configuration." - KERNEL_CONFIGURE=$(whiptail --title "${titlestr}" --backtitle "$backtitle" --notags \ - --menu "${menustr}" $TTY_Y $TTY_X $((TTY_Y - 8)) \ - --cancel-button Exit --ok-button Select "${options[@]}" \ - 3>&1 1>&2 2>&3) + options=() - unset options - [[ -z $KERNEL_CONFIGURE ]] && exit_with_error "No option selected" - fi + distros_options + + menustr="Select the target OS release package base" + RELEASE=$(whiptail --title "Choose a release package base" --backtitle "${backtitle}" \ + --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ + --cancel-button Exit --ok-button Select "${options[@]}" \ + 3>&1 1>&2 2>&3) + #echo "options : ${options}" + [[ -z $RELEASE ]] && exit_with_error "No release selected" + + unset options fi -# define distribution support status -declare -A distro_name -distro_name['stretch']="Debian 9 Stretch" -distro_name['buster']="Debian 10 Buster" -distro_name['bullseye']="Debian 11 Bullseye" -distro_name['xenial']="Ubuntu Xenial 16.04 LTS" -distro_name['bionic']="Ubuntu Bionic 18.04 LTS" -distro_name['focal']="Ubuntu Focal 20.04 LTS" -distro_name['eoan']="Ubuntu Eoan 19.10" +# don't show desktop option if we choose minimal build +[[ $BUILD_MINIMAL == yes ]] && BUILD_DESKTOP=no -if [[ ${BUILD_OPT} == image || ${BUILD_OPT} == rootfs ]]; then +if [[ $BUILD_OPT =~ rootfs|image && -z $BUILD_DESKTOP ]]; then - RELEASE_TARGET="stretch buster bullseye xenial bionic eoan focal" + # read distribution support status which is written to the orangepi-release file + set_distribution_status - if [[ -z $RELEASE ]]; then + options=() + options+=("no" "Image with console interface (server)") + options+=("yes" "Image with desktop environment") - if [[ $BRANCH == legacy ]]; then - - if [[ $LINUXFAMILY == sun50iw9 || $LINUXFAMILY == sun50iw6 ]]; then - - RELEASE_TARGET="buster bionic focal" - elif [[ $LINUXFAMILY == rk3399 ]]; then - - RELEASE_TARGET="xenial bionic buster" - else - RELEASE_TARGET="xenial" - fi - - elif [[ $BRANCH == current ]]; then - - RELEASE_TARGET="buster bionic focal" - [[ $LINUXFAMILY == sun50iw6 ]] && RELEASE_TARGET="buster focal" - else - - [[ -z $BRANCH ]] && exit_with_error "No kernel branch selected" - fi - - distro_menu "stretch" - distro_menu "buster" - distro_menu "bullseye" - distro_menu "xenial" - distro_menu "bionic" - distro_menu "eoan" - distro_menu "focal" - - menustr="Select the target OS release package base" - RELEASE=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \ - --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ - --cancel-button Exit --ok-button Select "${options[@]}" \ - 3>&1 1>&2 2>&3) - - unset options - [[ -z $RELEASE ]] && exit_with_error "No option selected" + menustr="Select the target image type" + BUILD_DESKTOP=$(whiptail --title "Choose image type" --backtitle "${backtitle}" \ + --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ + --cancel-button Exit --ok-button Select "${options[@]}" \ + 3>&1 1>&2 2>&3) + unset options + [[ -z $BUILD_DESKTOP ]] && exit_with_error "No option selected" + if [[ ${BUILD_DESKTOP} == "yes" ]]; then + BUILD_MINIMAL=no + SELECTED_CONFIGURATION="desktop" fi - # don't show desktop option if we choose minimal build - [[ $BUILD_MINIMAL == yes ]] && BUILD_DESKTOP="no" +fi - if [[ -z $BUILD_DESKTOP ]]; then +if [[ $BUILD_OPT =~ rootfs|image && $BUILD_DESKTOP == no && -z $BUILD_MINIMAL ]]; then - options+=("no" "Image with console interface (server)") - options+=("yes" "Image with desktop environment") - - menustr="Select the target image type." - BUILD_DESKTOP=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" --notags \ - --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ - --cancel-button Exit --ok-button Select "${options[@]}" \ - 3>&1 1>&2 2>&3) - - unset options - [[ -z $BUILD_DESKTOP ]] && exit_with_error "No option selected" - [[ $BUILD_DESKTOP == yes ]] && BUILD_MINIMAL="no" + options=() + options+=("no" "Standard image with console interface") + options+=("yes" "Minimal image with console interface") + menustr="Select the target image type" + BUILD_MINIMAL=$(whiptail --title "Choose image type" --backtitle "${backtitle}" \ + --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ + --cancel-button Exit --ok-button Select "${options[@]}" \ + 3>&1 1>&2 2>&3) + unset options + [[ -z $BUILD_MINIMAL ]] && exit_with_error "No option selected" + if [[ $BUILD_MINIMAL == "yes" ]]; then + SELECTED_CONFIGURATION="cli_minimal" + else + SELECTED_CONFIGURATION="cli_standard" fi - if [[ $BUILD_DESKTOP == "no" && -z $BUILD_MINIMAL ]]; then - - options+=("no" "Standard image with console interface") - options+=("yes" "Minimal image with console interface") - - menustr="Select the target image type." - BUILD_MINIMAL=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" --notags \ - --menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \ - --cancel-button Exit --ok-button Select "${options[@]}" \ - 3>&1 1>&2 2>&3) - - unset options - [[ -z $BUILD_MINIMAL ]] && exit_with_error "No option selected" - fi fi #prevent conflicting setup -[[ $BUILD_DESKTOP == yes ]] && BUILD_MINIMAL=no -[[ $BUILD_DESKTOP == yes ]] && IMAGETYPE="desktop" -[[ $BUILD_DESKTOP == no ]] && IMAGETYPE="server" -[[ $BUILD_MINIMAL == yes ]] && EXTERNAL_NEW=no +if [[ $BUILD_DESKTOP == "yes" ]]; then + BUILD_MINIMAL=no + SELECTED_CONFIGURATION="desktop" +elif [[ $BUILD_MINIMAL != "yes" || -z "${BUILD_MINIMAL}" ]]; then + BUILD_MINIMAL=no # Just in case BUILD_MINIMAL is not defined + BUILD_DESKTOP=no + SELECTED_CONFIGURATION="cli_standard" +elif [[ $BUILD_MINIMAL == "yes" ]]; then + BUILD_DESKTOP=no + SELECTED_CONFIGURATION="cli_minimal" +fi + +#[[ ${KERNEL_CONFIGURE} == prebuilt ]] && [[ -z ${REPOSITORY_INSTALL} ]] && \ +#REPOSITORY_INSTALL="u-boot,kernel,bsp,orangepi-zsh,orangepi-config,orangepi-firmware${BUILD_DESKTOP:+,orangepi-desktop}" -CONTAINER_COMPAT="no" -[[ -z $COMPRESS_OUTPUTIMAGE ]] && COMPRESS_OUTPUTIMAGE="yes" #shellcheck source=configuration.sh source "${SRC}"/scripts/configuration.sh @@ -338,10 +376,17 @@ else fi -if [[ $BUILD_ALL == yes && -n $GPG_PASS ]]; then - IMAGE_TYPE=stable +call_extension_method "post_determine_cthreads" "config_post_determine_cthreads" << 'POST_DETERMINE_CTHREADS' +*give config a chance modify CTHREADS programatically. A build server may work better with hyperthreads-1 for example.* +Called early, before any compilation work starts. +POST_DETERMINE_CTHREADS + +if [[ $BETA == yes ]]; then + IMAGE_TYPE=nightly +elif [[ $BETA != "yes" && $BUILD_ALL == yes && -n $GPG_PASS ]]; then + IMAGE_TYPE=stable else - IMAGE_TYPE=user-built + IMAGE_TYPE=user-built fi branch2dir() { @@ -352,18 +397,15 @@ BOOTSOURCEDIR="${BOOTDIR}/$(branch2dir "${BOOTBRANCH}")" LINUXSOURCEDIR="${KERNELDIR}/$(branch2dir "${KERNELBRANCH}")" [[ -n $ATFSOURCE ]] && ATFSOURCEDIR="${ATFDIR}/$(branch2dir "${ATFBRANCH}")" -# The version of the Linux kernel -#VER=$(grab_version "$LINUXSOURCEDIR") -#KERNEL_NAME="linux${VER}" +BSP_CLI_PACKAGE_NAME="orangepi-bsp-cli-${BOARD}" +BSP_CLI_PACKAGE_FULLNAME="${BSP_CLI_PACKAGE_NAME}_${REVISION}_${ARCH}" +BSP_DESKTOP_PACKAGE_NAME="orangepi-bsp-desktop-${BOARD}" +BSP_DESKTOP_PACKAGE_FULLNAME="${BSP_DESKTOP_PACKAGE_NAME}_${REVISION}_${ARCH}" -# define package names -DEB_BRANCH=${BRANCH//default} -# if not empty, append hyphen -DEB_BRANCH=${DEB_BRANCH:+${DEB_BRANCH}-} -CHOSEN_UBOOT=linux-u-boot-${DEB_BRANCH}${BOARD} -CHOSEN_KERNEL=linux-image-${DEB_BRANCH}${LINUXFAMILY} -CHOSEN_ROOTFS=linux-${RELEASE}-root-${DEB_BRANCH}${BOARD} -CHOSEN_DESKTOP=orangepi-${RELEASE}-desktop +CHOSEN_UBOOT=linux-u-boot-${BRANCH}-${BOARD} +CHOSEN_KERNEL=linux-image-${BRANCH}-${LINUXFAMILY} +CHOSEN_ROOTFS=${BSP_CLI_PACKAGE_NAME} +CHOSEN_DESKTOP=orangepi-${RELEASE}-desktop-${DESKTOP_ENVIRONMENT} CHOSEN_KSRC=linux-source-${BRANCH}-${LINUXFAMILY} do_default() { @@ -374,31 +416,50 @@ start=$(date +%s) # The OFFLINE_WORK variable inside the function prepare_host +[[ "${JUST_INIT}" == "yes" ]] && exit 0 + [[ $CLEAN_LEVEL == *sources* ]] && cleaning "sources" # fetch_from_repo # ignore updates help on building all images - for internal purposes -if [[ $IGNORE_UPDATES != yes ]]; then -display_alert "Downloading sources" "" "info" +if [[ ${IGNORE_UPDATES} != yes ]]; then - fetch_from_repo "$BOOTSOURCE" "$BOOTDIR" "$BOOTBRANCH" "yes" - fetch_from_repo "$KERNELSOURCE" "$KERNELDIR" "$KERNELBRANCH" "yes" - if [[ -n $ATFSOURCE ]]; then - fetch_from_repo "$ATFSOURCE" "${EXTER}/cache/sources/$ATFDIR" "$ATFBRANCH" "yes" - fi - - fetch_from_repo "https://github.com/linux-sunxi/sunxi-tools" "${EXTER}/cache/sources/sunxi-tools" "branch:master" - fetch_from_repo "https://github.com/armbian/rkbin" "${EXTER}/cache/sources/rkbin-tools" "branch:master" + display_alert "Downloading sources" "" "info" + + [[ $BUILD_OPT =~ u-boot|image ]] && fetch_from_repo "$BOOTSOURCE" "$BOOTDIR" "$BOOTBRANCH" "yes" + [[ $BUILD_OPT =~ kernel|image ]] && fetch_from_repo "$KERNELSOURCE" "$KERNELDIR" "$KERNELBRANCH" "yes" + + if [[ -n ${ATFSOURCE} ]]; then + + [[ ${BUILD_OPT} =~ u-boot|image ]] && fetch_from_repo "$ATFSOURCE" "${EXTER}/cache/sources/$ATFDIR" "$ATFBRANCH" "yes" - if [[ $BOARD == orangepi4 ]]; then - fetch_from_repo "https://github.com/orangepi-xunlong/rk3399_gst_xserver_libs.git" "${EXTER}/cache/sources/rk3399_gst_xserver_libs" "branch:main" fi + + if [[ ${BOARD} =~ orangepi4|orangepi4-lts|orangepi800 && $BRANCH == legacy ]]; then + + [[ $BUILD_OPT =~ image ]] && fetch_from_repo "https://github.com/orangepi-xunlong/rk3399_gst_xserver_libs.git" "${EXTER}/cache/sources/rk3399_gst_xserver_libs" "branch:main" + + fi + + if [[ ${BOARD} =~ orangepi4|orangepi4-lts|orangepi800 && $RELEASE =~ focal|buster|bullseye|bookworm ]]; then + + [[ ${BUILD_OPT} == image ]] && fetch_from_repo "https://github.com/orangepi-xunlong/rk-rootfs-build.git" "${EXTER}/cache/sources/rk-rootfs-build-${RELEASE}" "branch:rk-rootfs-build-${RELEASE}" + + fi + + call_extension_method "fetch_sources_tools" <<- 'FETCH_SOURCES_TOOLS' + *fetch host-side sources needed for tools and build* + Run early to fetch_from_repo or otherwise obtain sources for needed tools. + FETCH_SOURCES_TOOLS + + call_extension_method "build_host_tools" <<- 'BUILD_HOST_TOOLS' + *build needed tools for the build, host-side* + After sources are fetched, build host-side tools needed for the build. + BUILD_HOST_TOOLS + fi -compile_sunxi_tools -install_rkbin_tools - for option in $(tr ',' ' ' <<< "$CLEAN_LEVEL"); do [[ $option != sources ]] && cleaning "$option" done @@ -414,6 +475,7 @@ if [[ $BUILD_OPT == u-boot || $BUILD_OPT == image ]]; then fi if [[ $BUILD_OPT == "u-boot" ]]; then + unset BUILD_MINIMAL BUILD_DESKTOP COMPRESS_OUTPUTIMAGE display_alert "U-boot build done" "@host" "info" display_alert "Target directory" "${DEB_STORAGE}/u-boot" "info" display_alert "File name" "${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" "info" @@ -425,10 +487,12 @@ if [[ $BUILD_OPT == kernel || $BUILD_OPT == image ]]; then if [[ ! -f ${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb ]]; then + KDEB_CHANGELOG_DIST=$RELEASE [[ "${REPOSITORY_INSTALL}" != *kernel* ]] && compile_kernel fi if [[ $BUILD_OPT == "kernel" ]]; then + unset BUILD_MINIMAL BUILD_DESKTOP COMPRESS_OUTPUTIMAGE display_alert "Kernel build done" "@host" "info" display_alert "Target directory" "${DEB_STORAGE}/" "info" display_alert "File name" "${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" "info" @@ -442,25 +506,53 @@ if [[ $BUILD_OPT == rootfs || $BUILD_OPT == image ]]; then [[ "${REPOSITORY_INSTALL}" != *orangepi-config* ]] && compile_orangepi-config fi - - if [[ ! -f ${DEB_STORAGE}/orangepi-firmware_${REVISION}_all.deb ]]; then - - [[ "${REPOSITORY_INSTALL}" != *orangepi-firmware* ]] && compile_firmware + + # Compile orangepi-zsh if packed .deb does not exist or use the one from repository + if [[ ! -f ${DEB_STORAGE}/orangepi-zsh_${REVISION}_all.deb ]]; then + + [[ "${REPOSITORY_INSTALL}" != *orangepi-zsh* ]] && compile_orangepi-zsh fi - + + # Compile orangepi-firmware if packed .deb does not exist or use the one from repository + + + if [[ "${REPOSITORY_INSTALL}" != *orangepi-firmware* ]]; then + + if ! ls "${DEB_STORAGE}/orangepi-firmware_${REVISION}_all.deb" 1> /dev/null 2>&1; then + + FULL="" + REPLACE="-full" + compile_firmware + + fi + + #if ! ls "${DEB_STORAGE}/orangepi-firmware-full_${REVISION}_all.deb" 1> /dev/null 2>&1; then + + #FULL="-full" + #REPLACE="" + #compile_firmware + + #fi + + fi + overlayfs_wrapper "cleanup" + + + # create board support package - if [[ ! -f ${DEB_STORAGE}/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb ]]; then - - [[ "${REPOSITORY_INSTALL}" != *bsp* ]] && create_board_package - fi - + [[ -n $RELEASE && ! -f ${DEB_STORAGE}/$RELEASE/${BSP_CLI_PACKAGE_FULLNAME}.deb ]] && create_board_package + + + # create desktop package - if [[ ! -f ${DEB_STORAGE}/$RELEASE/${CHOSEN_DESKTOP}_${REVISION}_all.deb ]]; then - - [[ "${REPOSITORY_INSTALL}" != *orangepi-desktop* ]] && create_desktop_package - fi + #[[ -n $RELEASE && $DESKTOP_ENVIRONMENT && ! -f ${DEB_STORAGE}/$RELEASE/${CHOSEN_DESKTOP}_${REVISION}_all.deb ]] && create_desktop_package + #[[ -n $RELEASE && $DESKTOP_ENVIRONMENT && ! -f ${DEB_STORAGE}/${RELEASE}/${BSP_DESKTOP_PACKAGE_FULLNAME}.deb ]] && create_bsp_desktop_package + [[ -n $RELEASE && $DESKTOP_ENVIRONMENT ]] && create_desktop_package + [[ -n $RELEASE && $DESKTOP_ENVIRONMENT ]] && create_bsp_desktop_package + + # build additional packages [[ $EXTERNAL_NEW == compile ]] && chroot_build_packages @@ -485,8 +577,13 @@ $([[ -n $BUILD_OPT ]] && echo "BUILD_OPT=${BUILD_OPT} ")\ $([[ -n $RELEASE ]] && echo "RELEASE=${RELEASE} ")\ $([[ -n $BUILD_MINIMAL ]] && echo "BUILD_MINIMAL=${BUILD_MINIMAL} ")\ $([[ -n $BUILD_DESKTOP ]] && echo "BUILD_DESKTOP=${BUILD_DESKTOP} ")\ -$([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE}")\ -" "info" +$([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE} ")\ +$([[ -n $DESKTOP_ENVIRONMENT ]] && echo "DESKTOP_ENVIRONMENT=${DESKTOP_ENVIRONMENT} ")\ +$([[ -n $DESKTOP_ENVIRONMENT_CONFIG_NAME ]] && echo "DESKTOP_ENVIRONMENT_CONFIG_NAME=${DESKTOP_ENVIRONMENT_CONFIG_NAME} ")\ +$([[ -n $DESKTOP_APPGROUPS_SELECTED ]] && echo "DESKTOP_APPGROUPS_SELECTED=\"${DESKTOP_APPGROUPS_SELECTED}\" ")\ +$([[ -n $DESKTOP_APT_FLAGS_SELECTED ]] && echo "DESKTOP_APT_FLAGS_SELECTED=\"${DESKTOP_APT_FLAGS_SELECTED}\" ")\ +$([[ -n $COMPRESS_OUTPUTIMAGE ]] && echo "COMPRESS_OUTPUTIMAGE=${COMPRESS_OUTPUTIMAGE} ")\ +" "ext" } # end of do_default() diff --git a/scripts/makeboarddeb.sh b/scripts/makeboarddeb.sh index 62a6e7c..1bdb09b 100755 --- a/scripts/makeboarddeb.sh +++ b/scripts/makeboarddeb.sh @@ -1,39 +1,58 @@ #!/bin/bash # -# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com +# Copyright (c) 2021 Igor Pecovnik, igor.pecovnik@gma**.com # # This file is licensed under the terms of the GNU General Public # License version 2. This program is licensed "as is" without any # warranty of any kind, whether express or implied. -# Create board support packages # # Functions: # create_board_package + + + create_board_package() { - display_alert "Creating board support package" "$BOARD $BRANCH" "info" + display_alert "Creating board support package for CLI" "$CHOSEN_ROOTFS" "info" - local destination=$SRC/.tmp/${RELEASE}/${CHOSEN_ROOTFS}_${REVISION}_${ARCH} - rm -rf "${destination}" + bsptempdir=$(mktemp -d) + chmod 700 ${bsptempdir} + trap "rm -rf \"${bsptempdir}\" ; exit 0" 0 1 2 3 15 + local destination=${bsptempdir}/${RELEASE}/${BSP_CLI_PACKAGE_FULLNAME} mkdir -p "${destination}"/DEBIAN + cd $destination + + # copy general overlay from packages/bsp-cli + copy_all_packages_files_for "bsp-cli" # install copy of boot script & environment file - local bootscript_src=${BOOTSCRIPT%%:*} - local bootscript_dst=${BOOTSCRIPT##*:} - mkdir -p "${destination}"/usr/share/orangepi/ - cp "${EXTER}/config/bootscripts/${bootscript_src}" "${destination}/usr/share/orangepi/${bootscript_dst}" - [[ -n $BOOTENV_FILE && -f ${EXTER}/config/bootenv/$BOOTENV_FILE ]] && \ - cp "${EXTER}/config/bootenv/${BOOTENV_FILE}" "${destination}"/usr/share/orangepi/orangepiEnv.txt + if [[ "${BOOTCONFIG}" != "none" ]]; then + # @TODO: add extension method bsp_prepare_bootloader(), refactor into u-boot extension + local bootscript_src=${BOOTSCRIPT%%:*} + local bootscript_dst=${BOOTSCRIPT##*:} + mkdir -p "${destination}"/usr/share/orangepi/ - # add configuration for setting uboot environment from userspace with: fw_setenv fw_printenv - if [[ -n $UBOOT_FW_ENV ]]; then - UBOOT_FW_ENV=($(tr ',' ' ' <<< "$UBOOT_FW_ENV")) - mkdir -p "${destination}"/etc - echo "# Device to access offset env size" > "${destination}"/etc/fw_env.config - echo "/dev/mmcblk0 ${UBOOT_FW_ENV[0]} ${UBOOT_FW_ENV[1]}" >> "${destination}"/etc/fw_env.config + # create extlinux config file + if [[ $SRC_EXTLINUX != yes ]]; then + if [ -f "${USERPATCHES_PATH}/bootscripts/${bootscript_src}" ]; then + cp "${USERPATCHES_PATH}/bootscripts/${bootscript_src}" "${destination}/usr/share/orangepi/${bootscript_dst}" + else + cp "${EXTER}/config/bootscripts/${bootscript_src}" "${destination}/usr/share/orangepi/${bootscript_dst}" + fi + [[ -n $BOOTENV_FILE && -f $SRC/config/bootenv/$BOOTENV_FILE ]] && \ + cp "${EXTER}/config/bootenv/${BOOTENV_FILE}" "${destination}"/usr/share/orangepi/orangepiEnv.txt + fi + + # add configuration for setting uboot environment from userspace with: fw_setenv fw_printenv + if [[ -n $UBOOT_FW_ENV ]]; then + UBOOT_FW_ENV=($(tr ',' ' ' <<< "$UBOOT_FW_ENV")) + mkdir -p "${destination}"/etc + echo "# Device to access offset env size" > "${destination}"/etc/fw_env.config + echo "/dev/mmcblk0 ${UBOOT_FW_ENV[0]} ${UBOOT_FW_ENV[1]}" >> "${destination}"/etc/fw_env.config + fi fi # Replaces: base-files is needed to replace /etc/update-motd.d/ files on Xenial @@ -42,7 +61,7 @@ create_board_package() # Depends: linux-base is needed for "linux-version" command in initrd cleanup script # Depends: fping is needed for orangepimonitor to upload orangepi-hardware-monitor.log cat <<-EOF > "${destination}"/DEBIAN/control - Package: linux-${RELEASE}-root-${DEB_BRANCH}${BOARD} + Package: ${BSP_CLI_PACKAGE_NAME} Version: $REVISION Architecture: $ARCH Maintainer: $MAINTAINER <$MAINTAINERMAIL> @@ -50,12 +69,12 @@ create_board_package() Section: kernel Priority: optional Depends: bash, linux-base, u-boot-tools, initramfs-tools, lsb-release, fping - Provides: orangepi-bsp - Conflicts: orangepi-bsp + Provides: linux-${RELEASE}-root-legacy-$BOARD, linux-${RELEASE}-root-current-$BOARD, linux-${RELEASE}-root-edge-$BOARD Suggests: orangepi-config - Replaces: zram-config, base-files, orangepi-tools-$RELEASE + Replaces: zram-config, base-files, orangepi-tools-$RELEASE, linux-${RELEASE}-root-legacy-$BOARD (<< $REVISION~), linux-${RELEASE}-root-current-$BOARD (<< $REVISION~), linux-${RELEASE}-root-edge-$BOARD (<< $REVISION~) + Breaks: linux-${RELEASE}-root-legacy-$BOARD (<< $REVISION~), linux-${RELEASE}-root-current-$BOARD (<< $REVISION~), linux-${RELEASE}-root-edge-$BOARD (<< $REVISION~) Recommends: bsdutils, parted, util-linux, toilet - Description: OrangePi tweaks for $RELEASE on $BOARD ($BRANCH branch) + Description: OrangePi board support files for $BOARD EOF # set up pre install script @@ -102,7 +121,6 @@ create_board_package() [ -f "/etc/update-motd.d/99-point-to-faq" ] && rm /etc/update-motd.d/99-point-to-faq [ -f "/etc/update-motd.d/80-esm" ] && rm /etc/update-motd.d/80-esm [ -f "/etc/update-motd.d/80-livepatch" ] && rm /etc/update-motd.d/80-livepatch - [ -f "/etc/apt/apt.conf.d/50unattended-upgrades" ] && rm /etc/apt/apt.conf.d/50unattended-upgrades [ -f "/etc/apt/apt.conf.d/02compress-indexes" ] && rm /etc/apt/apt.conf.d/02compress-indexes [ -f "/etc/apt/apt.conf.d/02periodic" ] && rm /etc/apt/apt.conf.d/02periodic [ -f "/etc/apt/apt.conf.d/no-languages" ] && rm /etc/apt/apt.conf.d/no-languages @@ -115,7 +133,8 @@ create_board_package() [ -f "/lib/systemd/system/resize2fs.service" ] && rm /lib/systemd/system/resize2fs.service [ -f "/usr/lib/orangepi/apt-updates" ] && rm /usr/lib/orangepi/apt-updates [ -f "/usr/lib/orangepi/firstrun-config.sh" ] && rm /usr/lib/orangepi/firstrun-config.sh - dpkg-divert --quiet --package linux-${RELEASE}-root-${DEB_BRANCH}${BOARD} --add --rename --divert /etc/mpv/mpv-dist.conf /etc/mpv/mpv.conf + # fix for https://bugs.launchpad.net/ubuntu/+source/lightdm-gtk-greeter/+bug/1897491 + [ -d "/var/lib/lightdm" ] && (chown -R lightdm:lightdm /var/lib/lightdm ; chmod 0750 /var/lib/lightdm) exit 0 EOF @@ -126,7 +145,6 @@ create_board_package() #!/bin/sh if [ remove = "\$1" ] || [ abort-install = "\$1" ]; then - dpkg-divert --quiet --package linux-${RELEASE}-root-${DEB_BRANCH}${BOARD} --remove --rename --divert /etc/mpv/mpv-dist.conf /etc/mpv/mpv.conf systemctl disable orangepi-hardware-monitor.service orangepi-hardware-optimize.service >/dev/null 2>&1 systemctl disable orangepi-zram-config.service orangepi-ramlog.service >/dev/null 2>&1 @@ -143,7 +161,7 @@ create_board_package() # ${BOARD} BSP post installation script # - systemctl --no-reload enable orangepi-ramlog.service + [ -f /etc/lib/systemd/system/orangepi-ramlog.service ] && systemctl --no-reload enable orangepi-ramlog.service # check if it was disabled in config and disable in new service if [ -n "\$(grep -w '^ENABLED=false' /etc/default/log2ram 2> /dev/null)" ]; then @@ -162,25 +180,6 @@ create_board_package() fi EOF - - if [[ $RELEASE == bionic && $BOARD != orangepi4 ]] || [[ $RELEASE == focal && $BOARDFAMILY == sun50iw6 ]]; then - cat <<-EOF >> "${destination}"/DEBIAN/postinst - # temporally disable acceleration on some arch in Bionic due to broken mesa packages - echo 'Section "Device" - \tIdentifier \t"Default Device" - \tOption \t"AccelMethod" "none" - EndSection' >> /etc/X11/xorg.conf.d/01-orangepi-defaults.conf - EOF - elif [[ $RELEASE == bionic && $BOARD == orangepi4 ]]; then - cat <<-EOF >> "${destination}"/DEBIAN/postinst - # temporally disable acceleration on some arch in Bionic due to broken mesa packages - echo 'Section "Device" - \tIdentifier \t"Default Device" - \tOption \t"AccelMethod" "glamor" - EndSection' >> /etc/X11/xorg.conf.d/01-orangepi-defaults.conf - EOF - fi - # install bootscripts if they are not present. Fix upgrades from old images if [[ $FORCE_BOOTSCRIPT_UPDATE == yes ]]; then cat <<-EOF >> "${destination}"/DEBIAN/postinst @@ -214,9 +213,9 @@ create_board_package() rootdev=\$(sed -e 's/^.*root=//' -e 's/ .*\$//' < /proc/cmdline) rootfstype=\$(sed -e 's/^.*rootfstype=//' -e 's/ .*$//' < /proc/cmdline) - # recreate orangepiEnv.txt only not exists - if [ ! -f /boot/orangepiEnv.txt ]; then - cp /usr/share/orangepi/orangepiEnv.txt /boot/ >/dev/null 2>&1 + # recreate orangepiEnv.txt if it and extlinux does not exists + if [ ! -f /boot/orangepiEnv.txt ] && [ ! -f /boot/extlinux/extlinux.conf ]; then + cp /usr/share/orangepi/orangepiEnv.txt /boot >/dev/null 2>&1 echo "rootdev="\$rootdev >> /boot/orangepiEnv.txt echo "rootfstype="\$rootfstype >> /boot/orangepiEnv.txt fi @@ -227,17 +226,17 @@ create_board_package() fi - [ ! -f "/etc/network/interfaces" ] && cp /etc/network/interfaces.default /etc/network/interfaces + [ ! -f "/etc/network/interfaces" ] && [ -f "/etc/network/interfaces.default" ] && cp /etc/network/interfaces.default /etc/network/interfaces ln -sf /var/run/motd /etc/motd rm -f /etc/update-motd.d/00-header /etc/update-motd.d/10-help-text if [ -f "/boot/bin/$BOARD.bin" ] && [ ! -f "/boot/script.bin" ]; then ln -sf bin/$BOARD.bin /boot/script.bin >/dev/null 2>&1 || cp /boot/bin/$BOARD.bin /boot/script.bin; fi if [ ! -f "/etc/default/orangepi-motd" ]; then mv /etc/default/orangepi-motd.dpkg-dist /etc/default/orangepi-motd fi - if [ ! -f "/etc/default/orangepi-ramlog" ]; then + if [ ! -f "/etc/default/orangepi-ramlog" ] && [ -f /etc/default/orangepi-ramlog.dpkg-dist ]; then mv /etc/default/orangepi-ramlog.dpkg-dist /etc/default/orangepi-ramlog fi - if [ ! -f "/etc/default/orangepi-zram-config" ]; then + if [ ! -f "/etc/default/orangepi-zram-config" ] && [ -f /etc/default/orangepi-zram-config.dpkg-dist ]; then mv /etc/default/orangepi-zram-config.dpkg-dist /etc/default/orangepi-zram-config fi @@ -245,6 +244,15 @@ create_board_package() mv /usr/lib/chromium-browser/master_preferences.dpkg-dist /usr/lib/chromium-browser/master_preferences fi + # Read release value + if [ -f /etc/lsb-release ]; then + RELEASE=\$(cat /etc/lsb-release | grep CODENAME | cut -d"=" -f2 | sed 's/.*/\u&/') + sed -i "s/^PRETTY_NAME=.*/PRETTY_NAME=\"${VENDOR} $REVISION "\${RELEASE}"\"/" /etc/os-release + echo "${VENDOR} ${REVISION} \${RELEASE} \\l \n" > /etc/issue + echo "${VENDOR} ${REVISION} \${RELEASE}" > /etc/issue.net + fi + + # Reload services systemctl --no-reload enable orangepi-hardware-monitor.service orangepi-hardware-optimize.service orangepi-zram-config.service >/dev/null 2>&1 exit 0 EOF @@ -257,7 +265,7 @@ create_board_package() #EOF # copy common files from a premade directory structure - rsync -a "${EXTER}"/packages/bsp/common/* "${destination}"/ + rsync -a "${EXTER}"/packages/bsp/common/* ${destination} # trigger uInitrd creation after installation, to apply # /etc/initramfs/post-update.d/99-uboot @@ -265,6 +273,13 @@ create_board_package() activate update-initramfs EOF + # copy distribution support status + local releases=($(find ${EXTER}/config/distributions -mindepth 1 -maxdepth 1 -type d)) + for i in ${releases[@]} + do + echo "$(echo $i | sed 's/.*\///')=$(cat $i/support)" >> "${destination}"/etc/orangepi-distribution-status + done + # armhwinfo, firstrun, orangepimonitor, etc. config file cat <<-EOF > "${destination}"/etc/orangepi-release # PLEASE DO NOT EDIT THIS FILE @@ -274,9 +289,9 @@ create_board_package() BUILD_REPOSITORY_URL=${BUILD_REPOSITORY_URL} BUILD_REPOSITORY_COMMIT=${BUILD_REPOSITORY_COMMIT} DISTRIBUTION_CODENAME=${RELEASE} + DISTRIBUTION_STATUS=${DISTRIBUTION_STATUS} VERSION=${REVISION} LINUXFAMILY=${LINUXFAMILY} - BRANCH=${BRANCH} ARCH=${ARCHITECTURE} IMAGE_TYPE=$IMAGE_TYPE BOARD_TYPE=$BOARD_TYPE @@ -314,6 +329,11 @@ create_board_package() # execute $LINUXFAMILY-specific tweaks [[ $(type -t family_tweaks_bsp) == function ]] && family_tweaks_bsp + call_extension_method "post_family_tweaks_bsp" << 'POST_FAMILY_TWEAKS_BSP' +*family_tweaks_bsp overrrides what is in the config, so give it a chance to override the family tweaks* +This should be implemented by the config to tweak the BSP, after the board or family has had the chance to. +POST_FAMILY_TWEAKS_BSP + # add some summary to the image fingerprint_image "${destination}/etc/orangepi.txt" @@ -322,10 +342,10 @@ create_board_package() find "${destination}" ! -type l -print0 2>/dev/null | xargs -0r chmod 'go=rX,u+rw,a-s' # create board DEB file - display_alert "Building package" "$CHOSEN_ROOTFS" "info" - fakeroot dpkg-deb -b "${destination}" "${destination}.deb" >> "${DEST}"/debug/install.log 2>&1 + fakeroot dpkg-deb -b -Z${DEB_COMPRESS} "${destination}" "${destination}.deb" >> "${DEST}"/${LOG_SUBPATH}/output.log 2>&1 mkdir -p "${DEB_STORAGE}/${RELEASE}/" - mv "${destination}.deb" "${DEB_STORAGE}/${RELEASE}/" + rsync --remove-source-files -rq "${destination}.deb" "${DEB_STORAGE}/${RELEASE}/" + # cleanup - rm -rf "${destination}" + rm -rf ${bsptempdir} }