mpc85xx: use bootwrapper for ws-ap3825i
authorDavid Bauer <mail@david-bauer.net>
Mon, 20 Mar 2023 03:50:14 +0000 (04:50 +0100)
committerDavid Bauer <mail@david-bauer.net>
Mon, 20 Mar 2023 21:21:22 +0000 (22:21 +0100)
The boot-procedure for the Extreme WS-AP3825I is vfragile to put it
mildly. It does not relocate the FDT properly. It currently exercises
every step manually as well as coming with a pre-padded dtb.

Use the PowerPC bootwrapper code for legacy platforms with a pre-filles
DTS instead. We still need to ship a fit image to not break the fdt
resize / relocate instructions on existing boards. This does not require
adapting the U-Boot bootcommand.

Ref: https://github.com/openwrt/openwrt/issues/12223

Signed-off-by: David Bauer <mail@david-bauer.net>
target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3825i.dts
target/linux/mpc85xx/image/p1020.mk
target/linux/mpc85xx/p1020/target.mk
target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch

index c4bce497cc47bd716bf385d3a4ddd173ff0ad2da..bc467f6b2f61450258325fbc284c6a449e29ce9f 100644 (file)
 
 /include/ "fsl/p1020si-post.dtsi"
 
+/ {
+       cpus {
+               PowerPC,P1010@0 {
+                       bus-frequency = <399999996>;
+                       timebase-frequency = <50000000>;
+                       clock-frequency = <799999992>;
+                       d-cache-block-size = <0x20>;
+                       d-cache-size = <0x8000>;
+                       d-cache-sets = <0x80>;
+                       i-cache-block-size = <0x20>;
+                       i-cache-size = <0x8000>;
+                       i-cache-sets = <0x80>;
+               };
+
+               PowerPC,P1010@1 {
+                       bus-frequency = <399999996>;
+                       timebase-frequency = <50000000>;
+                       clock-frequency = <799999992>;
+                       d-cache-block-size = <0x20>;
+                       d-cache-size = <0x8000>;
+                       d-cache-sets = <0x80>;
+                       i-cache-block-size = <0x20>;
+                       i-cache-size = <0x8000>;
+                       i-cache-sets = <0x80>;
+               };
+       };
+
+       memory {
+               reg = <0x0 0x0 0x0 0x10000000>;
+       };
+
+       soc@ffe00000 {
+               bus-frequency = <399999996>;
+
+               serial@4600 {
+                       clock-frequency = <399999996>;
+               };
+
+               serial@4500 {
+                       clock-frequency = <399999996>;
+               };
+
+               pic@40000 {
+                       clock-frequency = <399999996>;
+               };
+       };
+};
+
 /*
  * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses
  * aliases to determine PCI domain numbers, drop aliases so as not to
index 6fdbfd664a8fe4c3a280d62dfd1ce09aa6890d7d..1f17de3f55f749ab69da70a32c55420f032edeff 100644 (file)
@@ -73,8 +73,10 @@ define Device/extreme-networks_ws-ap3825i
   DEVICE_MODEL := WS-AP3825i
   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
   BLOCKSIZE := 128k
-  DTB_SIZE := 20480
-  KERNEL = kernel-bin | lzma | pad-dtb | fit lzma $(KDIR)/image-$$(DEVICE_DTS).dtb
+  KERNEL_NAME := simpleImage.ws-ap3825i
+  KERNEL_ENTRY := 0x1000000
+  KERNEL_LOADADDR := 0x1000000
+  KERNEL = kernel-bin | lzma | fit lzma $(KDIR)/image-$$(DEVICE_DTS).dtb
   IMAGES := sysupgrade.bin
   IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
 endef
index 000fc6464444aedf2510170edf300865b29c90d4..8770edb9a9146f6551f84abc48a6845e94c802bd 100644 (file)
@@ -1,4 +1,5 @@
 BOARDNAME:=P1020
+KERNEL_IMAGES:=simpleImage.ws-ap3825i
 
 define Target/Description
        Build firmware images for Freescale P1020 based boards.
index 1829a78ec477e8bbe173ac10525ebcfc16ddab10..b211f3cb3022bf47d7565cfe5f9ad5ed38e21176 100644 (file)
@@ -35,3 +35,31 @@ WS-AP3825i AP.
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
  obj-$(CONFIG_FB_FSL_DIU)      += t1042rdb_diu.o
  obj-$(CONFIG_RED_15W_REV1)    += red15w_rev1.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
+ 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) += simpleboot.c fixed-head.S
++src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8555)                    += cuImage.tqm
+ image-$(CONFIG_TQM8560)                       += cuImage.tqm8560
+ image-$(CONFIG_KSI8560)                       += cuImage.ksi8560
+ image-$(CONFIG_TL_WDR4900_V1)         += simpleImage.tl-wdr4900-v1
++image-$(CONFIG_WS_AP3825I)            += simpleImage.ws-ap3825i
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -326,6 +326,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-ws-ap3825i|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     link_address='0x1000000'