From c2e819537f9538f58e94d3fff2b99b4f2493e9d8 Mon Sep 17 00:00:00 2001 From: Vladimir Vid Date: Wed, 19 Jun 2019 21:00:03 +0200 Subject: [PATCH] mvebu: add initial support for uDPU board 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 --- .../mvebu/base-files/etc/board.d/02_network | 3 + .../boot/dts/marvell/armada-3720-uDPU.dts | 162 ++++++++++++++++++ target/linux/mvebu/image/cortex-a53.mk | 13 ++ .../530-add_armada-3820-uDPU-dts.patch | 10 ++ 4 files changed, 188 insertions(+) create mode 100644 target/linux/mvebu/files-4.19/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts create mode 100644 target/linux/mvebu/patches-4.19/530-add_armada-3820-uDPU-dts.patch diff --git a/target/linux/mvebu/base-files/etc/board.d/02_network b/target/linux/mvebu/base-files/etc/board.d/02_network index 08819104d2..7acbe4bf62 100755 --- a/target/linux/mvebu/base-files/etc/board.d/02_network +++ b/target/linux/mvebu/base-files/etc/board.d/02_network @@ -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 index 0000000000..5b722b4f83 --- /dev/null +++ b/target/linux/mvebu/files-4.19/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts @@ -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 + */ + +/dts-v1/; + +#include +#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>; + }; +}; + +ð0 { + status = "okay"; + phy-mode = "sgmii"; + managed = "in-band-status"; + sfp = <&sfp_eth0>; +}; + +ð1 { + status = "okay"; + phy-mode = "sgmii"; + managed = "in-band-status"; + sfp = <&sfp_eth1>; +}; + +&usb3 { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; diff --git a/target/linux/mvebu/image/cortex-a53.mk b/target/linux/mvebu/image/cortex-a53.mk index d7014d6f02..228155ec11 100644 --- a/target/linux/mvebu/image/cortex-a53.mk +++ b/target/linux/mvebu/image/cortex-a53.mk @@ -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 index 0000000000..bd4f0aef9a --- /dev/null +++ b/target/linux/mvebu/patches-4.19/530-add_armada-3820-uDPU-dts.patch @@ -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