On Sunday, January 6, 2019 5:29:54 PM CET David Bauer wrote: > Hardware > ======== > CPU: Freescale P1010 PowerPC > RAM: 128M DDR3 > NAND: 128MiB > ETH: RTL8211F SGMII PHY > RTL8367B 5-port RGMII switch > (not connected to SoC - unmanaged) > WiFi: SparkLan WPEA-121N > - Atheros AR9382 2T2R abgn > USB: 1x USB 2.0 > LED: System, Router, Internet, Tunnel controllable > LAN1-4, WAN, Power non-controllable > BTN: None > > Installation > ============ > 1. Power on the device while attached to the Console port. > > 2. Halt the U-Boot by pressing Enter when prompted. > > 3. Set the correct bootcmd for booting OpenWRT: > > setenv bootargs_owrt "setenv bootargs console=ttyS0,115200" > > setenv bootcmd "run bootargs_owrt; > nand read 0x1000000 0x300000 0x800000; > bootm 0x1000000;" > > saveenv > > 5. Rename OpenWRT initramfs image to 'kernel.bin' and place it in a > TFTP server root-directory served on 192.168.1.2/24. Connect your > computer to one of the LAN-ports. > > 4. Boot OpenWRT initramfs image with > > run bootargs_owrt; tftpboot 0x1000000 192.168.1.2:kernel.bin; > bootm 0x1000000; > > 6. (Optional) > Make a Backup of 'sophos-os1', 'sophos-os2' and 'sophos-data' in case > you ever want to go back to the vendor firmware. > > 7. Create Ubi Volume on mtd4 by executing > > ubiformat /dev/mtd4 -y > > 8. Transfer OpenWRT sysupgrade image to the device via SCP and install it > with > > sysupgrade -n <openwrt-image-file> > > Back to Stock > ============= > If you want to go back to the stock firmware, here is the bootcmd of the > vendor firmware: > > setenv bootargs console=ttyS0,115200 root=/dev/mtdblock5; > nand read 0xc00000 0x00300000 0x100000; > nand read 0x1000000 0x00400000 0x00800000; > bootm 0x1000000 - 0xc00000 > > Set it via 'setenv' from the U-Boot shell and don't forget to save it > using 'saveenv'! > > After this, boot the OpenWRT initramfs image just like you would for > installation. Write back the three vendor partitions using mtd. Reboot > the device afterwards. > > Signed-off-by: David Bauer <m...@david-bauer.net> > --- > diff --git a/target/linux/mpc85xx/config-4.14 > b/target/linux/mpc85xx/config-4.14 > index 5bed475664..e81ff1cda0 100644 > --- a/target/linux/mpc85xx/config-4.14 > +++ b/target/linux/mpc85xx/config-4.14 > @@ -88,6 +88,7 @@ CONFIG_ETHERNET_PACKET_MANGLE=y > CONFIG_FIXED_PHY=y > # CONFIG_FORCE_SMP is not set > CONFIG_FSL_BOOKE=y > +# CONFIG_FSL_CORENET_CF is not set > # CONFIG_FSL_DPAA is not set > CONFIG_FSL_EMB_PERFMON=y > # CONFIG_FSL_FMAN is not set > @@ -213,7 +214,16 @@ CONFIG_MPIC_TIMER=y > CONFIG_MPILIB=y > # CONFIG_MTD_CFI is not set > CONFIG_MTD_M25P80=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_ECC=y > +CONFIG_MTD_NAND_FSL_IFC=y > CONFIG_MTD_SPI_NOR=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_MVME2500 is not set > # CONFIG_NEED_DMA_MAP_STATE is not set > # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set > @@ -306,6 +316,8 @@ CONFIG_QUICC_ENGINE=y > CONFIG_RAS=y > # CONFIG_RCU_NEED_SEGCBLIST is not set > # CONFIG_RCU_STALL_COMMON is not set > +CONFIG_REALTEK_PHY=y > +CONFIG_RED_15W_REV1=y > CONFIG_REGMAP=y > CONFIG_REGMAP_I2C=y > CONFIG_REGMAP_SPI=y > @@ -348,6 +360,10 @@ CONFIG_TINY_SRCU=y > # CONFIG_TQM8555 is not set > # CONFIG_TQM8560 is not set > # CONFIG_TWR_P102x is not set > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_UBIFS_FS_LZO=y > +CONFIG_UBIFS_FS_ZLIB=y > CONFIG_UCC=y > CONFIG_UCC_FAST=y > CONFIG_UCC_GETH=y Since you add this new device as a subtarget of generic, why not just add the REALTEK_PHY, NAND, UBI + UBIFS support into target/linux/mpc85xx/generic/config-default ? This way you won't need to patch target/linux/mpc85xx/config-4.14 and target/linux/mpc85xx/config-4.19 as much and the HiveAP 330 does not end up with stuff it doesn't need.
(The nand feature can also be placed into generic/target.mk)? (However, make sure to add the # CONFIG_RED_15W_REV1 is not set to the config-4.14 and config-4.19) > diff --git a/target/linux/mpc85xx/config-4.19 > b/target/linux/mpc85xx/config-4.19 > index 0aaefe84ea..63cd5c6c01 100644 > --- a/target/linux/mpc85xx/config-4.19 > +++ b/target/linux/mpc85xx/config-4.19 > @@ -86,6 +86,7 @@ CONFIG_ETHERNET_PACKET_MANGLE=y > # CONFIG_FHCI_DEBUG is not set > CONFIG_FIXED_PHY=y > CONFIG_FSL_BOOKE=y > +# CONFIG_FSL_CORENET_CF is not set > # CONFIG_FSL_DPAA is not set > CONFIG_FSL_EMB_PERFMON=y > # CONFIG_FSL_FMAN is not set > @@ -199,7 +200,16 @@ CONFIG_MPIC_TIMER=y > CONFIG_MPILIB=y > # CONFIG_MTD_CFI is not set > CONFIG_MTD_M25P80=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_ECC=y > +CONFIG_MTD_NAND_FSL_IFC=y > CONFIG_MTD_SPI_NOR=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_MVME2500 is not set > CONFIG_NEED_PER_CPU_KM=y > CONFIG_NEED_SG_DMA_LENGTH=y > @@ -269,6 +279,8 @@ CONFIG_QE_GPIO=y > CONFIG_QE_USB=y > CONFIG_QUICC_ENGINE=y > CONFIG_RAS=y > +CONFIG_REALTEK_PHY=y > +CONFIG_RED_15W_REV1=y > CONFIG_REGMAP=y > CONFIG_REGMAP_I2C=y > CONFIG_REGMAP_SPI=y > @@ -309,6 +321,10 @@ CONFIG_TINY_SRCU=y > # CONFIG_TQM8555 is not set > # CONFIG_TQM8560 is not set > # CONFIG_TWR_P102x is not set > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_UBIFS_FS_LZO=y > +CONFIG_UBIFS_FS_ZLIB=y > CONFIG_UCC=y > CONFIG_UCC_FAST=y > CONFIG_UCC_GETH=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..06b206a73d > --- /dev/null > +++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts > @@ -0,0 +1,203 @@ > +// 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 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "fsl,ifc-nand"; > + reg = <0x1 0x0 0x10000>; > + > + /* > + * 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" > + */ > + Does the u-boot mess with the partition in some ways? If not, can you please move all the partitions into a partitions sub-node with "fixed-partition" compatible? The partitions as direct subnodes of the flash device is discouraged. <https://www.kernel.org/doc/Documentation/devicetree/bindings/mtd/partition.txt> > + 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..85af7dcbcb > --- /dev/null > +++ b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/red15w_rev1.c > @@ -0,0 +1,85 @@ > +/* Just in case: can you please add a "SPDX-License-Identifier"? "The Linux kernel requires the precise SPDX identifier in all source files." (From Documentation/process/license-rules.rst) > + * Sophos RED 15w Rev.1 Board Setup > + * > + * Copyright (C) 2019 David Bauer <m...@david-bauer.net> > + * > + * 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 <linux/stddef.h> > +#include <linux/kernel.h> > +#include <linux/delay.h> > +#include <linux/interrupt.h> > +#include <linux/of_platform.h> > + > +#include <asm/time.h> > +#include <asm/machdep.h> > +#include <asm/pci-bridge.h> > +#include <mm/mmu_decl.h> > +#include <asm/prom.h> > +#include <asm/udbg.h> > +#include <asm/mpic.h> > + > +#include <sysdev/fsl_soc.h> > +#include <sysdev/fsl_pci.h> > + > +#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(); > + > + printk(KERN_INFO "RED 15w Rev.1 from Sophos\n"); "pr_info("...");" is the latest craze ;). > +} > + > +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/image/Makefile > b/target/linux/mpc85xx/image/Makefile > index 00eed88874..0c249a5131 100644 > --- a/target/linux/mpc85xx/image/Makefile > +++ b/target/linux/mpc85xx/image/Makefile > @@ -57,6 +57,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/104-powerpc-85xx-red-15w-rev1.patch > b/target/linux/mpc85xx/patches-4.14/104-powerpc-85xx-red-15w-rev1.patch > new file mode 100644 > index 0000000000..452a6cd490 > --- /dev/null > +++ b/target/linux/mpc85xx/patches-4.14/104-powerpc-85xx-red-15w-rev1.patch > @@ -0,0 +1,33 @@ > +Index: linux-4.14.90/arch/powerpc/platforms/85xx/Kconfig > +=================================================================== > +--- linux-4.14.90.orig/arch/powerpc/platforms/85xx/Kconfig > ++++ linux-4.14.90/arch/powerpc/platforms/85xx/Kconfig > +@@ -173,6 +173,16 @@ config XES_MPC85xx > + Manufacturer: Extreme Engineering Solutions, Inc. > + URL: <http://www.xes-inc.com/> > + > ++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 > +Index: linux-4.14.90/arch/powerpc/platforms/85xx/Makefile > +=================================================================== > +--- linux-4.14.90.orig/arch/powerpc/platforms/85xx/Makefile > ++++ linux-4.14.90/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..2e103fd1b3 > --- /dev/null > +++ b/target/linux/mpc85xx/patches-4.19/103-powerpc-85xx-red-15w-rev1.patch > @@ -0,0 +1,33 @@ > +Index: linux-4.14.90/arch/powerpc/platforms/85xx/Kconfig > +=================================================================== > +--- linux-4.14.90.orig/arch/powerpc/platforms/85xx/Kconfig > ++++ linux-4.14.90/arch/powerpc/platforms/85xx/Kconfig > +@@ -173,6 +173,16 @@ config XES_MPC85xx > + Manufacturer: Extreme Engineering Solutions, Inc. > + URL: <http://www.xes-inc.com/> > + > ++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 > +Index: linux-4.14.90/arch/powerpc/platforms/85xx/Makefile > +=================================================================== > +--- linux-4.14.90.orig/arch/powerpc/platforms/85xx/Makefile > ++++ linux-4.14.90/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 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel