mvebu: add initial support for uDPU board
authorVladimir Vid <vladimir.vid@sartura.hr>
Wed, 19 Jun 2019 19:00:03 +0000 (21:00 +0200)
committerPetr Štetiar <ynezz@true.cz>
Fri, 28 Jun 2019 19:49:33 +0000 (21:49 +0200)
This adds initial support for micro-DPU (uDPU) board which is based on
Armada-3720 SoC.  micro-DPU is the single-port FTTdp distribution point
unit made by Methode Electronics which offers complete modularity with
replaceable SFP modules both for uplink and downlink (G.hn over
twisted-pair, G.hn over coax, 1G and 2.5G Ethernet over Cat-5e cable).

On-board features:
- 512 MiB DDR3
- 2 x 2.5G SFP via HSGMII SERDES interface to the A3720 SoC
- USB 2.0 Type-C connector
- 4GB eMMC
- ETSI TS 101548 reverse powering via twisted pair (RJ45) or coax (F Type)

uDPU is intented to run on kernel 4.19 on newer due to the SFP and hardware support.

Signed-off-by: Vladimir Vid <vladimir.vid@sartura.hr>
target/linux/mvebu/base-files/etc/board.d/02_network
target/linux/mvebu/files-4.19/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts [new file with mode: 0644]
target/linux/mvebu/image/cortex-a53.mk
target/linux/mvebu/patches-4.19/530-add_armada-3820-uDPU-dts.patch [new file with mode: 0644]

index 08819104d2a1bebe0a7e74af63aec51138a68d80..7acbe4bf629c851ab12c6b267ddbee3e45fca2d6 100755 (executable)
@@ -49,6 +49,9 @@ marvell,armada-3720-db)
 marvell,axp-gp)
        ucidef_set_interface_lan "eth0 eth1 eth2 eth3"
        ;;
+methode,uDPU)
+       ucidef_set_interfaces_lan_wan "eth1" "eth0"
+       ;;
 solidrun,clearfog*a1)
        # eth0 is standalone ethernet
        # eth1 is switch (-pro) or standalone ethernet (-base)
diff --git a/target/linux/mvebu/files-4.19/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts b/target/linux/mvebu/files-4.19/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
new file mode 100644 (file)
index 0000000..5b722b4
--- /dev/null
@@ -0,0 +1,162 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device tree for the uDPU board.
+ * Based on Marvell Armada 3720 development board (DB-88F3720-DDR3)
+ * Copyright (C) 2016 Marvell
+ * Copyright (C) 2019 Methode Electronics
+ * Copyright (C) 2019 Telus
+ *
+ * Vladimir Vid <vladimir.vid@sartura.hr>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "armada-372x.dtsi"
+
+/ {
+       model = "Methode uDPU Board";
+       compatible = "methode,udpu", "marvell,armada3720";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
+       };
+
+       leds {
+               pinctrl-names = "default";
+               compatible = "gpio-leds";
+
+               power1 {
+                       label = "udpu:green:power";
+                       gpios = <&gpionb 11 GPIO_ACTIVE_LOW>;
+               };
+
+               power2 {
+                       label = "udpu:red:power";
+                       gpios = <&gpionb 12 GPIO_ACTIVE_LOW>;
+               };
+
+               network1 {
+                       label = "udpu:green:network";
+                       gpios = <&gpionb 13 GPIO_ACTIVE_LOW>;
+               };
+
+               network2 {
+                       label = "udpu:red:network";
+                       gpios = <&gpionb 14 GPIO_ACTIVE_LOW>;
+               };
+
+               alarm1 {
+                       label = "udpu:green:alarm";
+                       gpios = <&gpionb 15 GPIO_ACTIVE_LOW>;
+               };
+
+               alarm2 {
+                       label = "udpu:red:alarm";
+                       gpios = <&gpionb 16 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       sfp_eth0: sfp-eth0 {
+               compatible = "sff,sfp";
+               i2c-bus = <&i2c0>;
+               los-gpio = <&gpiosb 2 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&gpiosb 3 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&gpiosb 4 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio = <&gpiosb 5 GPIO_ACTIVE_HIGH>;
+       };
+
+       sfp_eth1: sfp-eth1 {
+               compatible = "sff,sfp";
+               i2c-bus = <&i2c1>;
+               los-gpio = <&gpiosb 7 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&gpiosb 8 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&gpiosb 9 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio = <&gpiosb 10 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&sdhci0 {
+       status = "okay";
+       bus-width = <8>;
+       mmc-ddr-1_8v;
+       mmc-hs400-1_8v;
+       marvell,pad-type = "fixed-1-8v";
+       non-removable;
+       no-sd;
+       no-sdio;
+};
+
+&spi0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi_quad_pins>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <54000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       /* only bootloader is located on the SPI */
+                       partition@0 {
+                               label = "uboot";
+                               reg = <0 0x400000>;
+                       };
+               };
+       };
+};
+
+&i2c0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+};
+
+&i2c1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+
+       lm75@48 {
+               status = "okay";
+               compatible = "lm75";
+               reg = <0x48>;
+       };
+
+       lm75@49 {
+               status = "okay";
+               compatible = "lm75";
+               reg = <0x49>;
+       };
+};
+
+&eth0 {
+       status = "okay";
+       phy-mode = "sgmii";
+       managed = "in-band-status";
+       sfp = <&sfp_eth0>;
+};
+
+&eth1 {
+       status = "okay";
+       phy-mode = "sgmii";
+       managed = "in-band-status";
+       sfp = <&sfp_eth1>;
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
index d7014d6f027a37e4e7c89613953b1a95d94964ca..228155ec11ef21919de85b02af2675ef3ab92450 100644 (file)
@@ -35,4 +35,17 @@ define Device/marvell_armada-3720-db
 endef
 TARGET_DEVICES += marvell_armada-3720-db
 
+define Device/methode_uDPU
+  $(call Device/Default-arm64)
+  DEVICE_TITLE := Methode micro-DPU (uDPU)
+  DEVICE_DTS := armada-3720-uDPU
+  KERNEL_LOADADDR := 0x00080000
+  KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
+  KERNEL_INITRAMFS_SUFFIX := .itb
+  DEVICE_PACKAGES := f2fs-tools e2fsprogs fdisk ethtool kmod-usb2 kmod-usb3 \
+                       kmod-e100 kmod-e1000 kmod-e1000e kmod-igb kmod-ixgbevf \
+                       kmod-mdio-gpio kmod-switch-mvsw61xx
+endef
+TARGET_DEVICES += methode_uDPU
+
 endif
diff --git a/target/linux/mvebu/patches-4.19/530-add_armada-3820-uDPU-dts.patch b/target/linux/mvebu/patches-4.19/530-add_armada-3820-uDPU-dts.patch
new file mode 100644 (file)
index 0000000..bd4f0ae
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/arch/arm64/boot/dts/marvell/Makefile
++++ b/arch/arm64/boot/dts/marvell/Makefile
+@@ -2,6 +2,7 @@
+ # Mvebu SoC Family
+ dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-db.dtb
+ dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-espressobin.dtb
++dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-uDPU.dtb
+ dtb-$(CONFIG_ARCH_MVEBU) += armada-7040-db.dtb
+ dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-db.dtb
+ dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin.dtb