realtek: d-link: add support for dgs-1210-10mp
authorDaniel Groth <flygarn12@gmail.com>
Fri, 12 Aug 2022 18:11:54 +0000 (20:11 +0200)
committerSander Vanheule <sander@svanheule.net>
Sat, 20 Aug 2022 07:02:44 +0000 (09:02 +0200)
General hardware info:
-------------------------------------------------------------------------------

D-Link DGS-1210-10MP is a switch with 8 ethernet ports and 2 SFP ports, all
ports Gbit capable. It is based on a RTL8380 SoC @ 500MHz, DRAM 128MB and
32MB flash. All ethernet ports are 802.3af/at PoE capable
with a total PoE power budget of 130W.

File info:
-------------------------------------------------------------------------------
The dgs-1210-10mp is very similar to dgs-1210-10p so I used that as a start.

rtl838x.mk:
 - Removed lua-rs232 package since it was a leftover from the old rtl83xx-poe
   package.
 - Updated the soc to 8380.
 - Specified device variant: F.
 - Installed the new realtek-poe package.

rtl8380_d-link_dgs-1210-10mp.dts:
 - Moved dgs-1210 family common parts and non PoE related ports on rtl8231
   to the new device tree dtsi files.

Serial connection:
-------------------------------------------------------------------------------
The UART for the SoC (115200 8N1) is available close to the front panel next
to the LED/key card connector via unpopulated standard 0.1" pin header
marked j4. Pin1 is marked with arrow and square.

Pin 1: Vcc 3,3V
Pin 2: Tx
Pin 3: Rx
Pin 4: Gnd

Installation with TFTP from u-boot
-------------------------------------------------------------------------------
I originally used the install procedure:
'OpenWrt installation using the TFTP method and serial console access' found
in the device wiki for the dgs-1210-16.
< https://openwrt.org/toh/d-link/dgs-1210-16_g1#openwrt_installation_using
_the_tftp_method_and_serial_console_access >

About the realtek-poe package
-------------------------------------------------------------------------------
The realtek-poe package is installed but there isn't any automatic PoE config
setting at this time so for now the PoE config must be edited manually.

Original OEM hardware/firmware data at first installation
-------------------------------------------------------------------------------
It has been installed, developed, and tested on a device with these OEM
hardware and firmware versions.

- U-boot: 2011.12.(2.1.5.67086)-Candidate1 (Jun 22 2020 - 15:03:58)
- Boot version: 1.01.001
- Firmware version: 6.20.007
- Hardware version: F1

Things to be done when support are developed
-------------------------------------------------------------------------------
 - realtek-poe has been included in OpenWrt but the automatic config handling
   has not been solved yet so in the future there will probably be some minor
   updates for this device to handle the poe config.
 - LED link_act and poe are per function supposed to be connected to the PoE
   system.
   But some software development is also needed to make this LED work and
   shift the LED array between act and poe indication and to shift the mode
   lights with mode key.
 - LED poe_max should probably be used as straight forward error output from
   the realtek-poe package error handling. But no code has been written for
   this.
 - SFP is currently not hot pluggable. Development is under progress to get
   working I2C communication with SFP and have them hot pluggable.
   When any device in the dgs-1210 family gets this working, I expect it
   should be possible to implement the same solution in this device.

Signed-off-by: Daniel Groth <flygarn12@gmail.com>
[Capitalisation of abbreviations, DEVICE_VARIANT and update filenames,
device compatibles on single line]
Signed-off-by: Sander Vanheule <sander@svanheule.net>
package/boot/uboot-envtools/files/realtek
target/linux/realtek/dts-5.10/rtl8380_d-link_dgs-1210-10mp-f.dts [new file with mode: 0644]
target/linux/realtek/image/rtl838x.mk

index 39be783ea3e53c47b13478e2d94b967c47d1e899..e1eb1a6ac66868e3825fe33d359a56f5f6d13998 100644 (file)
@@ -8,10 +8,11 @@ touch /etc/config/ubootenv
 board=$(board_name)
 
 case "$board" in
+d-link,dgs-1210-10mp|\
+d-link,dgs-1210-10p|\
 d-link,dgs-1210-16|\
 d-link,dgs-1210-20|\
 d-link,dgs-1210-28|\
-d-link,dgs-1210-10p|\
 zyxel,gs1900-8|\
 zyxel,gs1900-8hp-v1|\
 zyxel,gs1900-8hp-v2|\
diff --git a/target/linux/realtek/dts-5.10/rtl8380_d-link_dgs-1210-10mp-f.dts b/target/linux/realtek/dts-5.10/rtl8380_d-link_dgs-1210-10mp-f.dts
new file mode 100644 (file)
index 0000000..3e8e979
--- /dev/null
@@ -0,0 +1,87 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "rtl838x_d-link_dgs-1210_common.dtsi"
+#include "rtl83xx_d-link_dgs-1210_gpio.dtsi"
+
+/ {
+       compatible = "d-link,dgs-1210-10mp-f", "realtek,rtl8382-soc", "realtek,rtl838x-soc";
+
+       model = "D-Link DGS-1210-10MP F";
+};
+
+&leds {
+       link_act {
+               label = "green:link_act";
+               gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
+       };
+
+       poe {
+               label = "green:poe";
+               gpios = <&gpio1 29 GPIO_ACTIVE_LOW>;
+       };
+
+       poe_max {
+               label = "yellow:poe_max";
+               gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&keys {
+       mode {
+               label = "mode";
+               gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
+               linux,code = <KEY_LIGHTS_TOGGLE>;
+       };
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&ethernet0 {
+       mdio: mdio-bus {
+               compatible = "realtek,rtl838x-mdio";
+               regmap = <&ethernet0>;
+               #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)
+               INTERNAL_PHY(24)
+               INTERNAL_PHY(26)
+       };
+};
+
+&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)
+               SWITCH_SFP_PORT(24, 9, rgmii-id)
+               SWITCH_SFP_PORT(26, 10, rgmii-id)
+
+               port@28 {
+                       ethernet = <&ethernet0>;
+                       reg = <28>;
+                       phy-mode = "internal";
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+};
index e748d414bcc0cc3e139351c529e3741d1d5e386b..3e27576bdaeb46b56e7eba52b4e42db5bd3d9e16 100644 (file)
@@ -27,6 +27,15 @@ define Device/d-link_dgs-1210
        dlink-version | dlink-headers
 endef
 
+define Device/d-link_dgs-1210-10mp-f
+  $(Device/d-link_dgs-1210)
+  SOC := rtl8380
+  DEVICE_MODEL := DGS-1210-10MP
+  DEVICE_VARIANT := F
+  DEVICE_PACKAGES += realtek-poe
+endef
+TARGET_DEVICES += d-link_dgs-1210-10mp-f
+
 define Device/d-link_dgs-1210-10p
   $(Device/d-link_dgs-1210)
   DEVICE_MODEL := DGS-1210-10P