lantiq: ar7: use okli loader for FRITZ!Box

With Kernel 5.10 the ar7 FRITZ!Box are not booting the initramfs nor the
sysupgrade image any more. Presumably due to the grown kernel.

Use the okli preloader to workaround the bootloader issue. No solution
so far for the initramfs.

Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
Mathias Kresin 2021-11-14 21:53:45 +01:00
parent a328b6831c
commit 9764968bba
4 changed files with 46 additions and 3 deletions

View File

@ -1,6 +1,7 @@
#include "ar9.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "avm,fritz7312", "lantiq,xway", "lantiq,ar9";
@ -131,7 +132,10 @@
partition@20000 {
label = "firmware";
compatible = "openwrt,uimage", "denx,uimage";
reg = <0x20000 0xf60000>;
openwrt,ih-magic = <IH_MAGIC_OKLI>;
openwrt,offset = <0x11000>;
};
partition@f80000 {

View File

@ -1,6 +1,7 @@
#include "ar9.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "avm,fritz7320", "lantiq,xway", "lantiq,ar9";
@ -140,8 +141,11 @@
};
partition@20000 {
compatible = "openwrt,uimage", "denx,uimage";
label = "firmware";
reg = <0x20000 0xf60000>;
openwrt,ih-magic = <IH_MAGIC_OKLI>;
openwrt,offset = <0x11000>;
};
partition@f80000 {

View File

@ -49,12 +49,35 @@ define Build/fullimage
rm $@.tmp
endef
DEVICE_VARS += SIGNATURE MAGIC CRC32_POLY
define Build/loader-okli-compile
rm -rf $@.src
$(MAKE) -C lzma-loader \
PKG_BUILD_DIR="$@.src" \
TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \
PLATFORM="lantiq" \
LZMA_TEXT_START=0x82000000 \
LOADADDR=0x80002000 \
FLASH_START=0x10000000 \
FLASH_OFFS=$(LOADER_FLASH_OFFS) \
FLASH_MAX=0x0 \
$(1) compile loader.bin
mv "$@.bin" "$@"
rm -rf $@.src
endef
define Build/prepend-loader-okli
cat "$(KDIR)/loader-$(word 1,$(1)).bin" "$@" >> "$@.new"
mv "$@.new" "$@"
endef
DEVICE_VARS += SIGNATURE MAGIC CRC32_POLY LOADER_FLASH_OFFS
DTS_DIR := $(DTS_DIR)/lantiq
# Shared device definition: applies to every defined device
define Device/Default
PROFILES = Default
COMPILE :=
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma
@ -105,6 +128,16 @@ define Device/AVM
append-rootfs | pad-rootfs | check-size | append-metadata
endef
define Device/AVM_preloader
DEVICE_VENDOR := AVM
COMPILE := loader-$(1).bin
COMPILE/loader-$(1).bin := loader-okli-compile | lzma | eva-image | \
pad-to 64k | append-avm-fakeroot | pad-to 4k
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 | \
prepend-loader-okli $(1)
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | eva-image
endef
ifeq ($(SUBTARGET),ase)
DEFAULT_SOC := amazonse
include amazonse.mk

View File

@ -1,8 +1,9 @@
define Device/avm_fritz7312
$(Device/AVM)
$(Device/AVM_preloader)
DEVICE_MODEL := FRITZ!Box 7312
SOC := ar9
IMAGE_SIZE := 15744k
LOADER_FLASH_OFFS := 0x31000
DEVICE_PACKAGES := kmod-ath9k kmod-owl-loader wpad-basic-wolfssl \
kmod-ltq-adsl-ar9-mei kmod-ltq-adsl-ar9 \
kmod-ltq-adsl-ar9-fw-b kmod-ltq-atm-ar9 \
@ -12,12 +13,13 @@ endef
TARGET_DEVICES += avm_fritz7312
define Device/avm_fritz7320
$(Device/AVM)
$(Device/AVM_preloader)
DEVICE_MODEL := FRITZ!Box 7320
DEVICE_ALT0_VENDOR := 1&1
DEVICE_ALT0_MODEL := HomeServer
SOC := ar9
IMAGE_SIZE := 15744k
LOADER_FLASH_OFFS := 0x31000
DEVICE_PACKAGES := kmod-ath9k kmod-owl-loader wpad-basic-wolfssl \
kmod-ltq-adsl-ar9-mei kmod-ltq-adsl-ar9 \
kmod-ltq-adsl-ar9-fw-b kmod-ltq-atm-ar9 \