From dc5fc137225172fa21dcde6c63b3595ed86f6b46 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sun, 28 Feb 2021 11:10:42 +0100 Subject: [PATCH 01/10] Rockchip: convert bootloader scripts to new syntax Done using fixlecode.py --- projects/Rockchip/bootloader/canupdate.sh | 2 +- projects/Rockchip/bootloader/install | 46 +++++++++++------------ projects/Rockchip/bootloader/mkimage | 12 +++--- projects/Rockchip/bootloader/release | 22 +++++------ projects/Rockchip/bootloader/update.sh | 44 +++++++++++----------- 5 files changed, 63 insertions(+), 63 deletions(-) diff --git a/projects/Rockchip/bootloader/canupdate.sh b/projects/Rockchip/bootloader/canupdate.sh index 908179b820..879d392cf1 100644 --- a/projects/Rockchip/bootloader/canupdate.sh +++ b/projects/Rockchip/bootloader/canupdate.sh @@ -11,7 +11,7 @@ case $(uname -r) in esac # Allow upgrades between arm and aarch64 -if [ "$1" = "@PROJECT@.arm" -o "$1" = "@PROJECT@.aarch64" ]; then +if [ "${1}" = "@PROJECT@.arm" -o "${1}" = "@PROJECT@.aarch64" ]; then exit 0 else exit 1 diff --git a/projects/Rockchip/bootloader/install b/projects/Rockchip/bootloader/install index aa50eaf105..e42d89f7e5 100644 --- a/projects/Rockchip/bootloader/install +++ b/projects/Rockchip/bootloader/install @@ -4,31 +4,31 @@ PKG_RKBIN="$(get_build_dir rkbin)" PKG_SOC="${DEVICE/RK/rk}" -case "$PKG_SOC" in +case "${PKG_SOC}" in rk3036) PKG_DATAFILE="spl/u-boot-spl-nodtb.bin" PKG_LOADER="u-boot-dtb.bin" ;; rk3288) - PKG_DATAFILE="$PKG_RKBIN/rk32/rk3288_ddr_400MHz_v1.08.bin" - PKG_LOADER="$PKG_RKBIN/rk32/rk3288_miniloader_v2.58.bin" + PKG_DATAFILE="${PKG_RKBIN}/rk32/rk3288_ddr_400MHz_v1.08.bin" + PKG_LOADER="${PKG_RKBIN}/rk32/rk3288_miniloader_v2.58.bin" PKG_LOAD_ADDR="0x0" ;; rk3328) - if [ "$UBOOT_SYSTEM" = "roc-cc" -o "$UBOOT_SYSTEM" = "box-trn9" ]; then - PKG_DATAFILE="$PKG_RKBIN/rk33/rk3328_ddr_933MHz_v1.16.bin" + if [ "${UBOOT_SYSTEM}" = "roc-cc" -o "${UBOOT_SYSTEM}" = "box-trn9" ]; then + PKG_DATAFILE="${PKG_RKBIN}/rk33/rk3328_ddr_933MHz_v1.16.bin" else - PKG_DATAFILE="$PKG_RKBIN/rk33/rk3328_ddr_786MHz_v1.16.bin" + PKG_DATAFILE="${PKG_RKBIN}/rk33/rk3328_ddr_786MHz_v1.16.bin" fi - PKG_LOADER="$PKG_RKBIN/rk33/rk3328_miniloader_v2.50.bin" - PKG_BL31="$PKG_RKBIN/rk33/rk3328_bl31_v1.42.elf" + PKG_LOADER="${PKG_RKBIN}/rk33/rk3328_miniloader_v2.50.bin" + PKG_BL31="${PKG_RKBIN}/rk33/rk3328_bl31_v1.42.elf" PKG_BL31_ADDR="0x10000" PKG_LOAD_ADDR="0x200000" ;; rk3399) - PKG_DATAFILE="$PKG_RKBIN/rk33/rk3399_ddr_800MHz_v1.17.bin" - PKG_LOADER="$PKG_RKBIN/rk33/rk3399_miniloader_v1.24.bin" - PKG_BL31="$PKG_RKBIN/rk33/rk3399_bl31_v1.31.elf" + PKG_DATAFILE="${PKG_RKBIN}/rk33/rk3399_ddr_800MHz_v1.17.bin" + PKG_LOADER="${PKG_RKBIN}/rk33/rk3399_miniloader_v1.24.bin" + PKG_BL31="${PKG_RKBIN}/rk33/rk3399_bl31_v1.31.elf" PKG_BL31_ADDR="0x40000" PKG_LOAD_ADDR="0x200000" ;; @@ -38,25 +38,25 @@ case "$PKG_SOC" in ;; esac -if [ -n "$PKG_DATAFILE" -a -n "$PKG_LOADER" ]; then - tools/mkimage -n $PKG_SOC -T rksd -d "$PKG_DATAFILE" idbloader.img - cat "$PKG_LOADER" >> idbloader.img - cp -av idbloader.img $INSTALL/usr/share/bootloader +if [ -n "${PKG_DATAFILE}" -a -n "${PKG_LOADER}" ]; then + tools/mkimage -n ${PKG_SOC} -T rksd -d "${PKG_DATAFILE}" idbloader.img + cat "${PKG_LOADER}" >> idbloader.img + cp -av idbloader.img ${INSTALL}/usr/share/bootloader fi -if [ -n "$PKG_LOAD_ADDR" ]; then - $PKG_RKBIN/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img $PKG_LOAD_ADDR - cp -av uboot.img $INSTALL/usr/share/bootloader +if [ -n "${PKG_LOAD_ADDR}" ]; then + ${PKG_RKBIN}/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img ${PKG_LOAD_ADDR} + cp -av uboot.img ${INSTALL}/usr/share/bootloader fi -if [ -n "$PKG_BL31" ]; then +if [ -n "${PKG_BL31}" ]; then cat >trust.ini <"$SAVE_ERROR" 2>&1 || show_error + dd if="${RELEASE_DIR}/3rdparty/bootloader/idbloader.img" of="${DISK}" bs=32k seek=1 conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error fi -if [ -f "$RELEASE_DIR/3rdparty/bootloader/uboot.img" ]; then +if [ -f "${RELEASE_DIR}/3rdparty/bootloader/uboot.img" ]; then echo "image: burn uboot.img to image..." - dd if="$RELEASE_DIR/3rdparty/bootloader/uboot.img" of="$DISK" bs=64k seek=128 conv=fsync,notrunc >"$SAVE_ERROR" 2>&1 || show_error + dd if="${RELEASE_DIR}/3rdparty/bootloader/uboot.img" of="${DISK}" bs=64k seek=128 conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error fi -if [ -f "$RELEASE_DIR/3rdparty/bootloader/trust.img" ]; then +if [ -f "${RELEASE_DIR}/3rdparty/bootloader/trust.img" ]; then echo "image: burn trust.img to image..." - dd if="$RELEASE_DIR/3rdparty/bootloader/trust.img" of="$DISK" bs=64k seek=192 conv=fsync,notrunc >"$SAVE_ERROR" 2>&1 || show_error + dd if="${RELEASE_DIR}/3rdparty/bootloader/trust.img" of="${DISK}" bs=64k seek=192 conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error fi diff --git a/projects/Rockchip/bootloader/release b/projects/Rockchip/bootloader/release index 25a3210c67..d9649bc88f 100644 --- a/projects/Rockchip/bootloader/release +++ b/projects/Rockchip/bootloader/release @@ -1,20 +1,20 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) -SRCDIR="$BUILD/image/system/usr/share/bootloader" -DSTDIR="$RELEASE_DIR/3rdparty/bootloader" +SRCDIR="${BUILD}/image/system/usr/share/bootloader" +DSTDIR="${RELEASE_DIR}/3rdparty/bootloader" -mkdir -p "$DSTDIR" - if [ -n "$UBOOT_SYSTEM" ]; then - if [ -f "$SRCDIR/idbloader.img" ]; then - cp -a "$SRCDIR/idbloader.img" "$DSTDIR" +mkdir -p "${DSTDIR}" + if [ -n "${UBOOT_SYSTEM}" ]; then + if [ -f "${SRCDIR}/idbloader.img" ]; then + cp -a "${SRCDIR}/idbloader.img" "${DSTDIR}" fi - if [ -f "$SRCDIR/uboot.img" ]; then - cp -a "$SRCDIR/uboot.img" "$DSTDIR" + if [ -f "${SRCDIR}/uboot.img" ]; then + cp -a "${SRCDIR}/uboot.img" "${DSTDIR}" fi - if [ -f "$SRCDIR/trust.img" ]; then - cp -a "$SRCDIR/trust.img" "$DSTDIR" + if [ -f "${SRCDIR}/trust.img" ]; then + cp -a "${SRCDIR}/trust.img" "${DSTDIR}" fi fi - cp -a "$SRCDIR"/${DEVICE,,}-*.dtb "$DSTDIR" + cp -a "${SRCDIR}"/${DEVICE,,}-*.dtb "${DSTDIR}" diff --git a/projects/Rockchip/bootloader/update.sh b/projects/Rockchip/bootloader/update.sh index d2a6993dd2..fe5ade8562 100644 --- a/projects/Rockchip/bootloader/update.sh +++ b/projects/Rockchip/bootloader/update.sh @@ -1,50 +1,50 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) -[ -z "$SYSTEM_ROOT" ] && SYSTEM_ROOT="" -[ -z "$BOOT_ROOT" ] && BOOT_ROOT="/flash" -[ -z "$BOOT_PART" ] && BOOT_PART=$(df "$BOOT_ROOT" | tail -1 | awk {' print $1 '}) -if [ -z "$BOOT_DISK" ]; then - case $BOOT_PART in +[ -z "${SYSTEM_ROOT}" ] && SYSTEM_ROOT="" +[ -z "${BOOT_ROOT}" ] && BOOT_ROOT="/flash" +[ -z "${BOOT_PART}" ] && BOOT_PART=$(df "${BOOT_ROOT}" | tail -1 | awk {' print $1 '}) +if [ -z "${BOOT_DISK}" ]; then + case ${BOOT_PART} in /dev/sd[a-z][0-9]*) - BOOT_DISK=$(echo $BOOT_PART | sed -e "s,[0-9]*,,g") + BOOT_DISK=$(echo ${BOOT_PART} | sed -e "s,[0-9]*,,g") ;; /dev/mmcblk*) - BOOT_DISK=$(echo $BOOT_PART | sed -e "s,p[0-9]*,,g") + BOOT_DISK=$(echo ${BOOT_PART} | sed -e "s,p[0-9]*,,g") ;; esac fi -# mount $BOOT_ROOT r/w - mount -o remount,rw $BOOT_ROOT +# mount ${BOOT_ROOT} r/w + mount -o remount,rw ${BOOT_ROOT} # update device tree - for all_dtb in $BOOT_ROOT/*.dtb; do - dtb=$(basename $all_dtb) - if [ -f $SYSTEM_ROOT/usr/share/bootloader/$dtb ]; then - echo -n "Updating $dtb... " - cp -p $SYSTEM_ROOT/usr/share/bootloader/$dtb $BOOT_ROOT + for all_dtb in ${BOOT_ROOT}/*.dtb; do + dtb=$(basename ${all_dtb}) + if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ]; then + echo -n "Updating ${dtb}... " + cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ${BOOT_ROOT} echo "done" fi done # update bootloader - if [ -f $SYSTEM_ROOT/usr/share/bootloader/idbloader.img ]; then + if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/idbloader.img ]; then echo -n "Updating idbloader.img... " - dd if=$SYSTEM_ROOT/usr/share/bootloader/idbloader.img of=$BOOT_DISK bs=32k seek=1 conv=fsync &>/dev/null + dd if=${SYSTEM_ROOT}/usr/share/bootloader/idbloader.img of=${BOOT_DISK} bs=32k seek=1 conv=fsync &>/dev/null echo "done" fi - if [ -f $SYSTEM_ROOT/usr/share/bootloader/uboot.img ]; then + if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/uboot.img ]; then echo -n "Updating uboot.img... " - dd if=$SYSTEM_ROOT/usr/share/bootloader/uboot.img of=$BOOT_DISK bs=64k seek=128 conv=fsync &>/dev/null + dd if=${SYSTEM_ROOT}/usr/share/bootloader/uboot.img of=${BOOT_DISK} bs=64k seek=128 conv=fsync &>/dev/null echo "done" fi - if [ -f $SYSTEM_ROOT/usr/share/bootloader/trust.img ]; then + if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/trust.img ]; then echo -n "Updating trust.img... " - dd if=$SYSTEM_ROOT/usr/share/bootloader/trust.img of=$BOOT_DISK bs=64k seek=192 conv=fsync &>/dev/null + dd if=${SYSTEM_ROOT}/usr/share/bootloader/trust.img of=${BOOT_DISK} bs=64k seek=192 conv=fsync &>/dev/null echo "done" fi -# mount $BOOT_ROOT r/o +# mount ${BOOT_ROOT} r/o sync - mount -o remount,ro $BOOT_ROOT + mount -o remount,ro ${BOOT_ROOT} From a2c61d79065f74a37ef1c041b6235f16bf5cb2d2 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 19:29:03 +0100 Subject: [PATCH 02/10] Rockchip: allow updates for MiQi and Tinker devices MiQi and Tinker devices have been merged to RK3288 device at some point after LE9.2 release. This allows updating for them as well through mapping to the new RK3288 device. While at that also drop the pointless check for kernel versions. --- projects/Rockchip/bootloader/canupdate.sh | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/projects/Rockchip/bootloader/canupdate.sh b/projects/Rockchip/bootloader/canupdate.sh index 879d392cf1..77a2efc4fc 100644 --- a/projects/Rockchip/bootloader/canupdate.sh +++ b/projects/Rockchip/bootloader/canupdate.sh @@ -1,14 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) -# detect legacy kernel installs and abort to prevent upgrades -case $(uname -r) in - 4.4*) - echo "Updates from legacy kernels are not supported!" - sleep 10 - exit 1 - ;; -esac +# devices have been renamed after LE9.2 +if [ "${1}" = "TinkerBoard.arm" -o "${1}" = "MiQi.arm" ]; then + if [ "${2}" = "RK3288.arm" ]; then + exit 0 + fi +fi # Allow upgrades between arm and aarch64 if [ "${1}" = "@PROJECT@.arm" -o "${1}" = "@PROJECT@.aarch64" ]; then From a0b381897bc19461bc544273703db9aa93601135 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 19:33:01 +0100 Subject: [PATCH 03/10] Rockchip: add mapping for mainline device trees This adds a mapping for device trees which differ between vendor and mainline kernel and will therefore allow updates to new releases. The old ones will be replaced by the new, or at least most appropriate (in case of RK3328 box devices), devicetrees in mainline kernel. Besides a warning will be shown now if the device tree that the installation uses does not exist in the update tarball. --- projects/Rockchip/bootloader/update.sh | 43 ++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/projects/Rockchip/bootloader/update.sh b/projects/Rockchip/bootloader/update.sh index fe5ade8562..933366e338 100644 --- a/projects/Rockchip/bootloader/update.sh +++ b/projects/Rockchip/bootloader/update.sh @@ -21,10 +21,38 @@ fi # update device tree for all_dtb in ${BOOT_ROOT}/*.dtb; do dtb=$(basename ${all_dtb}) - if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ]; then - echo -n "Updating ${dtb}... " - cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ${BOOT_ROOT} + + # device tree mappings for update from vendor to mainline kernel + case "${dtb}" in + rk3288-miniarm.dtb) + new_dtb=rk3288-tinker.dtb + ;; + rk3328-box.dtb|rk3328-box-trn9.dtb|rk3328-box-z28.dtb|rk3328-rockbox.dtb) + new_dtb=rk3328-a1.dtb + ;; + rk3399-rock-pi-4.dtb) + new_dtb=rk3399-rock-pi-4a.dtb + ;; + *) + new_dtb="${dtb}" + ;; + esac + + if [ "${dtb}" != "${new_dtb}" -a -f ${SYSTEM_ROOT}/usr/share/bootloader/${new_dtb} ]; then + echo -n "Replacing ${dtb} with ${new_dtb} ... " + cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${new_dtb} ${BOOT_ROOT} && \ + sed -e "s/FDT \/${dtb}/FDT \/${new_dtb}/g" \ + -i ${BOOT_ROOT}/extlinux/extlinux.conf && \ + rm -f ${BOOT_ROOT}/${dtb} echo "done" + else + if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ]; then + echo -n "Updating ${dtb}... " + cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ${BOOT_ROOT} + echo "done" + elif [ "$(grep -c "FDT /${dtb}" ${BOOT_ROOT}/extlinux/extlinux.conf)" -ne 0 ]; then + non_existend_dtb="${dtb}" + fi fi done @@ -48,3 +76,12 @@ fi # mount ${BOOT_ROOT} r/o sync mount -o remount,ro ${BOOT_ROOT} + +# warning if device tree was not updated + if [ -n "${non_existend_dtb}" ]; then + echo "The device tree ${non_existend_dtb} your installation uses does not exist in this update package." + echo "The updated system will continue to use the device tree from the previous system and your installation might be broken." + echo "Please check documentation to find out which boards are supported by this package." + sleep 10 + fi + From 7138427c79af7aae941fb5b786d75eacf5811395 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 19:38:03 +0100 Subject: [PATCH 04/10] Rockchip: RK3288: drop kernel toolchain There is no need to use a specific kernel toolchain for RK3288 - both u-boot and kernel build fine with the LE arm toolchain. --- projects/Rockchip/devices/RK3288/options | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3288/options b/projects/Rockchip/devices/RK3288/options index 64703ad9e3..b05d5e9ac6 100644 --- a/projects/Rockchip/devices/RK3288/options +++ b/projects/Rockchip/devices/RK3288/options @@ -10,7 +10,6 @@ TARGET_CPU="cortex-a17" TARGET_FPU="neon-vfpv4" TARGET_FEATURES="32bit" - KERNEL_TOOLCHAIN="arm-none-linux-gnueabihf" ;; esac From 2979b1f8d21aa1e4403511c095751be17e5f959d Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 19:40:51 +0100 Subject: [PATCH 05/10] gcc-arm-arm-none-linux-gnueabihf: drop package This toolchain was only used as kernel toolchain for RK3288 - its no longer required: drop it. --- .../package.mk | 36 ------------------- 1 file changed, 36 deletions(-) delete mode 100644 packages/lang/gcc-arm-arm-none-linux-gnueabihf/package.mk diff --git a/packages/lang/gcc-arm-arm-none-linux-gnueabihf/package.mk b/packages/lang/gcc-arm-arm-none-linux-gnueabihf/package.mk deleted file mode 100644 index c74467016e..0000000000 --- a/packages/lang/gcc-arm-arm-none-linux-gnueabihf/package.mk +++ /dev/null @@ -1,36 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="gcc-arm-arm-none-linux-gnueabihf" -PKG_VERSION="10.2-2020.11" -PKG_SHA256="102825ae56c9e00142d06f35d2bdd3299edb6060e84a275a25b095e66fd3fc2a" -PKG_LICENSE="GPL" -PKG_SITE="https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a" -PKG_URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/${PKG_VERSION}/binrel/gcc-arm-${PKG_VERSION}-x86_64-arm-none-linux-gnueabihf.tar.xz" -PKG_DEPENDS_HOST="ccache:host" -PKG_LONGDESC="ARM AArch32 GNU Linux Binary Toolchain" -PKG_TOOLCHAIN="manual" - -makeinstall_host() { - mkdir -p ${TOOLCHAIN}/lib/gcc-arm-arm-none-linux-gnueabihf/ - cp -a * ${TOOLCHAIN}/lib/gcc-arm-arm-none-linux-gnueabihf - - # wrap gcc and g++ with ccache like in gcc package.mk - PKG_GCC_PREFIX="${TOOLCHAIN}/lib/gcc-arm-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-" - - cp "${PKG_GCC_PREFIX}gcc" "${PKG_GCC_PREFIX}gcc.real" -cat > "${PKG_GCC_PREFIX}gcc" << EOF -#!/bin/sh -${TOOLCHAIN}/bin/ccache ${PKG_GCC_PREFIX}gcc.real "\$@" -EOF - - chmod +x "${PKG_GCC_PREFIX}gcc" - - cp "${PKG_GCC_PREFIX}g++" "${PKG_GCC_PREFIX}g++.real" -cat > "${PKG_GCC_PREFIX}g++" << EOF -#!/bin/sh -${TOOLCHAIN}/bin/ccache ${PKG_GCC_PREFIX}g++.real "\$@" -EOF - - chmod +x "${PKG_GCC_PREFIX}g++" -} From 50336190c4998cf9f42c49013ad7f114ff51767a Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 19:56:01 +0100 Subject: [PATCH 06/10] Rockchip: reduce number of images In order to reduce the number of images, I trimed to build only the most basic version which allows to boot all revsions and has all capabilities we need. (People can replace dtb from /usr/share/bootloader) I also dropped some boards where I found shortcomings in the device tree which might be easy to solve but I can't test and they were not supported in earlier releases. --- projects/Rockchip/README.md | 8 ++++++-- projects/Rockchip/devices/RK3399/README.md | 7 +------ scripts/uboot_helper | 22 +--------------------- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/projects/Rockchip/README.md b/projects/Rockchip/README.md index 183eb4f695..b2ba7614cb 100644 --- a/projects/Rockchip/README.md +++ b/projects/Rockchip/README.md @@ -9,16 +9,21 @@ This project is for Rockchip SoC devices * [mqmaker MiQi](devices/RK3288) **RK3328** +* [Beelink A1 TV BOX](devices/RK3328) * [PINE64 ROCK64](devices/RK3328) -* [Popcorn Hour RockBox](devices/RK3328) * [Popcorn Hour Transformer](devices/RK3328) * [Firefly ROC-RK3328-CC](devices/RK3328) **RK3399** * [96rocks ROCK960](devices/RK3399) +* [Hugsun X99 TV BOX](devices/RK3399) * [Khadas Edge](devices/RK3399) +* [FriendlyARM NanoPC-T4](devices/RK3399) +* [FriendlyARM NanoPi M4](devices/RK3399) +* [Orange Pi RK3399](devices/RK3399) * [PINE64 RockPro64](devices/RK3399) * [Radxa ROCK Pi 4](devices/RK3399) +* [ROC-RK3399-PC](devices/RK3399) * [Rockchip Sapphire Board](devices/RK3399) **My single-board computer is not listed, will it be added in the future?**
@@ -29,7 +34,6 @@ You may have luck if your device vendor is open source friendly, otherwise keep ## Links -* https://github.com/rockchip-linux * http://opensource.rock-chips.com ## Useful debug commands diff --git a/projects/Rockchip/devices/RK3399/README.md b/projects/Rockchip/devices/RK3399/README.md index 72923919c1..3c767523bf 100644 --- a/projects/Rockchip/devices/RK3399/README.md +++ b/projects/Rockchip/devices/RK3399/README.md @@ -4,18 +4,13 @@ This is a SoC device for RK3399 **Build** -* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=firefly make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=hugsun-x99 make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=khadas-edge make image` -* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=khadas-edge-v make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=nanopc-t4 make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=nanopi-m4 make image` -* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=nanopi-neo4 make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=orangepi make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock960 make image` -* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock-pi-4a make image` -* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock-pi-4b make image` -* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock-pi-4c make image` +* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock-pi-4 make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rockpro64 make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=roc-pc make image` * `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=sapphire make image` diff --git a/scripts/uboot_helper b/scripts/uboot_helper index 15a11803c4..d19fdfa29f 100755 --- a/scripts/uboot_helper +++ b/scripts/uboot_helper @@ -263,10 +263,6 @@ devices = \ }, }, 'RK3399': { - 'firefly': { - 'dtb': 'rk3399-firefly.dtb', - 'config': 'evb-rk3399_defconfig' - }, 'hugsun-x99': { 'dtb': 'rk3399-hugsun-x99.dtb', 'config': 'evb-rk3399_defconfig' @@ -275,10 +271,6 @@ devices = \ 'dtb': 'rk3399-khadas-edge.dtb', 'config': 'evb-rk3399_defconfig' }, - 'khadas-edge-v': { - 'dtb': 'rk3399-khadas-edge-v.dtb', - 'config': 'evb-rk3399_defconfig' - }, 'nanopc-t4': { 'dtb': 'rk3399-nanopc-t4.dtb', 'config': 'evb-rk3399_defconfig' @@ -287,10 +279,6 @@ devices = \ 'dtb': 'rk3399-nanopi-m4.dtb', 'config': 'evb-rk3399_defconfig' }, - 'nanopi-neo4': { - 'dtb': 'rk3399-nanopi-neo4.dtb', - 'config': 'evb-rk3399_defconfig' - }, 'orangepi': { 'dtb': 'rk3399-orangepi.dtb', 'config': 'evb-rk3399_defconfig' @@ -299,18 +287,10 @@ devices = \ 'dtb': 'rk3399-rock960.dtb', 'config': 'evb-rk3399_defconfig' }, - 'rock-pi-4a': { + 'rock-pi-4': { 'dtb': 'rk3399-rock-pi-4a.dtb', 'config': 'evb-rk3399_defconfig' }, - 'rock-pi-4b': { - 'dtb': 'rk3399-rock-pi-4b.dtb', - 'config': 'evb-rk3399_defconfig' - }, - 'rock-pi-4c': { - 'dtb': 'rk3399-rock-pi-4c.dtb', - 'config': 'evb-rk3399_defconfig' - }, 'rockpro64': { 'dtb': 'rk3399-rockpro64.dtb', 'config': 'evb-rk3399_defconfig' From e180ad745f3c4030dd8e1708313a0d6f609a7694 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 20:14:39 +0100 Subject: [PATCH 07/10] Rockchip: RK3288: drop CONFIG_CRYPTO_DEV_ROCKCHIP Using this driver crashes the SoC: drop it. --- projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf b/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf index 7e3e7e0526..4ccfcad51b 100644 --- a/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf +++ b/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf @@ -5780,7 +5780,7 @@ 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_ROCKCHIP=m +# CONFIG_CRYPTO_DEV_ROCKCHIP is not set CONFIG_CRYPTO_DEV_VIRTIO=m # CONFIG_CRYPTO_DEV_SAFEXCEL is not set # CONFIG_CRYPTO_DEV_CCREE is not set From d2e0f4bc6514e206d2f2d24ab3fdd4f603077fa8 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 21:24:37 +0100 Subject: [PATCH 08/10] Rockchip: add fixup patches --- .../default/linux-1003-for-libreelec.patch | 240 ++++++++++++++++++ 1 file changed, 240 insertions(+) diff --git a/projects/Rockchip/patches/linux/default/linux-1003-for-libreelec.patch b/projects/Rockchip/patches/linux/default/linux-1003-for-libreelec.patch index 35a3c0f8a0..c759418b1a 100644 --- a/projects/Rockchip/patches/linux/default/linux-1003-for-libreelec.patch +++ b/projects/Rockchip/patches/linux/default/linux-1003-for-libreelec.patch @@ -450,3 +450,243 @@ index 403d4c6a49a8..7505c3eee4c1 100644 }; struct hdmi_codec_priv { +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alex Bee +Date: Sat, 27 Feb 2021 17:41:48 +0100 +Subject: [PATCH] ARM64: dts: rockchip: fix gpu register width and supplies + for RK3328 + +Signed-off-by: Alex Bee +--- + arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 4 ++++ + arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 4 ++++ + arch/arm64/boot/dts/rockchip/rk3328.dtsi | 2 +- + 3 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +index 3ac876c08d61..8607514437f5 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +@@ -161,6 +161,10 @@ &gmac2io { + status = "okay"; + }; + ++&gpu { ++ mali-supply = <&vdd_logic>; ++}; ++ + &hdmi { + status = "okay"; + }; +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +index 89fde87f7650..bd62349a9390 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +@@ -157,6 +157,10 @@ &gmac2io { + status = "okay"; + }; + ++&gpu { ++ mali-supply = <&vdd_logic>; ++}; ++ + &hdmi { + status = "okay"; + }; +diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi +index 2dc257098002..f86f10f7e64e 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi +@@ -619,7 +619,7 @@ saradc: adc@ff280000 { + + gpu: gpu@ff300000 { + compatible = "rockchip,rk3328-mali", "arm,mali-450"; +- reg = <0x0 0xff300000 0x0 0x40000>; ++ reg = <0x0 0xff300000 0x0 0x30000>; + interrupts = , + , + , +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= +Date: Sun, 30 Dec 2018 13:32:47 +0100 +Subject: [PATCH] ayufan: dts: rockpro64: change rx_delay for gmac + +Change-Id: Ib3899f684188aa1ed1545717af004bba53fe0e07 +--- + arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi +index 58097245994a..0da80295f09f 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi +@@ -248,7 +248,7 @@ &gmac { + snps,reset-active-low; + snps,reset-delays-us = <0 10000 50000>; + tx_delay = <0x28>; +- rx_delay = <0x11>; ++ rx_delay = <0x20>; + status = "okay"; + }; + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aditya Prayoga +Date: Tue, 15 Sep 2020 13:29:45 +0700 +Subject: [PATCH] PCI: rockchip: support ep-gpio undefined case + +Signed-off-by: Aditya Prayoga +--- + drivers/pci/controller/pcie-rockchip.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c +index 904dec0d3a88..13b0d30b130d 100644 +--- a/drivers/pci/controller/pcie-rockchip.c ++++ b/drivers/pci/controller/pcie-rockchip.c +@@ -118,9 +118,9 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) + } + + if (rockchip->is_rc) { +- rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); ++ rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); + if (IS_ERR(rockchip->ep_gpio)) { +- dev_err(dev, "missing ep-gpios property in node\n"); ++ dev_err(dev, "invalid ep-gpios property in node\n"); + return PTR_ERR(rockchip->ep_gpio); + } + } +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alex Bee +Date: Sat, 27 Feb 2021 17:52:02 +0100 +Subject: [PATCH] ARM64: dts: rockchip: add SPDIF nodes for RK3328 A1/ROC CC + +Signed-off-by: Alex Bee +--- + arch/arm64/boot/dts/rockchip/rk3328-a1.dts | 23 +++++++++++++++++++ + .../arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 23 +++++++++++++++++++ + 2 files changed, 46 insertions(+) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-a1.dts b/arch/arm64/boot/dts/rockchip/rk3328-a1.dts +index 4013f16bb368..1bb3f4a6e496 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-a1.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-a1.dts +@@ -52,6 +52,24 @@ ir-receiver { + gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; + linux,rc-map-name = "rc-beelink-gs1"; + }; ++ ++ spdif_sound: spdif-sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "SPDIF"; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&spdif>; ++ }; ++ ++ simple-audio-card,codec { ++ sound-dai = <&spdif_dit>; ++ }; ++ }; ++ ++ spdif_dit: spdif-dit { ++ compatible = "linux,spdif-dit"; ++ #sound-dai-cells = <0>; ++ }; + }; + + &analog_sound { +@@ -319,6 +337,11 @@ &sdmmc { + status = "okay"; + }; + ++&spdif { ++ pinctrl-0 = <&spdifm0_tx>; ++ status = "okay"; ++}; ++ + &tsadc { + rockchip,hw-tshut-mode = <0>; + rockchip,hw-tshut-polarity = <0>; +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +index 8607514437f5..6ca08854aef3 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +@@ -102,6 +102,24 @@ user_led: led-1 { + mode = <0x05>; + }; + }; ++ ++ spdif_sound: spdif-sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "SPDIF"; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&spdif>; ++ }; ++ ++ simple-audio-card,codec { ++ sound-dai = <&spdif_dit>; ++ }; ++ }; ++ ++ spdif_dit: spdif-dit { ++ compatible = "linux,spdif-dit"; ++ #sound-dai-cells = <0>; ++ }; + }; + + &analog_sound { +@@ -337,6 +355,11 @@ &sdmmc { + status = "okay"; + }; + ++&spdif { ++ pinctrl-0 = <&spdifm0_tx>; ++ status = "okay"; ++}; ++ + &tsadc { + status = "okay"; + }; +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alex Bee +Date: Sat, 27 Feb 2021 18:01:13 +0100 +Subject: [PATCH] ARM64: dts: rockchip: Add ir-receiver node for RK3328 ROC CC + +Signed-off-by: Alex Bee +--- + arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +index 6ca08854aef3..fb21ad1324bc 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +@@ -83,6 +83,13 @@ vcc_phy: vcc-phy-regulator { + regulator-boot-on; + }; + ++ ir-receiver { ++ compatible = "gpio-ir-receiver"; ++ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&ir_int>; ++ pinctrl-names = "default"; ++ }; ++ + leds { + compatible = "gpio-leds"; + +@@ -325,6 +332,13 @@ &io_domains { + }; + + &pinctrl { ++ ++ ir { ++ ir_int: ir-int { ++ rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ + pmic { + pmic_int_l: pmic-int-l { + rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; From 2afcb318ebff01dc040df2a24977863bf47d086e Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 23:01:43 +0100 Subject: [PATCH 09/10] Rockchip: allow edid firmware loading Allow drm edid "firmware" loading via kernel commandline for Rockchip --- projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf | 2 +- .../Rockchip/devices/RK3328/linux/default/linux.aarch64.conf | 2 +- .../Rockchip/devices/RK3399/linux/default/linux.aarch64.conf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf b/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf index 4ccfcad51b..a2a4eb1524 100644 --- a/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf +++ b/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf @@ -3235,7 +3235,7 @@ CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 -# CONFIG_DRM_LOAD_EDID_FIRMWARE 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 diff --git a/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf b/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf index 937cd8f7cb..c6c2e73658 100644 --- a/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf @@ -3323,7 +3323,7 @@ CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 -# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_LOAD_EDID_FIRMWARE=y # CONFIG_DRM_DP_CEC is not set CONFIG_DRM_GEM_CMA_HELPER=y CONFIG_DRM_GEM_SHMEM_HELPER=y diff --git a/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf index 54c51b710a..7f48908b15 100644 --- a/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf @@ -3846,7 +3846,7 @@ CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 -# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_LOAD_EDID_FIRMWARE=y # CONFIG_DRM_DP_CEC is not set CONFIG_DRM_GEM_CMA_HELPER=y CONFIG_DRM_GEM_SHMEM_HELPER=y From 04f5f99bddc7905ddec96f652916cc78d34dd45e Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 27 Feb 2021 23:20:01 +0100 Subject: [PATCH 10/10] Rockchip: RK3399: add FUSB302 driver Most RK3399 boards having a FUSB302 Type-C controller: add the driver to support it. --- .../RK3399/linux/default/linux.aarch64.conf | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf index 7f48908b15..b639c30d86 100644 --- a/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf @@ -4755,7 +4755,27 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 # CONFIG_USB_RAW_GADGET is not set # end of USB Gadget precomposed configurations -# CONFIG_TYPEC is not set +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=m +# CONFIG_TYPEC_TCPCI is not set +CONFIG_TYPEC_FUSB302=m +# CONFIG_TYPEC_UCSI is not set +# CONFIG_TYPEC_HD3SS3220 is not set +# CONFIG_TYPEC_TPS6598X is not set +# CONFIG_TYPEC_STUSB160X is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +# CONFIG_TYPEC_MUX_PI3USB30532 is not set +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +# CONFIG_TYPEC_DP_ALTMODE is not set +# end of USB Type-C Alternate Mode drivers + CONFIG_USB_ROLE_SWITCH=y CONFIG_MMC=y CONFIG_PWRSEQ_EMMC=y