diff --git a/target/linux/mpc85xx/Makefile b/target/linux/mpc85xx/Makefile index 799f0f54dd..370ef81f15 100644 --- a/target/linux/mpc85xx/Makefile +++ b/target/linux/mpc85xx/Makefile @@ -10,7 +10,7 @@ ARCH:=powerpc BOARD:=mpc85xx BOARDNAME:=Freescale MPC85xx CPU_TYPE:=8540 -FEATURES:=squashfs +FEATURES:=squashfs ramdisk MAINTAINER:=Imre Kaloz SUBTARGETS:=generic p1020 p2020 diff --git a/target/linux/mpc85xx/base-files/etc/diag.sh b/target/linux/mpc85xx/base-files/etc/diag.sh index 3d56d14b08..e344d4b756 100644 --- a/target/linux/mpc85xx/base-files/etc/diag.sh +++ b/target/linux/mpc85xx/base-files/etc/diag.sh @@ -9,6 +9,9 @@ get_status_led() { aerohive,hiveap-330) status_led="hiveap-330:green:tricolor0" ;; + sophos,red-15w-rev1) + status_led="red-15w-rev1:green:system" + ;; tplink,tl-wdr4900-v1) status_led="tp-link:blue:system" ;; diff --git a/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac b/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac new file mode 100644 index 0000000000..3092cebfc9 --- /dev/null +++ b/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac @@ -0,0 +1,20 @@ +#!/bin/ash + +[ "$ACTION" == "add" ] || exit 0 + +PHYNBR=${DEVPATH##*/phy} + +[ -n $PHYNBR ] || exit 0 + +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(board_name) + +case "$board" in +sophos,red-15w-rev1) + echo $(mtd_get_mac_ascii u-boot-env ethaddr) > /sys${DEVPATH}/macaddress + ;; +*) + ;; +esac diff --git a/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh b/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh index 1108b3fd6e..9f49d0ddce 100755 --- a/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh @@ -9,4 +9,15 @@ platform_check_image() { return 0 } -# use default for platform_do_upgrade() +platform_do_upgrade() { + local board=$(board_name) + + case "$board" in + sophos,red-15w-rev1) + nand_do_upgrade "$ARGV" + ;; + *) + default_do_upgrade "$ARGV" + ;; + esac +} diff --git a/target/linux/mpc85xx/config-4.14 b/target/linux/mpc85xx/config-4.14 index 5bed475664..b60133e30e 100644 --- a/target/linux/mpc85xx/config-4.14 +++ b/target/linux/mpc85xx/config-4.14 @@ -306,6 +306,7 @@ CONFIG_QUICC_ENGINE=y CONFIG_RAS=y # CONFIG_RCU_NEED_SEGCBLIST is not set # CONFIG_RCU_STALL_COMMON is not set +# CONFIG_RED_15W_REV1 is not set CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y diff --git a/target/linux/mpc85xx/config-4.19 b/target/linux/mpc85xx/config-4.19 index 0aaefe84ea..006a9d34c4 100644 --- a/target/linux/mpc85xx/config-4.19 +++ b/target/linux/mpc85xx/config-4.19 @@ -269,6 +269,7 @@ CONFIG_QE_GPIO=y CONFIG_QE_USB=y CONFIG_QUICC_ENGINE=y CONFIG_RAS=y +# CONFIG_RED_15W_REV1 is not set CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts new file mode 100644 index 0000000000..600426bb6e --- /dev/null +++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: GPL-2.0-or-later or MIT + +/include/ "fsl/p1010si-pre.dtsi" + +/ { + model = "Sophos RED 15w Rev.1"; + compatible = "sophos,red-15w-rev1"; + + memory { + device_type = "memory"; + }; + + leds { + compatible = "gpio-leds"; + + system_green { + gpios = <&gpio0 7 0>; + label = "red-15w-rev1:green:system"; + }; + + system_red { + gpios = <&gpio0 3 0>; + label = "red-15w-rev1:red:system"; + }; + + router { + gpios = <&gpio0 5 1>; + label = "red-15w-rev1:green:router"; + }; + + internet { + gpios = <&gpio0 4 1>; + label = "red-15w-rev1:green:internet"; + }; + + tunnel { + gpios = <&gpio0 8 1>; + label = "red-15w-rev1:green:tunnel"; + }; + }; + + soc: soc@ffe00000 { + ranges = <0x0 0x0 0xffe00000 0x100000>; + + i2c@3000 { + eeprom@50 { + compatible = "st,24c256"; + reg = <0x50>; + }; + }; + + i2c@3100 { + eeprom@52 { + compatible = "atmel,24c01"; + reg = < 0x52 >; + }; + }; + + gpio0: gpio-controller@fc00 { + }; + + usb@22000 { + phy_type = "utmi"; + dr_mode = "host"; + }; + + mdio@24000 { + phy0: ethernet-phy@0 { + reg = <0x0>; + }; + }; + + mdio@25000 { + tbi_phy: tbi-phy@11 { + reg = <0x11>; + }; + }; + + mdio@26000 { + status = "disabled"; + }; + + enet0: ethernet@b0000 { + phy-connection-type = "rgmii-id"; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + enet1: ethernet@b1000 { + phy-handle = <&phy0>; + phy-connection-type = "sgmii"; + + tbi-handle = <&tbi_phy>; + }; + + enet2: ethernet@b2000 { + status = "disabled"; + }; + + sdhc@2e000 { + status = "disabled"; + }; + }; + + ifc: ifc@ffe1e000 { + reg = <0x0 0xffe1e000 0 0x2000>; + + /* NOR, NAND Flashes and CPLD on board */ + ranges = <0x0 0x0 0x0 0xee000000 0x02000000 + 0x1 0x0 0x0 0xff800000 0x00010000 + 0x3 0x0 0x0 0xffb00000 0x00000020>; + + nand@1,0 { + compatible = "fsl,ifc-nand"; + reg = <0x1 0x0 0x10000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* + * Original partition layout: + * 0x000000000000-0x000000100000 : "NAND U-Boot Image" + * 0x000000100000-0x000000200000 : "NAND U-Boot Environment" + * 0x000000200000-0x000000300000 : "Provisioning" + * - OS-Image 1 + * 0x000000300000-0x000000400000 : "fdt1" + * 0x000000400000-0x000000c00000 : "uimage1" + * 0x000000c00000-0x000001c00000 : "rootfs1" + * - OS-Image 2 + * 0x000001c00000-0x000001d00000 : "fdt2" + * 0x000001d00000-0x000002500000 : "uimage2" + * 0x000002500000-0x000003500000 : "rootfs2" + * - Empty + * 0x000003500000-0x000008000000 : "data" + */ + + partition@0 { + reg = <0x0 0x100000>; + label = "u-boot"; + read-only; + }; + + partition@100000 { + reg = <0x100000 0x100000>; + label = "u-boot-env"; + }; + + partition@200000 { + reg = <0x200000 0x100000>; + label = "provisioning"; + read-only; + }; + + partition@300000 { + reg = <0x300000 0x800000>; + label = "kernel"; + }; + + partition@b00000 { + reg = <0xb00000 0x7500000>; + label = "ubi"; + }; + + oem-partition@300000 { + reg = <0x300000 0x1900000>; + label = "sophos-os1"; + }; + + oem-partition@1c00000 { + reg = <0x1c00000 0x1900000>; + label = "sophos-os2"; + }; + + oem-partition@3500000 { + reg = <0x3500000 0x4b00000>; + label = "sophos-data"; + }; + }; + }; + }; + + pci0: pcie@ffe09000 { + status = "disabled"; + }; + + pci1: pcie@ffe0a000 { + reg = <0 0xffe0a000 0 0x1000>; + ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 + 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; + pcie@0 { + ranges = <0x2000000 0x0 0x80000000 + 0x2000000 0x0 0x80000000 + 0x0 0x20000000 + + 0x1000000 0x0 0x0 + 0x1000000 0x0 0x0 + 0x0 0x100000>; + }; + }; +}; + +/include/ "fsl/p1010si-post.dtsi" diff --git a/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/red15w_rev1.c b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/red15w_rev1.c new file mode 100644 index 0000000000..6669d5a57e --- /dev/null +++ b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/red15w_rev1.c @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: GPL-2.0+ + +/* + * Sophos RED 15w Rev.1 Board Setup + * + * Copyright (C) 2019 David Bauer + * + * Based on: + * p1010rdb.c: + * P1010 RDB Board Setup + * Copyright 2011 Freescale Semiconductor Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "mpc85xx.h" + +void __init red_15w_rev1_pic_init(void) +{ + struct mpic *mpic; + + mpic = mpic_alloc(NULL, 0, + MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU, + 0, 256, " OpenPIC "); + + BUG_ON(mpic == NULL); + mpic_init(mpic); +} + +/* + * Setup the architecture + */ +static void __init red_15w_rev1_setup_arch(void) +{ + if (ppc_md.progress) + ppc_md.progress("red_15w_rev1_setup_arch()", 0); + + fsl_pci_assign_primary(); + + pr_info("RED 15w Rev.1 from Sophos\n"); +} + +machine_arch_initcall(red_15w_rev1, mpc85xx_common_publish_devices); + +/* + * Called very early, device-tree isn't unflattened + */ +static int __init red_15w_rev1_probe(void) +{ + if (of_machine_is_compatible("sophos,red-15w-rev1")) + return 1; + return 0; +} + +define_machine(red_15w_rev1) { + .name = "P1010 RDB", + .probe = red_15w_rev1_probe, + .setup_arch = red_15w_rev1_setup_arch, + .init_IRQ = red_15w_rev1_pic_init, +#ifdef CONFIG_PCI + .pcibios_fixup_bus = fsl_pcibios_fixup_bus, + .pcibios_fixup_phb = fsl_pcibios_fixup_phb, +#endif + .get_irq = mpic_get_irq, + .calibrate_decr = generic_calibrate_decr, + .progress = udbg_progress, +}; diff --git a/target/linux/mpc85xx/generic/config-default b/target/linux/mpc85xx/generic/config-default index 1e5b257b45..c38ffce92f 100644 --- a/target/linux/mpc85xx/generic/config-default +++ b/target/linux/mpc85xx/generic/config-default @@ -1,3 +1,19 @@ +# CONFIG_FSL_CORENET_CF is not set +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_FSL_IFC=y CONFIG_MTD_SPLIT_FIRMWARE=y CONFIG_MTD_SPLIT_TPLINK_FW=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_BLOCK=y +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_REALTEK_PHY=y +CONFIG_RED_15W_REV1=y CONFIG_TL_WDR4900_V1=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y diff --git a/target/linux/mpc85xx/generic/target.mk b/target/linux/mpc85xx/generic/target.mk index 2620a22899..82e2b63026 100644 --- a/target/linux/mpc85xx/generic/target.mk +++ b/target/linux/mpc85xx/generic/target.mk @@ -1,4 +1,5 @@ BOARDNAME:=Generic +FEATURES+=nand KERNELNAME:=cuImage.tl-wdr4900-v1 define Target/Description diff --git a/target/linux/mpc85xx/image/Makefile b/target/linux/mpc85xx/image/Makefile index 7cbf733852..e803cabcbe 100644 --- a/target/linux/mpc85xx/image/Makefile +++ b/target/linux/mpc85xx/image/Makefile @@ -58,6 +58,18 @@ define Device/tl-wdr4900-v1 endef TARGET_DEVICES += tl-wdr4900-v1 +define Device/red-15w-rev1 + DEVICE_TITLE := Sophos RED 15w Rev.1 + DEVICE_PACKAGES := kmod-usb2 + # Original firmware uses a dedicated DTB-partition. + # The bootloader however supports FIT-images. + KERNEL = kernel-bin | gzip | fit gzip $(KDIR)/image-$$(DEVICE_DTS).dtb + SUPPORTED_DEVICES := sophos,red-15w-rev1 + IMAGES := sysupgrade.bin + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata +endef +TARGET_DEVICES += red-15w-rev1 + endif ifeq ($(SUBTARGET),p1020) diff --git a/target/linux/mpc85xx/p1020/target.mk b/target/linux/mpc85xx/p1020/target.mk index 5d84d83205..000fc64644 100644 --- a/target/linux/mpc85xx/p1020/target.mk +++ b/target/linux/mpc85xx/p1020/target.mk @@ -1,5 +1,4 @@ BOARDNAME:=P1020 -FEATURES += ramdisk define Target/Description Build firmware images for Freescale P1020 based boards. diff --git a/target/linux/mpc85xx/patches-4.14/105-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-4.14/105-powerpc-85xx-red-15w-rev1.patch new file mode 100644 index 0000000000..42bcd58de0 --- /dev/null +++ b/target/linux/mpc85xx/patches-4.14/105-powerpc-85xx-red-15w-rev1.patch @@ -0,0 +1,29 @@ +--- a/arch/powerpc/platforms/85xx/Kconfig ++++ b/arch/powerpc/platforms/85xx/Kconfig +@@ -173,6 +173,16 @@ config XES_MPC85xx + Manufacturer: Extreme Engineering Solutions, Inc. + URL: + ++config RED_15W_REV1 ++ bool "Sophos RED 15w Rev.1" ++ select DEFAULT_UIMAGE ++ select ARCH_REQUIRE_GPIOLIB ++ select GPIO_MPC8XXX ++ help ++ This option enables support for the SOPHOS RED 15w Rev.1 board. ++ ++ This board is a wireless VPN router with a Freescale P1010 SoC. ++ + config STX_GP3 + bool "Silicon Turnkey Express GP3" + help +--- a/arch/powerpc/platforms/85xx/Makefile ++++ b/arch/powerpc/platforms/85xx/Makefile +@@ -25,6 +25,7 @@ obj-$(CONFIG_P1023_RDB) += p1023_rdb.o + obj-$(CONFIG_TWR_P102x) += twr_p102x.o + obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o + obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o ++obj-$(CONFIG_RED_15W_REV1) += red15w_rev1.o + obj-$(CONFIG_STX_GP3) += stx_gp3.o + obj-$(CONFIG_TQM85xx) += tqm85xx.o + obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o diff --git a/target/linux/mpc85xx/patches-4.19/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-4.19/103-powerpc-85xx-red-15w-rev1.patch new file mode 100644 index 0000000000..b84a56659c --- /dev/null +++ b/target/linux/mpc85xx/patches-4.19/103-powerpc-85xx-red-15w-rev1.patch @@ -0,0 +1,29 @@ +--- a/arch/powerpc/platforms/85xx/Kconfig ++++ b/arch/powerpc/platforms/85xx/Kconfig +@@ -173,6 +173,16 @@ config XES_MPC85xx + Manufacturer: Extreme Engineering Solutions, Inc. + URL: + ++config RED_15W_REV1 ++ bool "Sophos RED 15w Rev.1" ++ select DEFAULT_UIMAGE ++ select ARCH_REQUIRE_GPIOLIB ++ select GPIO_MPC8XXX ++ help ++ This option enables support for the Sophos RED 15w Rev.1 board. ++ ++ This board is a wireless VPN router with a Freescale P1010 SoC. ++ + config STX_GP3 + bool "Silicon Turnkey Express GP3" + help +--- a/arch/powerpc/platforms/85xx/Makefile ++++ b/arch/powerpc/platforms/85xx/Makefile +@@ -25,6 +25,7 @@ obj-$(CONFIG_P1023_RDB) += p1023_rdb.o + obj-$(CONFIG_TWR_P102x) += twr_p102x.o + obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o + obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o ++obj-$(CONFIG_RED_15W_REV1) += red15w_rev1.o + obj-$(CONFIG_STX_GP3) += stx_gp3.o + obj-$(CONFIG_TQM85xx) += tqm85xx.o + obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o