Skip to content

Commit

Permalink
bcm4908: build bootfs image per-SoC
Browse files Browse the repository at this point in the history
In theory we could have just 1 bootfs image for all devices as each
device has its own entry in the "configurations" node. It doesn't work
well with default configuration though.

If something goes wrong U-Boot SPL can be interrupted (by pressing A) to
enter its minimalistic menu. It allows ignoring boardid. In such case
bootfs default configuration is used.

For above reason each SoC family (BCM4908, BCM4912) should have its own
bootfs built. It allows each of them to have working default
configuration.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  • Loading branch information
Rafał Miłecki committed Jul 25, 2022
1 parent 8a77adb commit 6ae2f7f
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 59 deletions.
19 changes: 10 additions & 9 deletions target/linux/bcm4908/image/Makefile
Expand Up @@ -5,19 +5,20 @@ include $(INCLUDE_DIR)/image.mk

DEVICE_VARS += ASUS_PRODUCTID ASUS_BUILD_NO ASUS_FW_REV ASUS_EXT_NO
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_REGION
DEVICE_VARS += PKGTB_ITS
DEVICE_VARS += SOC

define Image/Prepare
cp bootfs-generic.its $(KDIR)/
sed -i "s=\$$$${images_dir}=$(STAGING_DIR_IMAGE)=" $(KDIR)/bootfs-generic.its
sed -i "s=\$$$${dts_dir}=$(DTS_DIR)=" $(KDIR)/bootfs-generic.its
cp bootfs*.its* $(KDIR)/
sed -i "s=\$$$${images_dir}=$(STAGING_DIR_IMAGE)=" $(KDIR)/bootfs*.its*
sed -i "s=\$$$${dts_dir}=$(DTS_DIR)=" $(KDIR)/bootfs*.its*
endef

define Build/bootfs
cat $@ | $(STAGING_DIR_HOST)/bin/lzma e -eos -si -so > $@.tmp
mv $@.tmp $@
sed -i "s=\$${kernel}=$@=" $(KDIR)/bootfs-generic.its
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/bootfs-generic.its $(KDIR)/bootfs-generic.itb
sed -i "s=\$${kernel}=$@=" $(KDIR)/bootfs*.its*
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/bootfs-bcm4908.its $(KDIR)/bootfs-bcm4908.itb
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/bootfs-bcm4912.its $(KDIR)/bootfs-bcm4912.itb
endef

define Build/bcm4908asus
Expand Down Expand Up @@ -54,8 +55,8 @@ endef

define Build/pkgtb
mv $@ $@.rootfs
cp $(PKGTB_ITS) $@.its
sed -i "s=\$${bootfs}=$(KDIR)/bootfs-generic.itb=" $@.its
cp pkgtb-$(SOC).its $@.its
sed -i "s=\$${bootfs}=$(KDIR)/bootfs-$(SOC).itb=" $@.its
sed -i "s=\$${rootfs}=$@.rootfs=" $@.its
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@
endef
Expand Down Expand Up @@ -129,7 +130,7 @@ endef
define Device/netgear_raxe500
DEVICE_MODEL := RAXE500
$(Device/netgear)
PKGTB_ITS := pkgtb-bcm4908.its
SOC := bcm4908
NETGEAR_BOARD_ID := U12H449T00_NETGEAR
endef
# TARGET_DEVICES += netgear_raxe500
Expand Down
48 changes: 48 additions & 0 deletions target/linux/bcm4908/image/bootfs-bcm4908.its
@@ -0,0 +1,48 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

/include/ "bootfs.itsi"

/ {
images {
uboot {
data = /incbin/("${images_dir}/u-boot/u-boot-nodtb.bin");
};

fdt_uboot {
data = /incbin/("${images_dir}/u-boot/u-boot.dtb");
};

fdt_uboot_RAX220 {
description = "dtb";
data = /incbin/("${images_dir}/u-boot/RAX220.dtb");
type = "flat_dt";
compression = "none";

hash-1 {
algo = "sha256";
};
};

fdt_linux_RAX220 {
description = "dtb";
data = /incbin/("${dts_dir}/broadcom/bcm4908/bcm4908-netgear-raxe500.dtb");
arch = "arm64";
type = "flat_dt";
compression = "none";
};
};

configurations {
conf_ub_RAX220 {
description = "RAX220";
fdt = "fdt_uboot_RAX220";
loadables = "atf", "uboot";
};

conf_lx_RAX220 {
description = "BRCM 63xxx linux";
kernel = "kernel";
fdt = "fdt_linux_RAX220";
};
};
};
34 changes: 34 additions & 0 deletions target/linux/bcm4908/image/bootfs-bcm4912.its
@@ -0,0 +1,34 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

/include/ "bootfs.itsi"

/ {
images {
uboot {
data = /incbin/("${images_dir}/u-boot/u-boot-nodtb.bin");
};

fdt_uboot {
data = /incbin/("${images_dir}/u-boot/u-boot.dtb");
};

fdt_GTAX6000 {
description = "dtb";
data = /incbin/("${images_dir}/u-boot/GTAX6000.dtb");
type = "flat_dt";
compression = "none";

hash-1 {
algo = "sha256";
};
};
};

configurations {
conf_ub_GTAX6000 {
description = "GTAX6000";
fdt = "fdt_GTAX6000";
loadables = "atf", "uboot";
};
};
};
Expand Up @@ -24,7 +24,6 @@

uboot {
description = "U-Boot";
data = /incbin/("${images_dir}/u-boot/u-boot-nodtb.bin");
os = "U-Boot";
arch = "arm64";
compression = "none";
Expand Down Expand Up @@ -53,44 +52,13 @@

fdt_uboot {
description = "dtb";
data = /incbin/("${images_dir}/u-boot/u-boot.dtb");
type = "flat_dt";
compression = "none";

hash-1 {
algo = "sha256";
};
};

fdt_GTAX6000 {
description = "dtb";
data = /incbin/("${images_dir}/u-boot/GTAX6000.dtb");
type = "flat_dt";
compression = "none";

hash-1 {
algo = "sha256";
};
};

fdt_uboot_RAX220 {
description = "dtb";
data = /incbin/("${images_dir}/u-boot/RAX220.dtb");
type = "flat_dt";
compression = "none";

hash-1 {
algo = "sha256";
};
};

fdt_linux_RAX220 {
description = "dtb";
data = /incbin/("${dts_dir}/broadcom/bcm4908/bcm4908-netgear-raxe500.dtb");
arch = "arm64";
type = "flat_dt";
compression = "none";
};
};

configurations {
Expand All @@ -101,23 +69,5 @@
fdt = "fdt_uboot";
loadables = "atf", "uboot";
};

conf_ub_GTAX6000 {
description = "GTAX6000";
fdt = "fdt_GTAX6000";
loadables = "atf", "uboot";
};

conf_ub_RAX220 {
description = "RAX220";
fdt = "fdt_uboot_RAX220";
loadables = "atf", "uboot";
};

conf_lx_RAX220 {
description = "BRCM 63xxx linux";
kernel = "kernel";
fdt = "fdt_linux_RAX220";
};
};
};

0 comments on commit 6ae2f7f

Please sign in to comment.