bcm4908: build bootfs image per-SoC
[openwrt/staging/hauke.git] / target / linux / bcm4908 / image / Makefile
1 # SPDX-License-Identifier: GPL-2.0-only
2
3 include $(TOPDIR)/rules.mk
4 include $(INCLUDE_DIR)/image.mk
5
6 DEVICE_VARS += ASUS_PRODUCTID ASUS_BUILD_NO ASUS_FW_REV ASUS_EXT_NO
7 DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_REGION
8 DEVICE_VARS += SOC
9
10 define Image/Prepare
11 cp bootfs*.its* $(KDIR)/
12 sed -i "s=\$$$${images_dir}=$(STAGING_DIR_IMAGE)=" $(KDIR)/bootfs*.its*
13 sed -i "s=\$$$${dts_dir}=$(DTS_DIR)=" $(KDIR)/bootfs*.its*
14 endef
15
16 define Build/bootfs
17 cat $@ | $(STAGING_DIR_HOST)/bin/lzma e -eos -si -so > $@.tmp
18 mv $@.tmp $@
19 sed -i "s=\$${kernel}=$@=" $(KDIR)/bootfs*.its*
20 PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/bootfs-bcm4908.its $(KDIR)/bootfs-bcm4908.itb
21 PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/bootfs-bcm4912.its $(KDIR)/bootfs-bcm4912.itb
22 endef
23
24 define Build/bcm4908asus
25 $(STAGING_DIR_HOST)/bin/bcm4908asus create -i $@ \
26 -p $(ASUS_PRODUCTID) -b $(ASUS_BUILD_NO) -f $(ASUS_FW_REV) \
27 -e $(ASUS_EXT_NO)
28 endef
29
30 define Build/bcm4908img
31 rm -fr $@-bootfs
32 mkdir -p $@-bootfs
33 cp -r $(DEVICE_NAME)/* $@-bootfs/
34 touch $@-bootfs/1-openwrt
35 cp $(DTS_DIR)/$(firstword $(DEVICE_DTS)).dtb $@-bootfs/94908.dtb
36 cp $(KDIR)/bcm63xx-cfe/$(subst _,$(comma),$(DEVICE_NAME))/cferam.000 $@-bootfs/
37 cp $(IMAGE_KERNEL) $@-bootfs/vmlinux.lz
38
39 $(STAGING_DIR_HOST)/bin/mkfs.jffs2 --pad=0x800000 --little-endian --squash-uids \
40 -v -e 128KiB -o $@-bootfs.jffs2 -d $@-bootfs -m none -n
41 $(STAGING_DIR_HOST)/bin/bcm4908img create $@.new -f $@-bootfs.jffs2 \
42 -a 0x20000 -f $@
43 mv $@.new $@
44 endef
45
46 define Build/bcm4908kernel
47 $(STAGING_DIR_HOST)/bin/bcm4908kernel -i $@ -o $@.new
48 mv $@.new $@
49 endef
50
51 define Build/bcm4908lzma
52 $(STAGING_DIR_HOST)/bin/lzma e -lc1 -lp2 -pb2 -d22 $@ $@.new
53 mv $@.new $@
54 endef
55
56 define Build/pkgtb
57 mv $@ $@.rootfs
58 cp pkgtb-$(SOC).its $@.its
59 sed -i "s=\$${bootfs}=$(KDIR)/bootfs-$(SOC).itb=" $@.its
60 sed -i "s=\$${rootfs}=$@.rootfs=" $@.its
61 PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@
62 endef
63
64 define Device/Default
65 KERNEL := kernel-bin | bcm4908lzma | bcm4908kernel
66 KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
67 KERNEL_INITRAMFS_SUFFIX := .bin
68 KERNEL_INITRAMFS := kernel-bin | bcm4908lzma | bcm4908kernel
69 FILESYSTEMS := squashfs
70 KERNEL_NAME := Image
71 DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1).$$(2)
72 BLOCKSIZE := 128k
73 PAGESIZE := 2048
74 IMAGE/bin := append-ubi | bcm4908img
75 endef
76
77 define Device/asus_gt-ac5300
78 DEVICE_VENDOR := Asus
79 DEVICE_MODEL := GT-AC5300
80 DEVICE_DTS := broadcom/bcm4908/bcm4908-asus-gt-ac5300
81 IMAGES := bin
82 IMAGE/bin := append-ubi | bcm4908img | bcm4908asus
83 ASUS_PRODUCTID := GT-AC5300
84 ASUS_BUILD_NO := 384
85 ASUS_FW_REV := 3.0.0.4
86 ASUS_EXT_NO := 21140
87 endef
88 TARGET_DEVICES += asus_gt-ac5300
89
90 define Device/asus_gt-ax6000
91 DEVICE_VENDOR := Asus
92 DEVICE_MODEL := GT-AX6000
93 DEVICE_DTS := broadcom/bcmbca/bcm4912-asus-gt-ax6000
94 IMAGES := pkgtb
95 IMAGE/pkgtb := append-rootfs | pkgtb
96 SOC := bcm4912
97 endef
98 # TARGET_DEVICES += asus_gt-ax6000
99
100 define Device/netgear_r8000p
101 DEVICE_VENDOR := Netgear
102 DEVICE_MODEL := R8000P
103 DEVICE_DTS := broadcom/bcm4908/bcm4906-netgear-r8000p
104 IMAGES := bin
105 IMAGE/chk := append-ubi | bcm4908img | netgear-chk
106 NETGEAR_BOARD_ID := U12H359T00_NETGEAR
107 NETGEAR_REGION := 1
108 endef
109 TARGET_DEVICES += netgear_r8000p
110
111 define Device/tplink_archer-c2300-v1
112 DEVICE_VENDOR := TP-Link
113 DEVICE_MODEL := Archer C2300
114 DEVICE_VARIANT := v1
115 DEVICE_DTS := broadcom/bcm4908/bcm4906-tplink-archer-c2300-v1
116 IMAGES := bin
117 IMAGE/bin := append-ubi | bcm4908img
118 BROKEN := y
119 endef
120 TARGET_DEVICES += tplink_archer-c2300-v1
121
122 define Device/netgear
123 DEVICE_VENDOR := NETGEAR
124 KERNEL := kernel-bin | bootfs
125 IMAGES := chk
126 IMAGE/chk := append-rootfs | pkgtb | netgear-chk
127 NETGEAR_REGION := 1
128 endef
129
130 define Device/netgear_raxe500
131 DEVICE_MODEL := RAXE500
132 $(Device/netgear)
133 SOC := bcm4908
134 NETGEAR_BOARD_ID := U12H449T00_NETGEAR
135 endef
136 # TARGET_DEVICES += netgear_raxe500
137
138 $(eval $(call BuildImage))