diff options
author | Christian Lamparter <chunkeey@gmail.com> | 2019-01-29 23:52:27 +0100 |
---|---|---|
committer | Christian Lamparter <chunkeey@gmail.com> | 2019-06-10 11:21:35 +0200 |
commit | 1e41de2f48e284c9d6658f9403365651178f6826 (patch) | |
tree | 90d34b3f3846e72374beb796576ade2951736274 /target/linux/mpc85xx | |
parent | 452d88e8f798c550151cd1e1d204a528fb00db08 (diff) | |
download | upstream-1e41de2f48e284c9d6658f9403365651178f6826.tar.gz upstream-1e41de2f48e284c9d6658f9403365651178f6826.tar.bz2 upstream-1e41de2f48e284c9d6658f9403365651178f6826.zip |
mpc85xx: convert TL-WDR4900 v1 to simpleImage
Converts the TP-Link WDR4900 v1 to use the simpleImage in the
hopes of prolonging the life of the device. While at it,
the patch makes the fdt.bin an ARTIFACT and sets the KERNEL_SIZE
to 2684 KiB as a precaution since the stock u-boot is using a
fixed kernel size.
Note: Give the image some time, it will take much longer to
extract and boot.
[tested for 4.14/4.19]
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Co-authored-by: Pawel Dembicki <paweldembicki@gmail.com>
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Diffstat (limited to 'target/linux/mpc85xx')
6 files changed, 106 insertions, 212 deletions
diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/cuboot-tl-wdr4900-v1.c b/target/linux/mpc85xx/files/arch/powerpc/boot/cuboot-tl-wdr4900-v1.c deleted file mode 100644 index 17459eface..0000000000 --- a/target/linux/mpc85xx/files/arch/powerpc/boot/cuboot-tl-wdr4900-v1.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * U-Boot compatibility wrapper for the TP-Link TL-WDR4900 v1 board - * - * Copyright (c) 2013 Gabor Juhos <juhosg@openwrt.org> - * - * Based on: - * cuboot-85xx.c - * Author: Scott Wood <scottwood@freescale.com> - * Copyright (c) 2007 Freescale Semiconductor, Inc. - * - * simpleboot.c - * Authors: Scott Wood <scottwood@freescale.com> - * Grant Likely <grant.likely@secretlab.ca> - * Copyright (c) 2007 Freescale Semiconductor, Inc. - * Copyright (c) 2008 Secret Lab Technologies Ltd. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation. - */ - -#include "ops.h" -#include "types.h" -#include "io.h" -#include "stdio.h" -#include <libfdt.h> - -BSS_STACK(4*1024); - -static unsigned long bus_freq; -static unsigned long int_freq; -static u64 mem_size; -static unsigned char enetaddr[6]; - -static void process_boot_dtb(void *boot_dtb) -{ - const u32 *na, *ns, *reg, *val32; - const char *path; - u64 memsize64; - int node, size, i; - - /* Make sure FDT blob is sane */ - if (fdt_check_header(boot_dtb) != 0) - fatal("Invalid device tree blob\n"); - - /* Find the #address-cells and #size-cells properties */ - node = fdt_path_offset(boot_dtb, "/"); - if (node < 0) - fatal("Cannot find root node\n"); - na = fdt_getprop(boot_dtb, node, "#address-cells", &size); - if (!na || (size != 4)) - fatal("Cannot find #address-cells property"); - - ns = fdt_getprop(boot_dtb, node, "#size-cells", &size); - if (!ns || (size != 4)) - fatal("Cannot find #size-cells property"); - - /* Find the memory range */ - node = fdt_node_offset_by_prop_value(boot_dtb, -1, "device_type", - "memory", sizeof("memory")); - if (node < 0) - fatal("Cannot find memory node\n"); - reg = fdt_getprop(boot_dtb, node, "reg", &size); - if (size < (*na+*ns) * sizeof(u32)) - fatal("cannot get memory range\n"); - - /* Only interested in memory based at 0 */ - for (i = 0; i < *na; i++) - if (*reg++ != 0) - fatal("Memory range is not based at address 0\n"); - - /* get the memsize and trucate it to under 4G on 32 bit machines */ - memsize64 = 0; - for (i = 0; i < *ns; i++) - memsize64 = (memsize64 << 32) | *reg++; - if (sizeof(void *) == 4 && memsize64 >= 0x100000000ULL) - memsize64 = 0xffffffff; - - mem_size = memsize64; - - /* get clock frequencies */ - node = fdt_node_offset_by_prop_value(boot_dtb, -1, "device_type", - "cpu", sizeof("cpu")); - if (!node) - fatal("Cannot find cpu node\n"); - - val32 = fdt_getprop(boot_dtb, node, "clock-frequency", &size); - if (!val32 || (size != 4)) - fatal("Cannot get clock frequency"); - - int_freq = *val32; - - val32 = fdt_getprop(boot_dtb, node, "bus-frequency", &size); - if (!val32 || (size != 4)) - fatal("Cannot get bus frequency"); - - bus_freq = *val32; - - path = fdt_get_alias(boot_dtb, "ethernet0"); - if (path) { - const void *p; - - node = fdt_path_offset(boot_dtb, path); - if (node < 0) - fatal("Cannot find ethernet0 node"); - - p = fdt_getprop(boot_dtb, node, "mac-address", &size); - if (!p || (size < 6)) { - printf("no mac-address property, finding local\n\r"); - p = fdt_getprop(boot_dtb, node, "local-mac-address", &size); - } - - if (!p || (size < 6)) - fatal("cannot get MAC addres"); - - memcpy(enetaddr, p, sizeof(enetaddr)); - } -} - -static void platform_fixups(void) -{ - void *soc, *mpic; - - dt_fixup_memory(0, mem_size); - - dt_fixup_mac_address_by_alias("ethernet0", enetaddr); - dt_fixup_cpu_clocks(int_freq, bus_freq / 8, bus_freq); - - /* Unfortunately, the specific model number is encoded in the - * soc node name in existing dts files -- once that is fixed, - * this can do a simple path lookup. - */ - soc = find_node_by_devtype(NULL, "soc"); - if (soc) { - void *serial = NULL; - - setprop(soc, "bus-frequency", &bus_freq, sizeof(bus_freq)); - - while ((serial = find_node_by_devtype(serial, "serial"))) { - if (get_parent(serial) != soc) - continue; - - setprop(serial, "clock-frequency", &bus_freq, - sizeof(bus_freq)); - } - } - - mpic = find_node_by_compatible(NULL, "fsl,mpic"); - if (mpic) - setprop(mpic, "clock-frequency", &bus_freq, sizeof(bus_freq)); -} - -void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, - unsigned long r6, unsigned long r7) -{ - mem_size = 64 * 1024 * 1024; - - simple_alloc_init(_end, mem_size - (u32)_end - 1024*1024, 32, 64); - - fdt_init(_dtb_start); - serial_console_init(); - - printf("\n\r-- TL-WDR4900 v1 boot wrapper --\n\r"); - - process_boot_dtb((void *) r3); - - platform_ops.fixups = platform_fixups; -} diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts index ab4952aad5..f9fdfc6465 100644 --- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts +++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts @@ -236,6 +236,36 @@ /include/ "fsl/p1010si-post.dtsi" +/ { + cpus { + PowerPC,P1010@0 { + bus-frequency = <399999996>; + timebase-frequency = <49999999>; + clock-frequency = <799999992>; + }; + }; + + memory { + reg = <0x0 0x0 0x0 0x8000000>; + }; + + soc@ffe00000 { + bus-frequency = <399999996>; + + serial@4600 { + clock-frequency = <399999996>; + }; + + serial@4500 { + clock-frequency = <399999996>; + }; + + pic@40000 { + clock-frequency = <399999996>; + }; + }; +}; + /* * The TL-WDR4900 v1 uses the NXP (Freescale) P1014 SoC which is closely * related to the P1010. diff --git a/target/linux/mpc85xx/generic/target.mk b/target/linux/mpc85xx/generic/target.mk index 82e2b63026..f826fe4d15 100644 --- a/target/linux/mpc85xx/generic/target.mk +++ b/target/linux/mpc85xx/generic/target.mk @@ -1,6 +1,6 @@ BOARDNAME:=Generic FEATURES+=nand -KERNELNAME:=cuImage.tl-wdr4900-v1 +KERNELNAME:=simpleImage.tl-wdr4900-v1 define Target/Description Build firmware images for generic MPC85xx based boards. diff --git a/target/linux/mpc85xx/image/Makefile b/target/linux/mpc85xx/image/Makefile index f95e38d5c6..4bd4efc747 100644 --- a/target/linux/mpc85xx/image/Makefile +++ b/target/linux/mpc85xx/image/Makefile @@ -52,11 +52,15 @@ define Device/tl-wdr4900-v1 TPLINK_HWREV := 1 TPLINK_FLASHLAYOUT := 16Mppc KERNEL_SIZE := 2684k - KERNEL_NAME := cuImage.tl-wdr4900-v1 + KERNEL_NAME := simpleImage.tl-wdr4900-v1 KERNEL_INITRAMFS := + KERNEL := kernel-bin | uImage none + KERNEL_ENTRY := 0x1000000 + KERNEL_LOADADDR := 0x1000000 SUPPORTED_DEVICES:=tl-wdr4900-v1 tplink,tl-wdr4900-v1 + ARTIFACTS := fdt.bin + ARTIFACT/fdt.bin := append-dtb IMAGES := fdt.bin factory.bin sysupgrade.bin - IMAGE/fdt.bin := append-dtb IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade | append-metadata IMAGE/factory.bin := append-rootfs | mktplinkfw factory endef diff --git a/target/linux/mpc85xx/patches-4.14/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-4.14/100-powerpc-85xx-tl-wdr4900-v1-support.patch index 0fbb16f3bd..f74ed6fd8a 100644 --- a/target/linux/mpc85xx/patches-4.14/100-powerpc-85xx-tl-wdr4900-v1-support.patch +++ b/target/linux/mpc85xx/patches-4.14/100-powerpc-85xx-tl-wdr4900-v1-support.patch @@ -1,4 +1,4 @@ -From 406d86e5990ac171f18ef6e2973672d8fbfe1556 Mon Sep 17 00:00:00 2001 +From 53bc6ae5da3b2902581c30ac2568f51ce35e7624 Mon Sep 17 00:00:00 2001 From: Gabor Juhos <juhosg@openwrt.org> Date: Wed, 20 Feb 2013 08:40:33 +0100 Subject: [PATCH] powerpc: 85xx: add support for the TP-Link TL-WDR4900 v1 @@ -9,44 +9,53 @@ concurrent dual-band wireless router. The devices uses the Freescale P1014 SoC. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> +Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> --- - arch/powerpc/boot/Makefile | 3 + - arch/powerpc/boot/wrapper | 4 + - arch/powerpc/platforms/85xx/Kconfig | 11 ++ - arch/powerpc/platforms/85xx/Makefile | 1 + + arch/powerpc/boot/Makefile | 3 ++- + arch/powerpc/boot/wrapper | 5 +++++ + arch/powerpc/platforms/85xx/Kconfig | 11 +++++++++++ + arch/powerpc/platforms/85xx/Makefile | 1 + + 4 files changed, 19 insertions(+), 1 deletion(-) +diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile +index e2a5a932c24a..925140f8350b 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile -@@ -156,6 +156,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie +@@ -156,6 +156,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c -+src-plat-$(CONFIG_TL_WDR4900_V1) += cuboot-tl-wdr4900-v1.c ++src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S src-wlib := $(sort $(src-wlib-y)) src-plat := $(sort $(src-plat-y)) -@@ -335,7 +336,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm +@@ -335,7 +336,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm8555 image-$(CONFIG_TQM8560) += cuImage.tqm8560 image-$(CONFIG_SBC8548) += cuImage.sbc8548 image-$(CONFIG_KSI8560) += cuImage.ksi8560 - -+image-$(CONFIG_TL_WDR4900_V1) += cuImage.tl-wdr4900-v1 ++image-$(CONFIG_TL_WDR4900_V1) += simpleImage.tl-wdr4900-v1 # Board ports in arch/powerpc/platform/86xx/Kconfig image-$(CONFIG_MVME7100) += dtbImage.mvme7100 +diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper +index 76fe3ccfd381..96fd853a1ed0 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -277,6 +277,10 @@ cuboot*) - *-mpc85*|*-tqm85*|*-sbc85*) - platformo=$object/cuboot-85xx.o - ;; -+ *-tl-wdr4900-v1) -+ platformo=$object/cuboot-tl-wdr4900-v1.o +@@ -302,6 +302,11 @@ adder875-redboot) + platformo="$object/fixed-head.o $object/redboot-8xx.o" + binary=y + ;; ++simpleboot-tl-wdr4900-v1) ++ platformo="$object/fixed-head.o $object/simpleboot.o" + link_address='0x1000000' -+ ;; - *-amigaone) - link_address='0x800000' - ;; ++ binary=y ++ ;; + simpleboot-virtex405-*) + platformo="$object/virtex405-head.o $object/simpleboot.o $object/virtex.o" + binary=y +diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig +index 68920d42b4bc..477782740f0e 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig @@ -170,6 +170,17 @@ config STX_GP3 @@ -67,9 +76,11 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> config TQM8540 bool "TQ Components TQM8540" help +diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile +index d1dd0dca5ebf..d0dab29a33eb 100644 --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile -@@ -26,6 +26,7 @@ obj-$(CONFIG_CORENET_GENERIC) += coren +@@ -26,6 +26,7 @@ obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o obj-$(CONFIG_STX_GP3) += stx_gp3.o obj-$(CONFIG_TQM85xx) += tqm85xx.o @@ -77,3 +88,6 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> obj-$(CONFIG_SBC8548) += sbc8548.o obj-$(CONFIG_PPA8548) += ppa8548.o obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o +-- +2.20.1 + diff --git a/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch index 6d76ebc32c..38380773ac 100644 --- a/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch +++ b/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch @@ -1,4 +1,4 @@ -From 406d86e5990ac171f18ef6e2973672d8fbfe1556 Mon Sep 17 00:00:00 2001 +From 1d9f596e572917772b87a2a37e1680902964782f Mon Sep 17 00:00:00 2001 From: Gabor Juhos <juhosg@openwrt.org> Date: Wed, 20 Feb 2013 08:40:33 +0100 Subject: [PATCH] powerpc: 85xx: add support for the TP-Link TL-WDR4900 v1 @@ -9,44 +9,53 @@ concurrent dual-band wireless router. The devices uses the Freescale P1014 SoC. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> +Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> --- - arch/powerpc/boot/Makefile | 3 + - arch/powerpc/boot/wrapper | 4 + - arch/powerpc/platforms/85xx/Kconfig | 11 ++ - arch/powerpc/platforms/85xx/Makefile | 1 + + arch/powerpc/boot/Makefile | 3 ++- + arch/powerpc/boot/wrapper | 5 +++++ + arch/powerpc/platforms/85xx/Kconfig | 12 ++++++++++++ + arch/powerpc/platforms/85xx/Makefile | 1 + + 4 files changed, 20 insertions(+), 1 deletion(-) +diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile +index 25e3184f11f7..0826346fd97c 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile -@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie +@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c -+src-plat-$(CONFIG_TL_WDR4900_V1) += cuboot-tl-wdr4900-v1.c ++src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S src-wlib := $(sort $(src-wlib-y)) src-plat := $(sort $(src-plat-y)) -@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm +@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm8555 image-$(CONFIG_TQM8560) += cuImage.tqm8560 image-$(CONFIG_SBC8548) += cuImage.sbc8548 image-$(CONFIG_KSI8560) += cuImage.ksi8560 - -+image-$(CONFIG_TL_WDR4900_V1) += cuImage.tl-wdr4900-v1 ++image-$(CONFIG_TL_WDR4900_V1) += simpleImage.tl-wdr4900-v1 # Board ports in arch/powerpc/platform/86xx/Kconfig image-$(CONFIG_MVME7100) += dtbImage.mvme7100 +diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper +index f9141eaec6ff..bd55094d9899 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -277,6 +277,10 @@ cuboot*) - *-mpc85*|*-tqm85*|*-sbc85*) - platformo=$object/cuboot-85xx.o - ;; -+ *-tl-wdr4900-v1) -+ platformo=$object/cuboot-tl-wdr4900-v1.o +@@ -302,6 +302,11 @@ adder875-redboot) + platformo="$object/fixed-head.o $object/redboot-8xx.o" + binary=y + ;; ++simpleboot-tl-wdr4900-v1) ++ platformo="$object/fixed-head.o $object/simpleboot.o" + link_address='0x1000000' -+ ;; - *-amigaone) - link_address='0x800000' - ;; ++ binary=y ++ ;; + simpleboot-virtex405-*) + platformo="$object/virtex405-head.o $object/simpleboot.o $object/virtex.o" + binary=y +diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig +index 68920d42b4bc..2bf6533ce023 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig @@ -170,6 +170,18 @@ config STX_GP3 @@ -58,7 +67,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> + select DEFAULT_UIMAGE + select ARCH_REQUIRE_GPIOLIB + select GPIO_MPC8XXX -+ select SWIOTLB ++ select SWIOTLB + help + This option enables support for the TP-Link TL-WDR4900 v1 board. + @@ -68,9 +77,11 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> config TQM8540 bool "TQ Components TQM8540" help +diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile +index d1dd0dca5ebf..d0dab29a33eb 100644 --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile -@@ -26,6 +26,7 @@ obj-$(CONFIG_CORENET_GENERIC) += coren +@@ -26,6 +26,7 @@ obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o obj-$(CONFIG_STX_GP3) += stx_gp3.o obj-$(CONFIG_TQM85xx) += tqm85xx.o @@ -78,3 +89,6 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> obj-$(CONFIG_SBC8548) += sbc8548.o obj-$(CONFIG_PPA8548) += ppa8548.o obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o +-- +2.20.1 + |