0
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-11-22 04:56:15 +00:00
openwrt/package/boot/uboot-mvebu/patches/102-arm-mvebu-add-support-for-MikroTik-RB5009UG-S-IN.patch
Stefan Kalscheuer e8d8cadd24 uboot-mvebu: update to version 2024.10
Update package to the latest stable version and drop upstreamed patches:
  0001-arm-mvebu-turris_omnia-Enable-LTO-by-default-on-Turr.patch
  100-mvebu-armada-8k-respect-CONFIG_DISTRO_DEFAULTS.patch

Other patches automatically refreshed (line numbers only)

Add custom config flags to disable building efimkcapsule by default.
This introduces a dependency to GnuTLS which is not present and we do
not need it here.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/16676
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-10-19 22:54:12 +02:00

460 lines
10 KiB
Diff

From 163b07bda901b728f4f208a296c15b513f9d5b49 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
Date: Sun, 2 Jan 2022 15:10:34 +0100
Subject: [PATCH 3/3] arm: mvebu: add support for MikroTik RB5009UG+S+IN
Specifications:
- SoC: Marvell Armada 7040 (88F7040) - 4 cores, ARMv8, 1.4GHz, 64bit
- RAM: 1024MB DDR4
- Flash: 16MB SPI NOR flash, 1024MB NAND
- Ethernet: One Marvell 88E6393X - Amethyst: one 2.5G + seven 1G ports and one SFP+
- LED: User, SFP, Hdr1, Hdr2
- Buttons: Reset
- UART: 115200 8n1
- USB: One USB3 port
This provides only the basic support required to boot OpenWrt, however
networking via the switch also works since its preconfigured by MikroTik
RouterBoot since we are using U-Boot as the secondary bootloader.
Signed-off-by: Robert Marko <robimarko@gmail.com>
---
arch/arm/dts/Makefile | 1 +
arch/arm/dts/armada-7040-rb5009.dts | 241 ++++++++++++++++++
arch/arm/mach-mvebu/arm64-common.c | 10 +-
.../mvebu_armada-8k/mikrotik-rb5009.env | 52 ++++
configs/mvebu_rb5009_defconfig | 97 +++++++
5 files changed, 398 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/dts/armada-7040-rb5009.dts
create mode 100644 board/Marvell/mvebu_armada-8k/mikrotik-rb5009.env
create mode 100644 configs/mvebu_rb5009_defconfig
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -177,6 +177,7 @@ dtb-$(CONFIG_ARCH_MVEBU) += \
armada-3720-uDPU.dtb \
armada-7040-db-nand.dtb \
armada-7040-db.dtb \
+ armada-7040-rb5009.dtb \
armada-8040-clearfog-gt-8k.dtb \
armada-8040-db.dtb \
armada-8040-mcbin.dtb \
--- /dev/null
+++ b/arch/arm/dts/armada-7040-rb5009.dts
@@ -0,0 +1,241 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2016- 2021 Marvell International Ltd.
+ */
+
+/*
+ * Device Tree file for MikroTik RB5009
+ * Boot device: SPI NOR, 0x0
+ */
+
+#include "armada-7040.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "MikroTik RB5009";
+ compatible = "mikrotik,rb5009", "marvell,armada7040",
+ "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ memory@00000000 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_user: user {
+ label = "green:user";
+ gpios = <&cp0_gpio1 26 GPIO_ACTIVE_LOW>;
+ default-state = "on";
+ };
+
+ sfp {
+ label = "green:sfp";
+ gpios = <&cp0_gpio1 25 GPIO_ACTIVE_LOW>;
+ };
+
+ hdr1 {
+ label = "blue:hdr1";
+ gpios = <&cp0_gpio0 4 GPIO_ACTIVE_LOW>;
+ };
+
+ hdr2 {
+ label = "blue:hdr2";
+ gpios = <&cp0_gpio1 19 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ reset {
+ label = "reset";
+ gpios = <&cp0_gpio0 28 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+};
+
+&ap_pinctl {
+ /* MPP Bus:
+ * SPI [0-3]
+ * UART0 [11,19]
+ */
+ /* 0 1 2 3 4 5 6 7 8 9 */
+ pin-func = < 3 3 3 3 0 0 0 0 0 0
+ 0 3 0 0 0 0 0 0 0 3 >;
+
+ ap_spi_pins: ap-spi-pins {
+ marvell,pins = < 0 1 2 3 >;
+ marvell,function = <3>;
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&ap_spi0 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&ap_spi_pins>;
+
+ spi-flash@0 {
+ #address-cells = <0x1>;
+ #size-cells = <0x1>;
+ compatible = "jedec,spi-nor";
+ reg = <0x0>;
+ spi-max-frequency = <20000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ /* Empty space on NOR repurposed for U-Boot environment */
+ partition@fe0000 {
+ compatible = "u-boot,env";
+ label = "u-boot-env";
+ reg = <0xfe0000 0x20000>;
+ };
+ };
+ };
+};
+
+&cp0_pinctl {
+ /* MPP Bus:
+ * NF_RBn [13]
+ * DEV_BUS [15-27]
+ * UART0 [29,30]
+ * SMI [35,36]
+ * I2C0 [37,38]
+ * SPI1 [47-50]
+ */
+ /* 0 1 2 3 4 5 6 7 8 9 */
+ pin-func = < 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 2 0 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 0 0xA
+ 0xA 0 0 0 0 8 8 2 2 0
+ 0 0 0 0 0 0 0 5 5 5
+ 5 0 0 0 0 0 0 0 0 0
+ 0 0 0 >;
+
+ cp0_nand_pins: cp0-nand-pins {
+ marvell,pins = < 15 16 17 18 19 20 21 22 23 24 25 26 27 >;
+ marvell,function = <1>;
+ };
+
+ cp0_smi_pins: cp0-smi-pins {
+ marvell,pins = < 35 36 >;
+ marvell,function = <8>;
+ };
+
+ cp0_spi1_pins: cp0-spi-pins-1 {
+ marvell,pins = < 47 48 49 50 >;
+ marvell,function = <5>;
+ };
+};
+
+&cp0_gpio1 {
+ enable-usb-power {
+ gpio-hog;
+ gpios = <23 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "enable USB power";
+ };
+
+ enable-leds-power {
+ gpio-hog;
+ gpios = <27 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "enable LED-s power";
+ };
+};
+
+&cp0_nand {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&cp0_nand_pins>;
+
+ nand-ecc-strength = <4>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "YAFFS";
+ reg = <0x0 0x800000>;
+ };
+
+ partition@800000 {
+ label = "ubi";
+ reg = <0x800000 0x3f800000>;
+ };
+ };
+};
+
+&cp0_usb3_1 {
+ status = "okay";
+};
+
+&cp0_utmi1 {
+ status = "okay";
+};
+
+&cp0_i2c0 {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&cp0_i2c0_pins>;
+ clock-frequency = <100000>;
+};
+
+&cp0_comphy {
+ phy0 {
+ phy-type = <COMPHY_TYPE_UNCONNECTED>;
+ };
+
+ phy1 {
+ phy-type = <COMPHY_TYPE_UNCONNECTED>;
+ };
+
+ phy2 {
+ phy-type = <COMPHY_TYPE_SFI0>;
+ phy-speed = <COMPHY_SPEED_10_3125G>;
+ };
+
+ phy3 {
+ phy-type = <COMPHY_TYPE_USB3_HOST1>;
+ phy-speed = <COMPHY_SPEED_5G>;
+ };
+
+ phy4 {
+ phy-type = <COMPHY_TYPE_UNCONNECTED>;
+ };
+
+ phy5 {
+ phy-type = <COMPHY_TYPE_UNCONNECTED>;
+ };
+};
+
+&cp0_mdio {
+ status = "okay";
+};
+
+&cp0_ethernet {
+ status = "okay";
+};
+
+&cp0_eth0 {
+ status = "okay";
+ phy-mode = "10gbase-r";
+};
--- a/arch/arm/mach-mvebu/arm64-common.c
+++ b/arch/arm/mach-mvebu/arm64-common.c
@@ -62,9 +62,13 @@ __weak int dram_init_banksize(void)
__weak int dram_init(void)
{
if (IS_ENABLED(CONFIG_ARMADA_8K)) {
- gd->ram_size = a8k_dram_scan_ap_sz();
- if (gd->ram_size != 0)
- return 0;
+ if (of_machine_is_compatible("mikrotik,rb5009"))
+ return fdtdec_setup_mem_size_base();
+ else {
+ gd->ram_size = a8k_dram_scan_ap_sz();
+ if (gd->ram_size != 0)
+ return 0;
+ }
}
if (IS_ENABLED(CONFIG_ARMADA_3700))
--- /dev/null
+++ b/board/Marvell/mvebu_armada-8k/mikrotik-rb5009.env
@@ -0,0 +1,52 @@
+openwrt_initramfs=openwrt-mvebu-cortexa72-mikrotik_rb5009-initramfs-uImage.itb
+boot_devices=ubi usb net
+recovery_boot_devices=usb net
+
+button_cmd_0_name=reset
+button_cmd_0=run recovery_bootcmd
+
+recovery_bootcmd=
+ led green:sfp on;
+ led blue:hdr1 on;
+ led blue:hdr2 on;
+
+ for b in ${recovery_boot_devices}; do
+ if test ${b} = usb; then
+ run usbboot;
+ fi;
+ if test ${b} = net; then
+ run netboot;
+ fi;
+ done;
+
+bootcmd=
+ for b in ${boot_devices}; do
+ if test ${b} = ubi; then
+ run ubiboot;
+ fi;
+ if test ${b} = usb; then
+ run usbboot;
+ fi;
+ if test ${b} = net; then
+ run netboot;
+ fi;
+ done;
+
+ubiboot=
+ echo Booting from NAND (UBI);
+ ubi part ubi;
+ setenv loadimagecmd ${ubiloadimage};
+ ubi read ${loadaddr} kernel;
+ bootm ${loadaddr};
+
+usbboot=
+ echo Booting from USB Storage;
+ usb start;
+ load usb 0:1 ${loadaddr} ${openwrt_initramfs};
+ bootm ${loadaddr};
+
+netboot=
+ echo Booting from Network;
+ dhcp;
+ tftpboot ${loadaddr} ${openwrt_initramfs};
+ bootm ${loadaddr};
--- /dev/null
+++ b/configs/mvebu_rb5009_defconfig
@@ -0,0 +1,97 @@
+CONFIG_ARM=y
+CONFIG_ARCH_CPU_INIT=y
+CONFIG_ARCH_MVEBU=y
+CONFIG_TEXT_BASE=0x0
+CONFIG_NR_DRAM_BANKS=2
+CONFIG_ENV_SOURCE_FILE="mikrotik-rb5009"
+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xff0000
+CONFIG_TARGET_MVEBU_ARMADA_8K=y
+CONFIG_ENV_SIZE=0x20000
+CONFIG_ENV_OFFSET=0xfe0000
+CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_DM_GPIO=y
+CONFIG_DEFAULT_DEVICE_TREE="armada-7040-rb5009"
+CONFIG_DEBUG_UART_BASE=0xf0512000
+CONFIG_DEBUG_UART_CLOCK=200000000
+CONFIG_SYS_LOAD_ADDR=0x800000
+CONFIG_DEBUG_UART=y
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_REMAKE_ELF=y
+CONFIG_BUTTON_CMD=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+# CONFIG_BOOTSTD is not set
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOOTDELAY=5
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_LOG=y
+CONFIG_LOG_ERROR_RETURN=y
+# CONFIG_DISPLAY_CPUINFO is not set
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_PXE=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_TIME=y
+CONFIG_CMD_SYSBOOT=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_UBI=y
+CONFIG_EFI_PARTITION=y
+CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_BUTTON=y
+CONFIG_BUTTON_GPIO=y
+CONFIG_GPIO_HOG=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_MVTWSI=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MISC=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_SYS_NAND_USE_FLASH_BBT=y
+CONFIG_NAND_PXA3XX=y
+CONFIG_SYS_NAND_ONFI_DETECTION=y
+CONFIG_SPI_FLASH_SFDP_SUPPORT=y
+CONFIG_SPI_FLASH_WINBOND=y
+# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_PHY_MARVELL=y
+CONFIG_PHY_GIGE=y
+CONFIG_MVPP2=y
+CONFIG_PHY=y
+CONFIG_MVEBU_COMPHY_SUPPORT=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_ARMADA_8K=y
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_SYS_NS16550=y
+CONFIG_KIRKWOOD_SPI=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_RTL8152=y
+CONFIG_YAFFS2=y
+# CONFIG_SHA256 is not set
+# CONFIG_EFI_LOADER is not set