mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Merge branch 'develop'
This commit is contained in:
commit
0bd358fa2d
25 changed files with 18649 additions and 117 deletions
15
build.sh
15
build.sh
|
@ -77,6 +77,12 @@ elif [ "$OMR_TARGET" = "espressobin" ]; then
|
||||||
OMR_REAL_TARGET="aarch64_cortex-a53"
|
OMR_REAL_TARGET="aarch64_cortex-a53"
|
||||||
elif [ "$OMR_TARGET" = "x86" ]; then
|
elif [ "$OMR_TARGET" = "x86" ]; then
|
||||||
OMR_REAL_TARGET="i386_pentium4"
|
OMR_REAL_TARGET="i386_pentium4"
|
||||||
|
elif [ "$OMR_TARGET" = "r2s" ]; then
|
||||||
|
OMR_REAL_TARGET="aarch64_generic"
|
||||||
|
elif [ "$OMR_TARGET" = "r4s" ]; then
|
||||||
|
OMR_REAL_TARGET="aarch64_generic"
|
||||||
|
elif [ "$OMR_TARGET" = "ubnt-erx" ]; then
|
||||||
|
OMR_REAL_TARGET="mipsel_24kc"
|
||||||
else
|
else
|
||||||
OMR_REAL_TARGET=${OMR_TARGET}
|
OMR_REAL_TARGET=${OMR_TARGET}
|
||||||
fi
|
fi
|
||||||
|
@ -122,6 +128,8 @@ cat >> "$OMR_TARGET/source/package/base-files/files/etc/banner" <<EOF
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
PACKAGE: $OMR_DIST
|
PACKAGE: $OMR_DIST
|
||||||
VERSION: $(git -C "$OMR_FEED" tag --sort=committerdate | tail -1)
|
VERSION: $(git -C "$OMR_FEED" tag --sort=committerdate | tail -1)
|
||||||
|
TARGET: $OMR_TARGET
|
||||||
|
ARCH: $OMR_REAL_TARGET
|
||||||
|
|
||||||
BUILD REPO: $(git config --get remote.origin.url)
|
BUILD REPO: $(git config --get remote.origin.url)
|
||||||
BUILD DATE: $(date -u)
|
BUILD DATE: $(date -u)
|
||||||
|
@ -349,7 +357,7 @@ fi
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
|
||||||
# Add BBR2 patch, only working on 64bits images for now
|
# Add BBR2 patch, only working on 64bits images for now
|
||||||
if [ "$OMR_TARGET" = "x86_64" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "rpi4" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "r2s" ] || [ "$OMR_TARGET" = "rpi3" ]; then
|
if [ "$OMR_TARGET" = "x86_64" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "rpi4" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "r2s" ] || [ "$OMR_TARGET" = "r4s" ] || [ "$OMR_TARGET" = "rpi3" ]; then
|
||||||
echo "Checking if BBRv2 patch is set or not"
|
echo "Checking if BBRv2 patch is set or not"
|
||||||
if ! patch -Rf -N -p1 -s --dry-run < ../../patches/bbr2.patch; then
|
if ! patch -Rf -N -p1 -s --dry-run < ../../patches/bbr2.patch; then
|
||||||
echo "apply..."
|
echo "apply..."
|
||||||
|
@ -406,6 +414,10 @@ if [ -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch ]
|
||||||
rm -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch
|
rm -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f package/boot/uboot-rockchip/patches/100-rockchip-rk3328-Add-support-for-FriendlyARM-NanoPi-R.patch ]; then
|
||||||
|
rm -f package/boot/uboot-rockchip/patches/100-rockchip-rk3328-Add-support-for-FriendlyARM-NanoPi-R.patch
|
||||||
|
fi
|
||||||
|
|
||||||
#echo "Patch protobuf wrong hash"
|
#echo "Patch protobuf wrong hash"
|
||||||
#patch -N -R -p1 -s < ../../patches/protobuf_hash.patch
|
#patch -N -R -p1 -s < ../../patches/protobuf_hash.patch
|
||||||
#echo "Done"
|
#echo "Done"
|
||||||
|
@ -472,6 +484,7 @@ else
|
||||||
scripts/feeds install -a -d y -f -p openmptcprouter
|
scripts/feeds install -a -d y -f -p openmptcprouter
|
||||||
fi
|
fi
|
||||||
cp .config.keep .config
|
cp .config.keep .config
|
||||||
|
scripts/feeds install kmod-macremapper
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
|
||||||
if [ ! -f "../../$OMR_TARGET_CONFIG" ]; then
|
if [ ! -f "../../$OMR_TARGET_CONFIG" ]; then
|
||||||
|
|
2
config
2
config
|
@ -234,3 +234,5 @@ CONFIG_PACKAGE_rtty-nossl=y
|
||||||
CONFIG_PACKAGE_minicom=y
|
CONFIG_PACKAGE_minicom=y
|
||||||
CONFIG_PACKAGE_irqbalance=y
|
CONFIG_PACKAGE_irqbalance=y
|
||||||
CONFIG_PACKAGE_mtr=y
|
CONFIG_PACKAGE_mtr=y
|
||||||
|
CONFIG_PACKAGE_sysstat=y
|
||||||
|
CONFIG_PACKAGE_coreutils-stty=y
|
|
@ -8,3 +8,10 @@ CONFIG_PACKAGE_uboot-envtools=y
|
||||||
CONFIG_PACKAGE_mt7622-preloader=y
|
CONFIG_PACKAGE_mt7622-preloader=y
|
||||||
CONFIG_KERNEL_ARM64_MODULE_PLTS=y
|
CONFIG_KERNEL_ARM64_MODULE_PLTS=y
|
||||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||||
|
CONFIG_CRYPTO_HW=y
|
||||||
|
CONFIG_ARM64_CRYPTO=y
|
||||||
|
CONFIG_CRYPTO_SHA1_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_SHA2_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_GHASH_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_AES_ARM=y
|
||||||
|
CONFIG_CRYPTO_AES_ARM_CE=y
|
||||||
|
|
|
@ -4,3 +4,10 @@ CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r2s=y
|
||||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||||
|
CONFIG_CRYPTO_HW=y
|
||||||
|
CONFIG_ARM64_CRYPTO=y
|
||||||
|
CONFIG_CRYPTO_SHA1_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_SHA2_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_GHASH_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_AES_ARM=y
|
||||||
|
CONFIG_CRYPTO_AES_ARM_CE=y
|
||||||
|
|
13
config-r4s
Normal file
13
config-r4s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
CONFIG_TARGET_rockchip=y
|
||||||
|
CONFIG_TARGET_rockchip_armv8=y
|
||||||
|
CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r4s=y
|
||||||
|
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||||
|
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||||
|
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||||
|
CONFIG_CRYPTO_HW=y
|
||||||
|
CONFIG_ARM64_CRYPTO=y
|
||||||
|
CONFIG_CRYPTO_SHA1_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_SHA2_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_GHASH_ARM_CE=y
|
||||||
|
CONFIG_CRYPTO_AES_ARM=y
|
||||||
|
CONFIG_CRYPTO_AES_ARM_CE=y
|
|
@ -7,6 +7,8 @@ CONFIG_KERNEL_PAGE_TABLE_ISOLATION=y
|
||||||
CONFIG_PACKAGE_open-vm-tools=m
|
CONFIG_PACKAGE_open-vm-tools=m
|
||||||
CONFIG_PACKAGE_kmod-ath9k=y
|
CONFIG_PACKAGE_kmod-ath9k=y
|
||||||
CONFIG_GRUB_IMAGES=y
|
CONFIG_GRUB_IMAGES=y
|
||||||
|
CONFIG_GRUB_SERIAL="ttyS0"
|
||||||
CONFIG_EFI_IMAGES=y
|
CONFIG_EFI_IMAGES=y
|
||||||
# CONFIG_VMDK_IMAGES is not set
|
# CONFIG_VMDK_IMAGES is not set
|
||||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
||||||
|
CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||||
|
|
106
root/package/boot/uboot-rockchip/Makefile
Normal file
106
root/package/boot/uboot-rockchip/Makefile
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
|
PKG_VERSION:=2021.04
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_HASH:=0d438b1bb5cceb57a18ea2de4a0d51f7be5b05b98717df05938636e0aadfe11a
|
||||||
|
|
||||||
|
PKG_MAINTAINER:=Tobias Maedel <openwrt@tbspace.de>
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/u-boot.mk
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define U-Boot/Default
|
||||||
|
BUILD_TARGET:=rockchip
|
||||||
|
UENV:=default
|
||||||
|
HIDDEN:=1
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
# RK3328 boards
|
||||||
|
|
||||||
|
define U-Boot/nanopi-r2s-rk3328
|
||||||
|
BUILD_SUBTARGET:=armv8
|
||||||
|
NAME:=NanoPi R2S
|
||||||
|
BUILD_DEVICES:= \
|
||||||
|
friendlyarm_nanopi-r2s
|
||||||
|
DEPENDS:=+PACKAGE_u-boot-nanopi-r2s-rk3328:arm-trusted-firmware-rockchip
|
||||||
|
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip
|
||||||
|
ATF:=rk3328_bl31.elf
|
||||||
|
OF_PLATDATA:=$(1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
# RK3399 boards
|
||||||
|
|
||||||
|
define U-Boot/nanopi-r4s-rk3399
|
||||||
|
BUILD_SUBTARGET:=armv8
|
||||||
|
NAME:=NanoPi R4S
|
||||||
|
BUILD_DEVICES:= \
|
||||||
|
friendlyarm_nanopi-r4s
|
||||||
|
DEPENDS:=+PACKAGE_u-boot-nanopi-r4s-rk3399:arm-trusted-firmware-rockchip
|
||||||
|
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip
|
||||||
|
ATF:=rk3399_bl31.elf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define U-Boot/rock-pi-4-rk3399
|
||||||
|
BUILD_SUBTARGET:=armv8
|
||||||
|
NAME:=Rock Pi 4
|
||||||
|
BUILD_DEVICES:= \
|
||||||
|
radxa_rock-pi-4
|
||||||
|
DEPENDS:=+PACKAGE_u-boot-rock-pi-4-rk3399:arm-trusted-firmware-rockchip
|
||||||
|
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip
|
||||||
|
ATF:=rk3399_bl31.elf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define U-Boot/rockpro64-rk3399
|
||||||
|
BUILD_SUBTARGET:=armv8
|
||||||
|
NAME:=RockPro64
|
||||||
|
BUILD_DEVICES:= \
|
||||||
|
pine64_rockpro64
|
||||||
|
DEPENDS:=+PACKAGE_u-boot-rockpro64-rk3399:arm-trusted-firmware-rockchip
|
||||||
|
PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip
|
||||||
|
ATF:=rk3399_bl31.elf
|
||||||
|
endef
|
||||||
|
|
||||||
|
UBOOT_TARGETS := \
|
||||||
|
nanopi-r4s-rk3399 \
|
||||||
|
rock-pi-4-rk3399 \
|
||||||
|
rockpro64-rk3399 \
|
||||||
|
nanopi-r2s-rk3328
|
||||||
|
|
||||||
|
UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
|
||||||
|
|
||||||
|
UBOOT_MAKE_FLAGS += \
|
||||||
|
BL31=$(STAGING_DIR_IMAGE)/$(ATF)
|
||||||
|
|
||||||
|
define Build/Configure
|
||||||
|
$(call Build/Configure/U-Boot)
|
||||||
|
|
||||||
|
ifneq ($(OF_PLATDATA),)
|
||||||
|
mkdir -p $(PKG_BUILD_DIR)/tpl/dts
|
||||||
|
mkdir -p $(PKG_BUILD_DIR)/include/generated
|
||||||
|
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/of-platdata/$(OF_PLATDATA)/dt-plat.c $(PKG_BUILD_DIR)/tpl/dts/dt-plat.c
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/of-platdata/$(OF_PLATDATA)/dt-structs-gen.h $(PKG_BUILD_DIR)/include/generated/dt-structs-gen.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(SED) 's#CONFIG_MKIMAGE_DTC_PATH=.*#CONFIG_MKIMAGE_DTC_PATH="$(PKG_BUILD_DIR)/scripts/dtc/dtc"#g' $(PKG_BUILD_DIR)/.config
|
||||||
|
echo 'CONFIG_IDENT_STRING=" OpenWrt"' >> $(PKG_BUILD_DIR)/.config
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/idbloader.img $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-idbloader.img
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/u-boot.itb $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-u-boot.itb
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/u-boot/install/default
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage/U-Boot))
|
|
@ -0,0 +1,30 @@
|
||||||
|
From 55273cf6079ddd3b006da69f0113c2c66c03f17e Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Bauer <mail@david-bauer.net>
|
||||||
|
Date: Tue, 14 Jul 2020 22:44:22 +0200
|
||||||
|
Subject: [PATCH] spl: remove dtoc of-pdata generation
|
||||||
|
|
||||||
|
Remove the dtoc of-pdata generation. This generation is dependant on
|
||||||
|
libpython-dev. As OpenWrt does not ship with this dependency, use
|
||||||
|
pre-generated pdata files and remove the generation from the
|
||||||
|
build-process.
|
||||||
|
|
||||||
|
This only affects RK3328 boards.
|
||||||
|
|
||||||
|
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||||
|
---
|
||||||
|
scripts/Makefile.spl | 6 ------
|
||||||
|
1 file changed, 6 deletions(-)
|
||||||
|
|
||||||
|
--- a/scripts/Makefile.spl
|
||||||
|
+++ b/scripts/Makefile.spl
|
||||||
|
@@ -329,10 +329,6 @@ PHONY += dts_dir
|
||||||
|
dts_dir:
|
||||||
|
$(shell [ -d $(obj)/dts ] || mkdir -p $(obj)/dts)
|
||||||
|
|
||||||
|
-include/generated/dt-structs-gen.h $(u-boot-spl-platdata_c) &: \
|
||||||
|
- $(obj)/$(SPL_BIN).dtb dts_dir FORCE
|
||||||
|
- $(call if_changed,dtoc)
|
||||||
|
-
|
||||||
|
ifdef CONFIG_SAMSUNG
|
||||||
|
ifdef CONFIG_VAR_SIZE_SPL
|
||||||
|
VAR_SIZE_PARAM = --vs
|
|
@ -0,0 +1,290 @@
|
||||||
|
From b69b9f3f54732c303939eb748aad97cd4cf60168 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Xiaobo Tian <peterwillcn@gmail.com>
|
||||||
|
Date: Sat, 27 Feb 2021 22:39:11 +0800
|
||||||
|
Subject: [PATCH] arm64: rk3399: Add support NanoPi R4s
|
||||||
|
|
||||||
|
NanoPi R4s is SBC base on Rockchip RK3399 hexa-core processor with
|
||||||
|
dual-Core Cortex-A72 and Mali-T864 GPU with 4GiB(LPDDR4) of RAM, SD card support,
|
||||||
|
including 2 gigabit ethernet(RTL8211E 1Gbps - RTL8111H 1Gbps) and 2 USB 3.0 port.
|
||||||
|
port.It also has two GPIO headers which allows further peripherals to be used.
|
||||||
|
|
||||||
|
The devicetree file is taken of the rk3399 nanopi4 Linux kernel [1].
|
||||||
|
|
||||||
|
[1] https://github.com/torvalds/linux/commit/e7a095908227fb3ccc86d001d9e13c9ae2bef8e6
|
||||||
|
|
||||||
|
Signed-off-by: xiaobo <peterwillcn@gmail.com>
|
||||||
|
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
|
||||||
|
---
|
||||||
|
arch/arm/dts/Makefile | 1 +
|
||||||
|
arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi | 16 +++
|
||||||
|
arch/arm/dts/rk3399-nanopi-r4s.dts | 138 +++++++++++++++++++++
|
||||||
|
board/rockchip/evb_rk3399/MAINTAINERS | 6 +
|
||||||
|
configs/nanopi-r4s-rk3399_defconfig | 62 +++++++++
|
||||||
|
5 files changed, 223 insertions(+)
|
||||||
|
create mode 100644 arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
|
||||||
|
create mode 100644 arch/arm/dts/rk3399-nanopi-r4s.dts
|
||||||
|
create mode 100644 configs/nanopi-r4s-rk3399_defconfig
|
||||||
|
|
||||||
|
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||||
|
index dd4d4efed31..0a139473811 100644
|
||||||
|
--- a/arch/arm/dts/Makefile
|
||||||
|
+++ b/arch/arm/dts/Makefile
|
||||||
|
@@ -132,6 +132,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
|
||||||
|
rk3399-nanopi-m4.dtb \
|
||||||
|
rk3399-nanopi-m4-2gb.dtb \
|
||||||
|
rk3399-nanopi-neo4.dtb \
|
||||||
|
+ rk3399-nanopi-r4s.dtb \
|
||||||
|
rk3399-orangepi.dtb \
|
||||||
|
rk3399-pinebook-pro.dtb \
|
||||||
|
rk3399-puma-haikou.dtb \
|
||||||
|
diff --git a/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi b/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..cd1642527ba
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
+/*
|
||||||
|
+ * RK3399-based FriendlyElec boards device tree source
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd.
|
||||||
|
+ * (http://www.friendlyarm.com)
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2018 Collabora Ltd.
|
||||||
|
+ * Copyright (c) 2019 Arm Ltd.
|
||||||
|
+ * Copyright (C) 2020 Xiaobo <peterwillcn@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "rk3399-nanopi4-u-boot.dtsi"
|
||||||
|
+#include "rk3399-sdram-lpddr4-100.dtsi"
|
||||||
|
diff --git a/arch/arm/dts/rk3399-nanopi-r4s.dts b/arch/arm/dts/rk3399-nanopi-r4s.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..6f2cf17bf1b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/dts/rk3399-nanopi-r4s.dts
|
||||||
|
@@ -0,0 +1,138 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd.
|
||||||
|
+ * (http://www.friendlyarm.com)
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2018 Collabora Ltd.
|
||||||
|
+ * Copyright (c) 2019 Arm Ltd.
|
||||||
|
+ * Copyright (C) 2020 Xiaobo <peterwillcn@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "rk3399-nanopi4.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyElec NanoPi R4S";
|
||||||
|
+ compatible = "friendlyarm,nanopi-r4s", "rockchip,rk3399";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet1 = &r8169;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_5v: vdd-5v {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vdd_5v";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fan: pwm-fan {
|
||||||
|
+ compatible = "pwm-fan";
|
||||||
|
+ cooling-levels = <0 12 18 255>;
|
||||||
|
+ #cooling-cells = <2>;
|
||||||
|
+ fan-supply = <&vdd_5v>;
|
||||||
|
+ pwms = <&pwm1 0 50000 0>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_thermal {
|
||||||
|
+ trips {
|
||||||
|
+ cpu_warm: cpu_warm {
|
||||||
|
+ temperature = <55000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "active";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot: cpu_hot {
|
||||||
|
+ temperature = <65000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "active";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cooling-maps {
|
||||||
|
+ map2 {
|
||||||
|
+ trip = <&cpu_warm>;
|
||||||
|
+ cooling-device = <&fan THERMAL_NO_LIMIT 1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ map3 {
|
||||||
|
+ trip = <&cpu_hot>;
|
||||||
|
+ cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emmc_phy {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&fusb0 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&leds {
|
||||||
|
+ lan_led: led-1 {
|
||||||
|
+ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "nanopi-r4s:green:lan";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wan_led: led-2 {
|
||||||
|
+ gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "nanopi-r4s:green:wan";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&leds_gpio {
|
||||||
|
+ rockchip,pins =
|
||||||
|
+ <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>,
|
||||||
|
+ <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>,
|
||||||
|
+ <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pcie0 {
|
||||||
|
+ max-link-speed = <1>;
|
||||||
|
+ num-lanes = <1>;
|
||||||
|
+ vpcie3v3-supply = <&vcc3v3_sys>;
|
||||||
|
+
|
||||||
|
+ pcie@0 {
|
||||||
|
+ reg = <0x00000000 0 0 0 0>;
|
||||||
|
+ #address-cells = <3>;
|
||||||
|
+ #size-cells = <2>;
|
||||||
|
+
|
||||||
|
+ r8169: pcie@0,0 {
|
||||||
|
+ reg = <0x000000 0 0 0 0>;
|
||||||
|
+ local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdhci {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdio0 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdmmc {
|
||||||
|
+ host-index-min = <1>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&u2phy0_host {
|
||||||
|
+ phy-supply = <&vdd_5v>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&u2phy1_host {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbdrd_dwc3_0 {
|
||||||
|
+ dr_mode = "host";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vcc3v3_sys {
|
||||||
|
+ vin-supply = <&vcc5v0_sys>;
|
||||||
|
+};
|
||||||
|
diff --git a/board/rockchip/evb_rk3399/MAINTAINERS b/board/rockchip/evb_rk3399/MAINTAINERS
|
||||||
|
index 4c889e06a63..3b9d60eccd4 100644
|
||||||
|
--- a/board/rockchip/evb_rk3399/MAINTAINERS
|
||||||
|
+++ b/board/rockchip/evb_rk3399/MAINTAINERS
|
||||||
|
@@ -55,6 +55,12 @@ S: Maintained
|
||||||
|
F: configs/nanopi-neo4-rk3399_defconfig
|
||||||
|
F: arch/arm/dts/rk3399-nanopi-neo4-u-boot.dtsi
|
||||||
|
|
||||||
|
+NANOPI-R4S
|
||||||
|
+M: Xiaobo Tian <peterwillcn@gmail.com>
|
||||||
|
+S: Maintained
|
||||||
|
+F: configs/nanopi-r4s-rk3399_defconfig
|
||||||
|
+F: arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi
|
||||||
|
+
|
||||||
|
ORANGEPI-RK3399
|
||||||
|
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
S: Maintained
|
||||||
|
diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..0a3c28b0126
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/configs/nanopi-r4s-rk3399_defconfig
|
||||||
|
@@ -0,0 +1,62 @@
|
||||||
|
+CONFIG_ARM=y
|
||||||
|
+CONFIG_ARCH_ROCKCHIP=y
|
||||||
|
+CONFIG_SYS_TEXT_BASE=0x00200000
|
||||||
|
+CONFIG_ENV_OFFSET=0x3F8000
|
||||||
|
+CONFIG_ROCKCHIP_RK3399=y
|
||||||
|
+CONFIG_TARGET_EVB_RK3399=y
|
||||||
|
+CONFIG_NR_DRAM_BANKS=1
|
||||||
|
+CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
+CONFIG_DEBUG_UART_CLOCK=24000000
|
||||||
|
+CONFIG_DEBUG_UART=y
|
||||||
|
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopi-r4s.dtb"
|
||||||
|
+CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
|
||||||
|
+CONFIG_SPL_STACK_R=y
|
||||||
|
+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
+CONFIG_TPL=y
|
||||||
|
+CONFIG_CMD_BOOTZ=y
|
||||||
|
+CONFIG_CMD_GPT=y
|
||||||
|
+CONFIG_CMD_MMC=y
|
||||||
|
+CONFIG_CMD_USB=y
|
||||||
|
+# CONFIG_CMD_SETEXPR is not set
|
||||||
|
+CONFIG_CMD_TIME=y
|
||||||
|
+CONFIG_SPL_OF_CONTROL=y
|
||||||
|
+CONFIG_DEFAULT_DEVICE_TREE="rk3399-nanopi-r4s"
|
||||||
|
+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||||
|
+CONFIG_ENV_IS_IN_MMC=y
|
||||||
|
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||||
|
+CONFIG_ROCKCHIP_GPIO=y
|
||||||
|
+CONFIG_SYS_I2C_ROCKCHIP=y
|
||||||
|
+CONFIG_MMC_DW=y
|
||||||
|
+CONFIG_MMC_DW_ROCKCHIP=y
|
||||||
|
+CONFIG_MMC_SDHCI=y
|
||||||
|
+CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
|
+CONFIG_DM_ETH=y
|
||||||
|
+CONFIG_ETH_DESIGNWARE=y
|
||||||
|
+CONFIG_GMAC_ROCKCHIP=y
|
||||||
|
+CONFIG_PMIC_RK8XX=y
|
||||||
|
+CONFIG_REGULATOR_PWM=y
|
||||||
|
+CONFIG_REGULATOR_RK8XX=y
|
||||||
|
+CONFIG_PWM_ROCKCHIP=y
|
||||||
|
+CONFIG_RAM_RK3399_LPDDR4=y
|
||||||
|
+CONFIG_BAUDRATE=1500000
|
||||||
|
+CONFIG_DEBUG_UART_SHIFT=2
|
||||||
|
+CONFIG_SYSRESET=y
|
||||||
|
+CONFIG_USB=y
|
||||||
|
+CONFIG_USB_XHCI_HCD=y
|
||||||
|
+CONFIG_USB_XHCI_DWC3=y
|
||||||
|
+CONFIG_USB_EHCI_HCD=y
|
||||||
|
+CONFIG_USB_EHCI_GENERIC=y
|
||||||
|
+CONFIG_USB_KEYBOARD=y
|
||||||
|
+CONFIG_USB_HOST_ETHER=y
|
||||||
|
+CONFIG_USB_ETHER_ASIX=y
|
||||||
|
+CONFIG_USB_ETHER_ASIX88179=y
|
||||||
|
+CONFIG_USB_ETHER_MCS7830=y
|
||||||
|
+CONFIG_USB_ETHER_RTL8152=y
|
||||||
|
+CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
|
+CONFIG_DM_VIDEO=y
|
||||||
|
+CONFIG_DISPLAY=y
|
||||||
|
+CONFIG_VIDEO_ROCKCHIP=y
|
||||||
|
+CONFIG_DISPLAY_ROCKCHIP_HDMI=y
|
||||||
|
+CONFIG_SPL_TINY_MEMSET=y
|
||||||
|
+CONFIG_ERRNO_STR=y
|
|
@ -0,0 +1,127 @@
|
||||||
|
/*
|
||||||
|
* DO NOT MODIFY
|
||||||
|
*
|
||||||
|
* Declares the U_BOOT_DRIVER() records and platform data.
|
||||||
|
* This was generated by dtoc from a .dtb (device tree binary) file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Allow use of U_BOOT_DRVINFO() in this file */
|
||||||
|
#define DT_PLAT_C
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
#include <dm.h>
|
||||||
|
#include <dt-structs.h>
|
||||||
|
|
||||||
|
/* Node /clock-controller@ff440000 index 0 */
|
||||||
|
static struct dtd_rockchip_rk3328_cru dtv_clock_controller_at_ff440000 = {
|
||||||
|
.reg = {0xff440000, 0x1000},
|
||||||
|
.rockchip_grf = 0x3a,
|
||||||
|
};
|
||||||
|
U_BOOT_DRVINFO(clock_controller_at_ff440000) = {
|
||||||
|
.name = "rockchip_rk3328_cru",
|
||||||
|
.plat = &dtv_clock_controller_at_ff440000,
|
||||||
|
.plat_size = sizeof(dtv_clock_controller_at_ff440000),
|
||||||
|
.parent_idx = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Node /dmc index 1 */
|
||||||
|
static struct dtd_rockchip_rk3328_dmc dtv_dmc = {
|
||||||
|
.reg = {0xff400000, 0x1000, 0xff780000, 0x3000, 0xff100000, 0x1000, 0xff440000, 0x1000,
|
||||||
|
0xff720000, 0x1000, 0xff798000, 0x1000},
|
||||||
|
.rockchip_sdram_params = {0x1, 0xa, 0x2, 0x1, 0x0, 0x0, 0x11, 0x0,
|
||||||
|
0x11, 0x0, 0x0, 0x94291288, 0x0, 0x27, 0x462, 0x15,
|
||||||
|
0x242, 0xff, 0x14d, 0x0, 0x1, 0x0, 0x0, 0x0,
|
||||||
|
0x43049010, 0x64, 0x28003b, 0xd0, 0x20053, 0xd4, 0x220000, 0xd8,
|
||||||
|
0x100, 0xdc, 0x40000, 0xe0, 0x0, 0xe4, 0x110000, 0xe8,
|
||||||
|
0x420, 0xec, 0x400, 0xf4, 0xf011f, 0x100, 0x9060b06, 0x104,
|
||||||
|
0x20209, 0x108, 0x505040a, 0x10c, 0x40400c, 0x110, 0x5030206, 0x114,
|
||||||
|
0x3030202, 0x120, 0x3030b03, 0x124, 0x20208, 0x180, 0x1000040, 0x184,
|
||||||
|
0x0, 0x190, 0x7030003, 0x198, 0x5001100, 0x1a0, 0xc0400003, 0x240,
|
||||||
|
0x6000604, 0x244, 0x201, 0x250, 0xf00, 0x490, 0x1, 0xffffffff,
|
||||||
|
0xffffffff, 0xffffffff, 0xffffffff, 0x4, 0xc, 0x28, 0xa, 0x2c,
|
||||||
|
0x0, 0x30, 0x9, 0xffffffff, 0xffffffff, 0x77, 0x88, 0x79,
|
||||||
|
0x79, 0x87, 0x97, 0x87, 0x78, 0x77, 0x78, 0x87,
|
||||||
|
0x88, 0x87, 0x87, 0x77, 0x78, 0x78, 0x78, 0x78,
|
||||||
|
0x78, 0x78, 0x78, 0x78, 0x78, 0x69, 0x9, 0x77,
|
||||||
|
0x78, 0x77, 0x78, 0x77, 0x78, 0x77, 0x78, 0x77,
|
||||||
|
0x79, 0x9, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
|
||||||
|
0x78, 0x78, 0x78, 0x69, 0x9, 0x77, 0x78, 0x77,
|
||||||
|
0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0x9,
|
||||||
|
0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
|
||||||
|
0x78, 0x69, 0x9, 0x77, 0x78, 0x77, 0x78, 0x77,
|
||||||
|
0x78, 0x77, 0x78, 0x77, 0x79, 0x9, 0x78, 0x78,
|
||||||
|
0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x69,
|
||||||
|
0x9, 0x77, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77,
|
||||||
|
0x77, 0x77, 0x79, 0x9},
|
||||||
|
};
|
||||||
|
U_BOOT_DRVINFO(dmc) = {
|
||||||
|
.name = "rockchip_rk3328_dmc",
|
||||||
|
.plat = &dtv_dmc,
|
||||||
|
.plat_size = sizeof(dtv_dmc),
|
||||||
|
.parent_idx = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Node /mmc@ff500000 index 2 */
|
||||||
|
static struct dtd_rockchip_rk3288_dw_mshc dtv_mmc_at_ff500000 = {
|
||||||
|
.bus_width = 0x4,
|
||||||
|
.cap_sd_highspeed = true,
|
||||||
|
.clocks = {
|
||||||
|
{0, {317}},
|
||||||
|
{0, {33}},
|
||||||
|
{0, {74}},
|
||||||
|
{0, {78}},},
|
||||||
|
.disable_wp = true,
|
||||||
|
.fifo_depth = 0x100,
|
||||||
|
.interrupts = {0x0, 0xc, 0x4},
|
||||||
|
.max_frequency = 0x8f0d180,
|
||||||
|
.pinctrl_0 = {0x47, 0x48, 0x49, 0x4a},
|
||||||
|
.pinctrl_names = "default",
|
||||||
|
.reg = {0xff500000, 0x4000},
|
||||||
|
.sd_uhs_sdr104 = true,
|
||||||
|
.sd_uhs_sdr12 = true,
|
||||||
|
.sd_uhs_sdr25 = true,
|
||||||
|
.sd_uhs_sdr50 = true,
|
||||||
|
.u_boot_spl_fifo_mode = true,
|
||||||
|
.vmmc_supply = 0x4b,
|
||||||
|
.vqmmc_supply = 0x1e,
|
||||||
|
};
|
||||||
|
U_BOOT_DRVINFO(mmc_at_ff500000) = {
|
||||||
|
.name = "rockchip_rk3288_dw_mshc",
|
||||||
|
.plat = &dtv_mmc_at_ff500000,
|
||||||
|
.plat_size = sizeof(dtv_mmc_at_ff500000),
|
||||||
|
.parent_idx = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Node /serial@ff130000 index 3 */
|
||||||
|
static struct dtd_ns16550_serial dtv_serial_at_ff130000 = {
|
||||||
|
.clock_frequency = 0x16e3600,
|
||||||
|
.clocks = {
|
||||||
|
{0, {40}},
|
||||||
|
{0, {212}},},
|
||||||
|
.dma_names = {"tx", "rx"},
|
||||||
|
.dmas = {0x10, 0x6, 0x10, 0x7},
|
||||||
|
.interrupts = {0x0, 0x39, 0x4},
|
||||||
|
.pinctrl_0 = 0x26,
|
||||||
|
.pinctrl_names = "default",
|
||||||
|
.reg = {0xff130000, 0x100},
|
||||||
|
.reg_io_width = 0x4,
|
||||||
|
.reg_shift = 0x2,
|
||||||
|
};
|
||||||
|
U_BOOT_DRVINFO(serial_at_ff130000) = {
|
||||||
|
.name = "ns16550_serial",
|
||||||
|
.plat = &dtv_serial_at_ff130000,
|
||||||
|
.plat_size = sizeof(dtv_serial_at_ff130000),
|
||||||
|
.parent_idx = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Node /syscon@ff100000 index 4 */
|
||||||
|
static struct dtd_rockchip_rk3328_grf dtv_syscon_at_ff100000 = {
|
||||||
|
.reg = {0xff100000, 0x1000},
|
||||||
|
};
|
||||||
|
U_BOOT_DRVINFO(syscon_at_ff100000) = {
|
||||||
|
.name = "rockchip_rk3328_grf",
|
||||||
|
.plat = &dtv_syscon_at_ff100000,
|
||||||
|
.plat_size = sizeof(dtv_syscon_at_ff100000),
|
||||||
|
.parent_idx = -1,
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*
|
||||||
|
* DO NOT MODIFY
|
||||||
|
*
|
||||||
|
* Defines the structs used to hold devicetree data.
|
||||||
|
* This was generated by dtoc from a .dtb (device tree binary) file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <linux/libfdt.h>
|
||||||
|
struct dtd_ns16550_serial {
|
||||||
|
fdt32_t clock_frequency;
|
||||||
|
struct phandle_1_arg clocks[2];
|
||||||
|
const char * dma_names[2];
|
||||||
|
fdt32_t dmas[4];
|
||||||
|
fdt32_t interrupts[3];
|
||||||
|
fdt32_t pinctrl_0;
|
||||||
|
const char * pinctrl_names;
|
||||||
|
fdt64_t reg[2];
|
||||||
|
fdt32_t reg_io_width;
|
||||||
|
fdt32_t reg_shift;
|
||||||
|
};
|
||||||
|
struct dtd_rockchip_rk3288_dw_mshc {
|
||||||
|
fdt32_t bus_width;
|
||||||
|
bool cap_sd_highspeed;
|
||||||
|
struct phandle_1_arg clocks[4];
|
||||||
|
bool disable_wp;
|
||||||
|
fdt32_t fifo_depth;
|
||||||
|
fdt32_t interrupts[3];
|
||||||
|
fdt32_t max_frequency;
|
||||||
|
fdt32_t pinctrl_0[4];
|
||||||
|
const char * pinctrl_names;
|
||||||
|
fdt64_t reg[2];
|
||||||
|
bool sd_uhs_sdr104;
|
||||||
|
bool sd_uhs_sdr12;
|
||||||
|
bool sd_uhs_sdr25;
|
||||||
|
bool sd_uhs_sdr50;
|
||||||
|
bool u_boot_spl_fifo_mode;
|
||||||
|
fdt32_t vmmc_supply;
|
||||||
|
fdt32_t vqmmc_supply;
|
||||||
|
};
|
||||||
|
struct dtd_rockchip_rk3328_cru {
|
||||||
|
fdt64_t reg[2];
|
||||||
|
fdt32_t rockchip_grf;
|
||||||
|
};
|
||||||
|
struct dtd_rockchip_rk3328_dmc {
|
||||||
|
fdt64_t reg[12];
|
||||||
|
fdt32_t rockchip_sdram_params[196];
|
||||||
|
};
|
||||||
|
struct dtd_rockchip_rk3328_grf {
|
||||||
|
fdt64_t reg[2];
|
||||||
|
};
|
|
@ -11843,7 +11843,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc
|
||||||
+#endif
|
+#endif
|
||||||
+ }
|
+ }
|
||||||
+drop:
|
+drop:
|
||||||
+ __NET_INC_STATS(sock_net(sk), LINUX_MIB_LISTENDROPS);
|
+ NET_INC_STATS(sock_net(sk), LINUX_MIB_LISTENDROPS);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
@ -14734,7 +14734,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt
|
||||||
+ meta_tp->rcv_nxt))) {
|
+ meta_tp->rcv_nxt))) {
|
||||||
+ mptcp_send_active_reset(meta_sk, GFP_ATOMIC);
|
+ mptcp_send_active_reset(meta_sk, GFP_ATOMIC);
|
||||||
+ tcp_done(meta_sk);
|
+ tcp_done(meta_sk);
|
||||||
+ __NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPABORTONDATA);
|
+ NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPABORTONDATA);
|
||||||
+ return -1;
|
+ return -1;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -14775,7 +14775,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt
|
||||||
+ if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
|
+ if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
|
||||||
+ after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt) &&
|
+ after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt) &&
|
||||||
+ !mptcp_is_data_fin2(skb, tp)) {
|
+ !mptcp_is_data_fin2(skb, tp)) {
|
||||||
+ __NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPABORTONDATA);
|
+ NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPABORTONDATA);
|
||||||
+ mptcp_send_active_reset(meta_sk, GFP_ATOMIC);
|
+ mptcp_send_active_reset(meta_sk, GFP_ATOMIC);
|
||||||
+ tcp_reset(meta_sk);
|
+ tcp_reset(meta_sk);
|
||||||
+ return -1;
|
+ return -1;
|
||||||
|
@ -21440,7 +21440,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+
|
+
|
||||||
+failed:
|
+failed:
|
||||||
+ __NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPRETRANSFAIL);
|
+ NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPRETRANSFAIL);
|
||||||
+ return err;
|
+ return err;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
@ -21499,7 +21499,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
+ if (meta_icsk->icsk_retransmits == 0)
|
+ if (meta_icsk->icsk_retransmits == 0)
|
||||||
+ __NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPTIMEOUTS);
|
+ NET_INC_STATS(sock_net(meta_sk), LINUX_MIB_TCPTIMEOUTS);
|
||||||
+
|
+
|
||||||
+ meta_icsk->icsk_ca_state = TCP_CA_Loss;
|
+ meta_icsk->icsk_ca_state = TCP_CA_Loss;
|
||||||
+
|
+
|
||||||
|
@ -23987,3 +23987,212 @@ index fc71d41c608d..bdea1a26e3fc 100644
|
||||||
|
|
||||||
return new_win;
|
return new_win;
|
||||||
}
|
}
|
||||||
|
diff --git a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c
|
||||||
|
index 4b878d14492a..6cb8c5c7d098 100644
|
||||||
|
--- a/net/mptcp/mptcp_sched.c
|
||||||
|
+++ b/net/mptcp/mptcp_sched.c
|
||||||
|
@@ -388,25 +388,32 @@ static struct sk_buff *__mptcp_next_segment(struct sock *meta_sk, int *reinject)
|
||||||
|
} else {
|
||||||
|
skb = tcp_send_head(meta_sk);
|
||||||
|
|
||||||
|
- if (!skb && meta_sk->sk_socket &&
|
||||||
|
- test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
||||||
|
- sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
||||||
|
+ if (!skb) {
|
||||||
|
struct sock *subsk;
|
||||||
|
|
||||||
|
- /* meta is send buffer limited */
|
||||||
|
- tcp_chrono_start(meta_sk, TCP_CHRONO_SNDBUF_LIMITED);
|
||||||
|
-
|
||||||
|
subsk = mpcb->sched_ops->get_subflow(meta_sk,
|
||||||
|
NULL, false);
|
||||||
|
if (!subsk)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- skb = mptcp_rcv_buf_optimization(subsk, 0);
|
||||||
|
- if (skb)
|
||||||
|
- *reinject = -1;
|
||||||
|
- else
|
||||||
|
+ if (meta_sk->sk_socket &&
|
||||||
|
+ test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
||||||
|
+ sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
||||||
|
+ skb = mptcp_rcv_buf_optimization(subsk, 0);
|
||||||
|
+ if (skb)
|
||||||
|
+ *reinject = -1;
|
||||||
|
+ else
|
||||||
|
+ tcp_chrono_start(subsk,
|
||||||
|
+ TCP_CHRONO_SNDBUF_LIMITED);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!skb) {
|
||||||
|
+ /* meta is send buffer limited */
|
||||||
|
+ tcp_chrono_start(meta_sk, TCP_CHRONO_SNDBUF_LIMITED);
|
||||||
|
+
|
||||||
|
tcp_chrono_start(subsk,
|
||||||
|
TCP_CHRONO_SNDBUF_LIMITED);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return skb;
|
||||||
|
diff --git a/include/net/tcp.h b/include/net/tcp.h
|
||||||
|
index 9d3fa5eb36d9..b6e9d709d1e1 100644
|
||||||
|
--- a/include/net/tcp.h
|
||||||
|
+++ b/include/net/tcp.h
|
||||||
|
@@ -350,6 +350,7 @@ int tcp_xmit_probe_skb(struct sock *sk, int urgent, int mib);
|
||||||
|
void tcp_event_new_data_sent(struct sock *sk, struct sk_buff *skb);
|
||||||
|
int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
|
||||||
|
gfp_t gfp_mask);
|
||||||
|
+u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now);
|
||||||
|
unsigned int tcp_mss_split_point(const struct sock *sk,
|
||||||
|
const struct sk_buff *skb,
|
||||||
|
unsigned int mss_now,
|
||||||
|
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
|
||||||
|
index f72edfe89b4d..86bce63ab841 100644
|
||||||
|
--- a/net/ipv4/tcp_output.c
|
||||||
|
+++ b/net/ipv4/tcp_output.c
|
||||||
|
@@ -1781,7 +1781,7 @@ static u32 tcp_tso_autosize(const struct sock *sk, unsigned int mss_now,
|
||||||
|
/* Return the number of segments we want in the skb we are transmitting.
|
||||||
|
* See if congestion control module wants to decide; otherwise, autosize.
|
||||||
|
*/
|
||||||
|
-static u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now)
|
||||||
|
+u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now)
|
||||||
|
{
|
||||||
|
const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops;
|
||||||
|
u32 min_tso, tso_segs;
|
||||||
|
diff --git a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c
|
||||||
|
index a4d8c4a5e52d..4b878d14492a 100644
|
||||||
|
--- a/net/mptcp/mptcp_sched.c
|
||||||
|
+++ b/net/mptcp/mptcp_sched.c
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */
|
||||||
|
|
||||||
|
+#include <linux/bug.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <net/mptcp.h>
|
||||||
|
#include <trace/events/tcp.h>
|
||||||
|
@@ -37,12 +38,38 @@ bool mptcp_is_def_unavailable(struct sock *sk)
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mptcp_is_def_unavailable);
|
||||||
|
|
||||||
|
+/* estimate number of segments currently in flight + unsent in
|
||||||
|
+ * the subflow socket.
|
||||||
|
+ */
|
||||||
|
+static int mptcp_subflow_queued(struct sock *sk, u32 max_tso_segs)
|
||||||
|
+{
|
||||||
|
+ const struct tcp_sock *tp = tcp_sk(sk);
|
||||||
|
+ unsigned int queued;
|
||||||
|
+
|
||||||
|
+ /* estimate the max number of segments in the write queue
|
||||||
|
+ * this is an overestimation, avoiding to iterate over the queue
|
||||||
|
+ * to make a better estimation.
|
||||||
|
+ * Having only one skb in the queue however might trigger tso deferral,
|
||||||
|
+ * delaying the sending of a tso segment in the hope that skb_entail
|
||||||
|
+ * will append more data to the skb soon.
|
||||||
|
+ * Therefore, in the case only one skb is in the queue, we choose to
|
||||||
|
+ * potentially underestimate, risking to schedule one skb too many onto
|
||||||
|
+ * the subflow rather than not enough.
|
||||||
|
+ */
|
||||||
|
+ if (sk->sk_write_queue.qlen > 1)
|
||||||
|
+ queued = sk->sk_write_queue.qlen * max_tso_segs;
|
||||||
|
+ else
|
||||||
|
+ queued = sk->sk_write_queue.qlen;
|
||||||
|
+
|
||||||
|
+ return queued + tcp_packets_in_flight(tp);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static bool mptcp_is_temp_unavailable(struct sock *sk,
|
||||||
|
const struct sk_buff *skb,
|
||||||
|
bool zero_wnd_test)
|
||||||
|
{
|
||||||
|
const struct tcp_sock *tp = tcp_sk(sk);
|
||||||
|
- unsigned int mss_now, space, in_flight;
|
||||||
|
+ unsigned int mss_now;
|
||||||
|
|
||||||
|
if (inet_csk(sk)->icsk_ca_state == TCP_CA_Loss) {
|
||||||
|
/* If SACK is disabled, and we got a loss, TCP does not exit
|
||||||
|
@@ -66,19 +93,11 @@ static bool mptcp_is_temp_unavailable(struct sock *sk,
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- in_flight = tcp_packets_in_flight(tp);
|
||||||
|
- /* Not even a single spot in the cwnd */
|
||||||
|
- if (in_flight >= tp->snd_cwnd)
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
mss_now = tcp_current_mss(sk);
|
||||||
|
|
||||||
|
- /* Now, check if what is queued in the subflow's send-queue
|
||||||
|
- * already fills the cwnd.
|
||||||
|
- */
|
||||||
|
- space = (tp->snd_cwnd - in_flight) * mss_now;
|
||||||
|
-
|
||||||
|
- if (tp->write_seq - tp->snd_nxt >= space)
|
||||||
|
+ /* Not even a single spot in the cwnd */
|
||||||
|
+ if (mptcp_subflow_queued(sk, tcp_tso_segs(sk, tcp_current_mss(sk)))
|
||||||
|
+ >= tp->snd_cwnd)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (zero_wnd_test && !before(tp->write_seq, tcp_wnd_end(tp)))
|
||||||
|
@@ -399,11 +418,10 @@ struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
||||||
|
unsigned int *limit)
|
||||||
|
{
|
||||||
|
struct sk_buff *skb = __mptcp_next_segment(meta_sk, reinject);
|
||||||
|
- unsigned int mss_now, in_flight_space;
|
||||||
|
- int remaining_in_flight_space;
|
||||||
|
- u32 max_len, max_segs, window;
|
||||||
|
+ unsigned int mss_now;
|
||||||
|
+ u32 max_len, gso_max_segs, max_segs, max_tso_segs, window;
|
||||||
|
struct tcp_sock *subtp;
|
||||||
|
- u16 gso_max_segs;
|
||||||
|
+ int queued;
|
||||||
|
|
||||||
|
/* As we set it, we have to reset it as well. */
|
||||||
|
*limit = 0;
|
||||||
|
@@ -441,35 +459,29 @@ struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
||||||
|
if (skb->len <= mss_now)
|
||||||
|
return skb;
|
||||||
|
|
||||||
|
- /* The following is similar to tcp_mss_split_point, but
|
||||||
|
- * we do not care about nagle, because we will anyways
|
||||||
|
- * use TCP_NAGLE_PUSH, which overrides this.
|
||||||
|
+ max_tso_segs = tcp_tso_segs(*subsk, tcp_current_mss(*subsk));
|
||||||
|
+ queued = mptcp_subflow_queued(*subsk, max_tso_segs);
|
||||||
|
+
|
||||||
|
+ /* this condition should already have been established in
|
||||||
|
+ * mptcp_is_temp_unavailable when selecting available flows
|
||||||
|
*/
|
||||||
|
+ WARN_ONCE(subtp->snd_cwnd <= queued, "Selected subflow no cwnd room");
|
||||||
|
|
||||||
|
gso_max_segs = (*subsk)->sk_gso_max_segs;
|
||||||
|
if (!gso_max_segs) /* No gso supported on the subflow's NIC */
|
||||||
|
gso_max_segs = 1;
|
||||||
|
- max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs);
|
||||||
|
+
|
||||||
|
+ max_segs = min_t(unsigned int, subtp->snd_cwnd - queued, gso_max_segs);
|
||||||
|
if (!max_segs)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- /* max_len is what would fit in the cwnd (respecting the 2GSO-limit of
|
||||||
|
- * tcp_cwnd_test), but ignoring whatever was already queued.
|
||||||
|
+ /* if there is room for a segment, schedule up to a complete TSO
|
||||||
|
+ * segment to avoid TSO splitting. Even if it is more than allowed by
|
||||||
|
+ * the congestion window.
|
||||||
|
*/
|
||||||
|
- max_len = min(mss_now * max_segs, skb->len);
|
||||||
|
-
|
||||||
|
- in_flight_space = (subtp->snd_cwnd - tcp_packets_in_flight(subtp)) * mss_now;
|
||||||
|
- remaining_in_flight_space = (int)in_flight_space - (subtp->write_seq - subtp->snd_nxt);
|
||||||
|
+ max_segs = max_t(unsigned int, max_tso_segs, max_segs);
|
||||||
|
|
||||||
|
- if (remaining_in_flight_space <= 0)
|
||||||
|
- WARN_ONCE(1, "in_flight %u cwnd %u wseq %u snxt %u mss_now %u cache %u",
|
||||||
|
- tcp_packets_in_flight(subtp), subtp->snd_cwnd,
|
||||||
|
- subtp->write_seq, subtp->snd_nxt, mss_now, subtp->mss_cache);
|
||||||
|
- else
|
||||||
|
- /* max_len now fits exactly in the write-queue, taking into
|
||||||
|
- * account what was already queued.
|
||||||
|
- */
|
||||||
|
- max_len = min_t(u32, max_len, remaining_in_flight_space);
|
||||||
|
+ max_len = min(mss_now * max_segs, skb->len);
|
||||||
|
|
||||||
|
window = tcp_wnd_end(subtp) - subtp->write_seq;
|
17218
root/target/linux/generic/hack-5.4/951-rtl8156-update-v2.13.0.patch
Normal file
17218
root/target/linux/generic/hack-5.4/951-rtl8156-update-v2.13.0.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,19 +0,0 @@
|
||||||
#!/bin/sh /etc/rc.common
|
|
||||||
# Copyright (C) 2006-2011 OpenWrt.org
|
|
||||||
|
|
||||||
START=11
|
|
||||||
STOP=98
|
|
||||||
|
|
||||||
adjust_smp_affinity() {
|
|
||||||
test -f /lib/adjust_network.sh && {
|
|
||||||
. /lib/adjust_network.sh
|
|
||||||
|
|
||||||
adjust_eth_queue
|
|
||||||
adjust_edma_smp_affinity
|
|
||||||
adjust_radio_smp_affinity
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boot() {
|
|
||||||
adjust_smp_affinity
|
|
||||||
}
|
|
22
root/target/linux/ipq40xx/base-files/etc/init.d/set-irq-affinity
Executable file
22
root/target/linux/ipq40xx/base-files/etc/init.d/set-irq-affinity
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=99
|
||||||
|
|
||||||
|
start() {
|
||||||
|
mask=4
|
||||||
|
for rps in /sys/class/net/eth0/queues/rx-*
|
||||||
|
do
|
||||||
|
echo "$mask" > "$rps/rps_cpus"
|
||||||
|
done
|
||||||
|
for irq in $(grep -F "ath10k_ahb" /proc/interrupts | cut -d: -f1 | sed 's, *,,')
|
||||||
|
do
|
||||||
|
echo "$mask" > "/proc/irq/$irq/smp_affinity"
|
||||||
|
mask=8
|
||||||
|
done
|
||||||
|
|
||||||
|
mask=2
|
||||||
|
for irq in $(grep -F "edma_eth_rx" /proc/interrupts | cut -d: -f1 | sed 's, *,,')
|
||||||
|
do
|
||||||
|
echo "$mask" > "/proc/irq/$irq/smp_affinity"
|
||||||
|
done
|
||||||
|
}
|
|
@ -1,89 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# this scripts is used for adjust cpu's choice of interrupts.
|
|
||||||
#
|
|
||||||
|
|
||||||
################################################
|
|
||||||
# Adjust smp_affinity of edma
|
|
||||||
# Globals:
|
|
||||||
# None
|
|
||||||
# Arguments:
|
|
||||||
# None
|
|
||||||
# Returns:
|
|
||||||
# None
|
|
||||||
# Remark:
|
|
||||||
# execute only once on start-up.
|
|
||||||
################################################
|
|
||||||
adjust_edma_smp_affinity() {
|
|
||||||
grep -q edma_eth_ /proc/interrupts || return 0
|
|
||||||
local nr=`cat /proc/cpuinfo | grep processor | wc -l`
|
|
||||||
local cpu=0
|
|
||||||
local tx_irq_num
|
|
||||||
|
|
||||||
for tx_num in `seq 0 1 15` ; do
|
|
||||||
cpu=`printf "%x" $((1<<((tx_num/4+0)%nr)))`
|
|
||||||
tx_irq_num=`grep -m1 edma_eth_tx$tx_num /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
|
||||||
[ -n "$tx_irq_num" ] && echo $cpu > /proc/irq/$tx_irq_num/smp_affinity
|
|
||||||
done
|
|
||||||
|
|
||||||
for rx_num in `seq 0 1 7` ; do
|
|
||||||
cpu=`printf "%x" $((1<<((rx_num/2)%nr)))`
|
|
||||||
rx_irq_num=`grep -m1 edma_eth_rx$rx_num /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
|
||||||
[ -n "$rx_irq_num" ] && echo $cpu > /proc/irq/$rx_irq_num/smp_affinity
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
################################################
|
|
||||||
# Adjust smp_affinity of ath10k for 2G and 5G
|
|
||||||
# Globals:
|
|
||||||
# None
|
|
||||||
# Arguments:
|
|
||||||
# None
|
|
||||||
# Returns:
|
|
||||||
# None
|
|
||||||
# Remark:
|
|
||||||
# execute only once on start-up.
|
|
||||||
################################################
|
|
||||||
adjust_radio_smp_affinity() {
|
|
||||||
local irqs="`grep -E 'ath10k' /proc/interrupts | cut -d ':' -f 1 | tr -d ' '`"
|
|
||||||
local nr=`cat /proc/cpuinfo | grep processor | wc -l`
|
|
||||||
local idx=2
|
|
||||||
|
|
||||||
for irq in $irqs; do
|
|
||||||
cpu=`printf "%x" $((1<<((idx)%nr)))`
|
|
||||||
echo $cpu > /proc/irq/$irq/smp_affinity
|
|
||||||
idx=$((idx+1))
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
################################################
|
|
||||||
# Adjust queue of eth
|
|
||||||
# Globals:
|
|
||||||
# None
|
|
||||||
# Arguments:
|
|
||||||
# None
|
|
||||||
# Returns:
|
|
||||||
# None
|
|
||||||
# Remark:
|
|
||||||
# Each network reboot needs to be executed.
|
|
||||||
################################################
|
|
||||||
adjust_eth_queue() {
|
|
||||||
local nr=`cat /proc/cpuinfo | grep processor | wc -l`
|
|
||||||
local idx=0
|
|
||||||
|
|
||||||
for epath in /sys/class/net/eth[0-9]*; do
|
|
||||||
test -e $epath || break
|
|
||||||
echo $epath | grep -q "\." && continue
|
|
||||||
eth=`basename $epath`
|
|
||||||
idx=0
|
|
||||||
for exps in /sys/class/net/$eth/queues/rx-[0-9]*/rps_cpus; do
|
|
||||||
test -e $exps || break
|
|
||||||
cpu=`printf "%x" $((1<<((idx+1)%nr)))`
|
|
||||||
idx=$((idx+1))
|
|
||||||
echo $cpu > $exps
|
|
||||||
echo 256 > `dirname $exps`/rps_flow_cnt
|
|
||||||
done
|
|
||||||
which ethtool >/dev/null 2>&1 && ethtool -K $eth gro off
|
|
||||||
done
|
|
||||||
|
|
||||||
echo 1024 > /proc/sys/net/core/rps_sock_flow_entries
|
|
||||||
}
|
|
|
@ -11,10 +11,9 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
|
||||||
model = "GZ841902_55860.com";
|
model = "GZ419";
|
||||||
compatible = "pangu,l1000", "qcom,ipq4019";
|
compatible = "pangu,l1000", "qcom,ipq4019";
|
||||||
|
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x20000000>; /* 512MB */
|
reg = <0x80000000 0x20000000>; /* 512MB */
|
||||||
|
@ -26,12 +25,16 @@
|
||||||
led-failsafe = &power;
|
led-failsafe = &power;
|
||||||
led-running = &power;
|
led-running = &power;
|
||||||
led-upgrade = &power;
|
led-upgrade = &power;
|
||||||
|
serial0 = &blsp1_uart1;
|
||||||
|
serial1 = &blsp1_uart2;
|
||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs-append = " root=/dev/ubiblock0_1 rootfstype=squashfs";
|
bootargs-append = " root=/dev/ubiblock0_1 rootfstype=squashfs";
|
||||||
|
linux,stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
rng@22000 {
|
rng@22000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
23
root/target/linux/rockchip/Makefile
Normal file
23
root/target/linux/rockchip/Makefile
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
BOARD:=rockchip
|
||||||
|
BOARDNAME:=Rockchip
|
||||||
|
FEATURES:=ext4 audio usb usbgadget display gpio fpu pci pcie rootfs-part boot-part squashfs
|
||||||
|
SUBTARGETS:=armv8
|
||||||
|
|
||||||
|
KERNEL_PATCHVER=5.4
|
||||||
|
KERNEL_TESTING_PATCHVER=5.10
|
||||||
|
|
||||||
|
define Target/Description
|
||||||
|
Build firmware image for Rockchip SoC devices.
|
||||||
|
endef
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/target.mk
|
||||||
|
|
||||||
|
DEFAULT_PACKAGES += uboot-envtools partx-utils e2fsprogs mkf2fs kmod-gpio-button-hotplug
|
||||||
|
|
||||||
|
KERNELNAME:=Image dtbs
|
||||||
|
|
||||||
|
$(eval $(call BuildTarget))
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
. /lib/functions/leds.sh
|
||||||
|
. /lib/functions/uci-defaults.sh
|
||||||
|
|
||||||
|
board=$(board_name)
|
||||||
|
boardname="${board##*,}"
|
||||||
|
|
||||||
|
board_config_update
|
||||||
|
|
||||||
|
case $board in
|
||||||
|
friendlyarm,nanopi-r2s)
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth0"
|
||||||
|
ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth1"
|
||||||
|
;;
|
||||||
|
friendlyarm,nanopi-r4s)
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
|
||||||
|
ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
board_config_flush
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,56 @@
|
||||||
|
|
||||||
|
. /lib/functions/uci-defaults.sh
|
||||||
|
. /lib/functions/system.sh
|
||||||
|
|
||||||
|
rockchip_setup_interfaces()
|
||||||
|
{
|
||||||
|
local board="$1"
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
friendlyarm,nanopi-r2s|\
|
||||||
|
friendlyarm,nanopi-r4s)
|
||||||
|
ucidef_set_interfaces_lan_wan 'eth1' 'eth0'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ucidef_set_interface_lan 'eth0'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
nanopi_r2s_generate_mac()
|
||||||
|
{
|
||||||
|
local sd_hash=$(sha256sum /sys/class/block/mmcblk0/device/cid)
|
||||||
|
local mac_base=$(macaddr_canonicalize "$(echo "${sd_hash}" | dd bs=1 count=12 2>/dev/null)")
|
||||||
|
echo "$(macaddr_unsetbit_mc "$(macaddr_setbit_la "${mac_base}")")"
|
||||||
|
}
|
||||||
|
|
||||||
|
rockchip_setup_macs()
|
||||||
|
{
|
||||||
|
local board="$1"
|
||||||
|
local lan_mac=""
|
||||||
|
local wan_mac=""
|
||||||
|
local label_mac=""
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
friendlyarm,nanopi-r2s)
|
||||||
|
wan_mac=$(nanopi_r2s_generate_mac)
|
||||||
|
lan_mac=$(macaddr_add "$wan_mac" +1)
|
||||||
|
;;
|
||||||
|
friendlyarm,nanopi-r4s)
|
||||||
|
wan_mac=$(cat /sys/class/net/eth0/address)
|
||||||
|
lan_mac=$(macaddr_add "$wan_mac" +1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
|
||||||
|
[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
|
||||||
|
[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
|
||||||
|
}
|
||||||
|
|
||||||
|
board_config_update
|
||||||
|
board=$(board_name)
|
||||||
|
rockchip_setup_interfaces $board
|
||||||
|
rockchip_setup_macs $board
|
||||||
|
board_config_flush
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ "$ACTION" = add ] || exit
|
||||||
|
|
||||||
|
get_device_irq() {
|
||||||
|
local device="$1"
|
||||||
|
|
||||||
|
local line=$(grep -m 1 "${device}\$" /proc/interrupts)
|
||||||
|
echo ${line} | sed 's/:.*//'
|
||||||
|
}
|
||||||
|
|
||||||
|
set_interface_core() {
|
||||||
|
local core_mask="$1"
|
||||||
|
local interface="$2"
|
||||||
|
local device="$3"
|
||||||
|
|
||||||
|
[ -z "${device}" ] && device="$interface"
|
||||||
|
|
||||||
|
local irq=$(get_device_irq "$device")
|
||||||
|
|
||||||
|
echo "${core_mask}" > /proc/irq/${irq}/smp_affinity
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$(board_name)" in
|
||||||
|
friendlyarm,nanopi-r2s)
|
||||||
|
set_interface_core 2 "eth0"
|
||||||
|
set_interface_core 4 "eth1" "xhci-hcd:usb3"
|
||||||
|
;;
|
||||||
|
friendlyarm,nanopi-r4s)
|
||||||
|
set_interface_core 10 "eth0"
|
||||||
|
set_interface_core 20 "eth1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
42
root/target/linux/rockchip/image/armv8.mk
Normal file
42
root/target/linux/rockchip/image/armv8.mk
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 Tobias Maedel
|
||||||
|
|
||||||
|
define Device/friendlyarm_nanopi-r2s
|
||||||
|
DEVICE_VENDOR := FriendlyARM
|
||||||
|
DEVICE_MODEL := NanoPi R2S
|
||||||
|
SOC := rk3328
|
||||||
|
UBOOT_DEVICE_NAME := nanopi-r2s-rk3328
|
||||||
|
IMAGE/sysupgrade.img.gz := boot-common | boot-script nanopi-r2s | pine64-img | gzip | append-metadata
|
||||||
|
DEVICE_PACKAGES := kmod-usb-net-rtl8152
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += friendlyarm_nanopi-r2s
|
||||||
|
|
||||||
|
define Device/friendlyarm_nanopi-r4s
|
||||||
|
DEVICE_VENDOR := FriendlyARM
|
||||||
|
DEVICE_MODEL := NanoPi R4S
|
||||||
|
SOC := rk3399
|
||||||
|
UBOOT_DEVICE_NAME := nanopi-r4s-rk3399
|
||||||
|
IMAGE/sysupgrade.img.gz := boot-common | boot-script nanopi-r4s | pine64-img | gzip | append-metadata
|
||||||
|
DEVICE_PACKAGES := kmod-r8169
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += friendlyarm_nanopi-r4s
|
||||||
|
|
||||||
|
define Device/pine64_rockpro64
|
||||||
|
DEVICE_VENDOR := Pine64
|
||||||
|
DEVICE_MODEL := RockPro64
|
||||||
|
SOC := rk3399
|
||||||
|
UBOOT_DEVICE_NAME := rockpro64-rk3399
|
||||||
|
IMAGE/sysupgrade.img.gz := boot-common | boot-script | pine64-img | gzip | append-metadata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += pine64_rockpro64
|
||||||
|
|
||||||
|
define Device/radxa_rock-pi-4
|
||||||
|
DEVICE_VENDOR := Radxa
|
||||||
|
DEVICE_MODEL := ROCK Pi 4
|
||||||
|
SOC := rk3399
|
||||||
|
SUPPORTED_DEVICES := radxa,rockpi4
|
||||||
|
UBOOT_DEVICE_NAME := rock-pi-4-rk3399
|
||||||
|
IMAGE/sysupgrade.img.gz := boot-common | boot-script | pine64-img | gzip | append-metadata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += radxa_rock-pi-4
|
8
root/target/linux/rockchip/image/nanopi-r4s.bootscript
Normal file
8
root/target/linux/rockchip/image/nanopi-r4s.bootscript
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
part uuid mmc ${devnum}:2 uuid
|
||||||
|
|
||||||
|
setenv bootargs "console=ttyS2,1500000 earlycon=uart8250,mmio32,0xff1a0000 root=PARTUUID=${uuid} rw rootwait"
|
||||||
|
|
||||||
|
load mmc ${devnum}:1 ${fdt_addr_r} rockchip.dtb
|
||||||
|
load mmc ${devnum}:1 ${kernel_addr_r} kernel.img
|
||||||
|
|
||||||
|
booti ${kernel_addr_r} - ${fdt_addr_r}
|
|
@ -0,0 +1,177 @@
|
||||||
|
From db792e9adbf85ffc9d6b0b060ac3c8e3148c8992 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tianling Shen <cnsztl@gmail.com>
|
||||||
|
Date: Fri, 19 Mar 2021 13:16:27 +0800
|
||||||
|
Subject: [PATCH] rockchip: rk3399: Add support for FriendlyARM NanoPi R4S
|
||||||
|
|
||||||
|
This adds support for the NanoPi R4S from FriendlyArm.
|
||||||
|
|
||||||
|
Rockchip RK3399 SoC
|
||||||
|
1GB DDR3 or 4GB LPDDR4 RAM
|
||||||
|
Gigabit Ethernet (WAN)
|
||||||
|
Gigabit Ethernet (PCIe) (LAN)
|
||||||
|
USB 3.0 Port x 2
|
||||||
|
MicroSD slot
|
||||||
|
Reset button
|
||||||
|
WAN - LAN - SYS LED
|
||||||
|
|
||||||
|
Co-developed-by: Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
Signed-off-by: Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
[minor adjustments]
|
||||||
|
Co-developed-by: Marty Jones <mj8263788@gmail.com>
|
||||||
|
Signed-off-by: Marty Jones <mj8263788@gmail.com>
|
||||||
|
[further adjustments, fixed format issues]
|
||||||
|
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||||
|
Link: https://lore.kernel.org/r/20210319051627.814-2-cnsztl@gmail.com
|
||||||
|
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||||
|
.../boot/dts/rockchip/rk3399-nanopi-r4s.dts | 133 +++++++++++++++++++++
|
||||||
|
2 files changed, 134 insertions(+)
|
||||||
|
create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts
|
||||||
|
|
||||||
|
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||||
|
@@ -30,6 +30,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-le
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-r4s.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts
|
||||||
|
@@ -0,0 +1,133 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * FriendlyElec NanoPC-T4 board device tree source
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2020 FriendlyElec Computer Tech. Co., Ltd.
|
||||||
|
+ * (http://www.friendlyarm.com)
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2018 Collabora Ltd.
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2020 Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
+ * Copyright (c) 2020 Marty Jones <mj8263788@gmail.com>
|
||||||
|
+ * Copyright (c) 2021 Tianling Shen <cnsztl@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "rk3399-nanopi4.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyElec NanoPi R4S";
|
||||||
|
+ compatible = "friendlyarm,nanopi-r4s", "rockchip,rk3399";
|
||||||
|
+
|
||||||
|
+ /delete-node/ display-subsystem;
|
||||||
|
+
|
||||||
|
+ gpio-leds {
|
||||||
|
+ pinctrl-0 = <&lan_led_pin>, <&sys_led_pin>, <&wan_led_pin>;
|
||||||
|
+
|
||||||
|
+ /delete-node/ led-0;
|
||||||
|
+
|
||||||
|
+ lan_led: led-lan {
|
||||||
|
+ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "green:lan";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sys_led: led-sys {
|
||||||
|
+ gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "red:sys";
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wan_led: led-wan {
|
||||||
|
+ gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "green:wan";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpio-keys {
|
||||||
|
+ pinctrl-0 = <&reset_button_pin>;
|
||||||
|
+
|
||||||
|
+ /delete-node/ power;
|
||||||
|
+
|
||||||
|
+ reset {
|
||||||
|
+ debounce-interval = <50>;
|
||||||
|
+ gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||||
|
+ label = "reset";
|
||||||
|
+ linux,code = <KEY_RESTART>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_5v: vdd-5v {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vdd_5v";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emmc_phy {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c4 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pcie0 {
|
||||||
|
+ max-link-speed = <1>;
|
||||||
|
+ num-lanes = <1>;
|
||||||
|
+ vpcie3v3-supply = <&vcc3v3_sys>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pinctrl {
|
||||||
|
+ gpio-leds {
|
||||||
|
+ /delete-node/ status-led-pin;
|
||||||
|
+
|
||||||
|
+ lan_led_pin: lan-led-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sys_led_pin: sys-led-pin {
|
||||||
|
+ rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wan_led_pin: wan-led-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ rockchip-key {
|
||||||
|
+ /delete-node/ power-key;
|
||||||
|
+
|
||||||
|
+ reset_button_pin: reset-button-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdhci {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdio0 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&u2phy0_host {
|
||||||
|
+ phy-supply = <&vdd_5v>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&u2phy1_host {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbdrd_dwc3_0 {
|
||||||
|
+ dr_mode = "host";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vcc3v3_sys {
|
||||||
|
+ vin-supply = <&vcc5v0_sys>;
|
||||||
|
+};
|
|
@ -0,0 +1,177 @@
|
||||||
|
From db792e9adbf85ffc9d6b0b060ac3c8e3148c8992 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tianling Shen <cnsztl@gmail.com>
|
||||||
|
Date: Fri, 19 Mar 2021 13:16:27 +0800
|
||||||
|
Subject: [PATCH] rockchip: rk3399: Add support for FriendlyARM NanoPi R4S
|
||||||
|
|
||||||
|
This adds support for the NanoPi R4S from FriendlyArm.
|
||||||
|
|
||||||
|
Rockchip RK3399 SoC
|
||||||
|
1GB DDR3 or 4GB LPDDR4 RAM
|
||||||
|
Gigabit Ethernet (WAN)
|
||||||
|
Gigabit Ethernet (PCIe) (LAN)
|
||||||
|
USB 3.0 Port x 2
|
||||||
|
MicroSD slot
|
||||||
|
Reset button
|
||||||
|
WAN - LAN - SYS LED
|
||||||
|
|
||||||
|
Co-developed-by: Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
Signed-off-by: Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
[minor adjustments]
|
||||||
|
Co-developed-by: Marty Jones <mj8263788@gmail.com>
|
||||||
|
Signed-off-by: Marty Jones <mj8263788@gmail.com>
|
||||||
|
[further adjustments, fixed format issues]
|
||||||
|
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||||
|
Link: https://lore.kernel.org/r/20210319051627.814-2-cnsztl@gmail.com
|
||||||
|
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||||
|
.../boot/dts/rockchip/rk3399-nanopi-r4s.dts | 133 +++++++++++++++++++++
|
||||||
|
2 files changed, 134 insertions(+)
|
||||||
|
create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts
|
||||||
|
|
||||||
|
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||||
|
@@ -25,6 +25,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-le
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-r4s.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc.dtb
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts
|
||||||
|
@@ -0,0 +1,133 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * FriendlyElec NanoPC-T4 board device tree source
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2020 FriendlyElec Computer Tech. Co., Ltd.
|
||||||
|
+ * (http://www.friendlyarm.com)
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2018 Collabora Ltd.
|
||||||
|
+ *
|
||||||
|
+ * Copyright (c) 2020 Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
+ * Copyright (c) 2020 Marty Jones <mj8263788@gmail.com>
|
||||||
|
+ * Copyright (c) 2021 Tianling Shen <cnsztl@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "rk3399-nanopi4.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyElec NanoPi R4S";
|
||||||
|
+ compatible = "friendlyarm,nanopi-r4s", "rockchip,rk3399";
|
||||||
|
+
|
||||||
|
+ /delete-node/ display-subsystem;
|
||||||
|
+
|
||||||
|
+ gpio-leds {
|
||||||
|
+ pinctrl-0 = <&lan_led_pin>, <&sys_led_pin>, <&wan_led_pin>;
|
||||||
|
+
|
||||||
|
+ /delete-node/ status;
|
||||||
|
+
|
||||||
|
+ lan_led: led-lan {
|
||||||
|
+ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "green:lan";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sys_led: led-sys {
|
||||||
|
+ gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "red:sys";
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wan_led: led-wan {
|
||||||
|
+ gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ label = "green:wan";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpio-keys {
|
||||||
|
+ pinctrl-0 = <&reset_button_pin>;
|
||||||
|
+
|
||||||
|
+ /delete-node/ power;
|
||||||
|
+
|
||||||
|
+ reset {
|
||||||
|
+ debounce-interval = <50>;
|
||||||
|
+ gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||||
|
+ label = "reset";
|
||||||
|
+ linux,code = <KEY_RESTART>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_5v: vdd-5v {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vdd_5v";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emmc_phy {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c4 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pcie0 {
|
||||||
|
+ max-link-speed = <1>;
|
||||||
|
+ num-lanes = <1>;
|
||||||
|
+ vpcie3v3-supply = <&vcc3v3_sys>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pinctrl {
|
||||||
|
+ gpio-leds {
|
||||||
|
+ /delete-node/ leds-gpio;
|
||||||
|
+
|
||||||
|
+ lan_led_pin: lan-led-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sys_led_pin: sys-led-pin {
|
||||||
|
+ rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wan_led_pin: wan-led-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ rockchip-key {
|
||||||
|
+ /delete-node/ power-key;
|
||||||
|
+
|
||||||
|
+ reset_button_pin: reset-button-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdhci {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdio0 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&u2phy0_host {
|
||||||
|
+ phy-supply = <&vdd_5v>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&u2phy1_host {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbdrd_dwc3_0 {
|
||||||
|
+ dr_mode = "host";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vcc3v3_sys {
|
||||||
|
+ vin-supply = <&vcc5v0_sys>;
|
||||||
|
+};
|
Loading…
Add table
Add a link
Reference in a new issue