aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/realtek/base-files/etc/board.d/02_network4
-rw-r--r--target/linux/realtek/base-files/lib/upgrade/platform.sh19
-rw-r--r--target/linux/realtek/dts-5.10/rtl8380_tplink_sg2008p-v1.dts184
-rw-r--r--target/linux/realtek/image/rtl838x.mk11
-rw-r--r--target/linux/realtek/rtl838x/config-5.101
5 files changed, 219 insertions, 0 deletions
diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network
index 87d772cf84..d797960faf 100644
--- a/target/linux/realtek/base-files/etc/board.d/02_network
+++ b/target/linux/realtek/base-files/etc/board.d/02_network
@@ -39,6 +39,10 @@ hpe,1920-24g)
lan_mac_start=$(macaddr_add $lan_mac 2)
lan_mac_end=$(macaddr_add $lan_mac $((mac_count2-mac_count1)))
;;
+tplink,sg2008p-v1)
+ label_mac=$(mtd_get_mac_binary para 0xfdff4)
+ lan_mac="$label_mac"
+ ;;
*)
lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start)
lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end)
diff --git a/target/linux/realtek/base-files/lib/upgrade/platform.sh b/target/linux/realtek/base-files/lib/upgrade/platform.sh
index 927aadbe31..b39b332063 100644
--- a/target/linux/realtek/base-files/lib/upgrade/platform.sh
+++ b/target/linux/realtek/base-files/lib/upgrade/platform.sh
@@ -4,6 +4,21 @@ REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fw_printenv fw_setenv'
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
+# The TP-Link bootloader gets its flash layout from "bootargs".
+# Use this to our advantage, and:
+# 1. Disable the second rootfs (usrimg2)
+# 2. Extend the first rootfs (usrimg1) to include more space
+# 3. Increase the baudrate to the expected 115200
+tplink_sg2xxx_fix_mtdparts() {
+ local args
+ args="bootargs mtdparts=spi_flash:896K(boot),128K(env),6144K(sys)"
+ args="$args,20480K(usrimg1@main),0K(usrimg2)"
+ args="$args,4096K(usrappfs),1024K(para)\n"
+ args="$args baudrate 115200"
+
+ echo -e "$args" | fw_setenv --script -
+}
+
platform_check_image() {
return 0
}
@@ -12,6 +27,10 @@ platform_do_upgrade() {
local board=$(board_name)
case "$board" in
+ tplink,sg2008p-v1)
+ tplink_sg2xxx_fix_mtdparts
+ default_do_upgrade "$1"
+ ;;
*)
default_do_upgrade "$1"
;;
diff --git a/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2008p-v1.dts b/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2008p-v1.dts
new file mode 100644
index 0000000000..2cce03bde1
--- /dev/null
+++ b/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2008p-v1.dts
@@ -0,0 +1,184 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl838x.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ compatible = "tplink,sg2008p-v1", "realtek,rtl838x-soc";
+ model = "TP-Link SG2008P v1";
+
+ aliases {
+ led-boot = &led_power;
+ led-failsafe = &led_power;
+ led-running = &led_power;
+ led-upgrade = &led_power;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x10000000>;
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ reset {
+ label = "reset";
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ gpio-restart {
+ compatible = "gpio-restart";
+ gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_power: led-0 {
+ label = "green:power";
+ gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ i2c1: i2c-gpio-1 {
+ compatible = "i2c-gpio";
+ scl-gpios = <&gpio0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ sda-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ i2c-gpio,delay-us = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ tps23861@30 {
+ compatible = "ti,tps23861";
+ reg = <0x30>;
+ shunt-resistor-micro-ohms = <255000>;
+ };
+ };
+
+ watchdog {
+ compatible = "linux,wdt-gpio";
+ gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
+ hw_algo = "toggle";
+ /* SGM706 specs: typical 1.6s, but minimum 1.0s. */
+ hw_margin_ms = <1000>;
+ };
+
+ virtual_flash {
+ compatible = "mtd-concat";
+
+ devices = <&syspart &usrpart>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ compatible = "denx,uimage";
+ label = "firmware";
+ reg = <0x0 0x1a00000>;
+ };
+ };
+ };
+};
+
+&gpio0 {
+ watchdog-enable {
+ gpio-hog;
+ gpios = <14 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "watchdog-enable";
+ };
+};
+
+&spi0 {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <10000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "u-boot";
+ reg = <0x0 0xe0000>;
+ read-only;
+ };
+ partition@e0000 {
+ label = "u-boot-env";
+ reg = <0xe0000 0x20000>;
+ };
+ syspart: partition@100000 {
+ label = "sys";
+ reg = <0x100000 0x600000>;
+ };
+ usrpart: partition@700000 {
+ label = "usrimg1";
+ reg = <0x700000 0x1400000>;
+ };
+ partition@1b00000 {
+ label = "usrappfs";
+ reg = <0x1b00000 0x400000>;
+ };
+ partition@1f00000 {
+ label = "para";
+ reg = <0x1f00000 0x100000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&ethernet0 {
+ mdio: mdio-bus {
+ compatible = "realtek,rtl838x-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ INTERNAL_PHY(8)
+ INTERNAL_PHY(9)
+ INTERNAL_PHY(10)
+ INTERNAL_PHY(11)
+ INTERNAL_PHY(12)
+ INTERNAL_PHY(13)
+ INTERNAL_PHY(14)
+ INTERNAL_PHY(15)
+ };
+};
+
+&switch0 {
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ SWITCH_PORT(8, 1, internal)
+ SWITCH_PORT(9, 2, internal)
+ SWITCH_PORT(10, 3, internal)
+ SWITCH_PORT(11, 4, internal)
+ SWITCH_PORT(12, 5, internal)
+ SWITCH_PORT(13, 6, internal)
+ SWITCH_PORT(14, 7, internal)
+ SWITCH_PORT(15, 8, internal)
+
+ port@28 {
+ ethernet = <&ethernet0>;
+ reg = <28>;
+ phy-mode = "internal";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+};
diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk
index 9e1dd0308d..e748d414bc 100644
--- a/target/linux/realtek/image/rtl838x.mk
+++ b/target/linux/realtek/image/rtl838x.mk
@@ -168,6 +168,17 @@ define Device/panasonic_m8eg-pn28080k
endef
TARGET_DEVICES += panasonic_m8eg-pn28080k
+define Device/tplink_sg2008p-v1
+ SOC := rtl8380
+ KERNEL_SIZE := 6m
+ IMAGE_SIZE := 26m
+ DEVICE_VENDOR := TP-Link
+ DEVICE_MODEL := SG2008P
+ DEVICE_VARIANT := v1
+ DEVICE_PACKAGES := kmod-hwmon-tps23861
+endef
+TARGET_DEVICES += tplink_sg2008p-v1
+
define Device/zyxel_gs1900
SOC := rtl8380
IMAGE_SIZE := 6976k
diff --git a/target/linux/realtek/rtl838x/config-5.10 b/target/linux/realtek/rtl838x/config-5.10
index d046c7daeb..6b90b280c9 100644
--- a/target/linux/realtek/rtl838x/config-5.10
+++ b/target/linux/realtek/rtl838x/config-5.10
@@ -138,6 +138,7 @@ CONFIG_MTD_SPLIT_FIRMWARE=y
CONFIG_MTD_SPLIT_H3C_VFS=y
CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y
+CONFIG_MTD_VIRT_CONCAT=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_PER_CPU_KM=y
CONFIG_NET_DEVLINK=y