aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/image/Makefile
blob: 052900053e1101cfd07c020b4a9a97d3a71a5020 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#
# Copyright (C) 2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk

define Image/Prepare
	rm -f $(KDIR)/fs_mark
	echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark
	$(call prepare_generic_squashfs,$(KDIR)/fs_mark)

	# For UBI we want only one extra block
	rm -f $(KDIR)/ubi_mark
	echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark

	$(CP) ./ubinize.cfg $(KDIR)
endef

define Build/lzma-d16
	$(STAGING_DIR_HOST)/bin/lzma e $@ -d16 $(1) $@.new
	@mv $@.new $@
endef

define Build/mkfs/squashfs
	( cd $(KDIR); $(STAGING_DIR_HOST)/bin/ubinize -p 128KiB -m 2048 -o $(KDIR)/root-block-0x20000-min-0x800.ubi ubinize.cfg )
endef

define Build/trx-serial
	$(STAGING_DIR_HOST)/bin/trx \
		-o $@ \
		-m 33554432 \
		-f $(word 1,$^) -a 1024 \
		-f $(KDIR)/root.squashfs -a 0x10000 -A $(KDIR)/fs_mark
endef

define Build/trx-nand
	# kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even
	#	  if it grows up between releases
	# root: UBI with one extra block containing UBI mark to trigger erasing
	#	rest of partition
	$(STAGING_DIR_HOST)/bin/trx \
		-o $@ \
		-m 33554432 \
		-f $(word 1,$^) -a 0x20000 -b 0x400000 \
		-f $(KDIR)/root-block-0x20000-min-0x800.ubi \
		-A $(KDIR)/ubi_mark -a 0x20000
endef

define Build/asus-trx
	$(STAGING_DIR_HOST)/bin/asustrx \
		-p $(PRODUCTID) -i $@ -o $@.new
	mv $@.new $@
endef

define Build/seama-nand
	# Seama entity
	$(STAGING_DIR_HOST)/bin/oseama \
		entity $@.entity \
		-m "dev=/dev/mtdblock/7" \
		-m "type=firmware" \
		-f $(word 1,$^) \
		-b 0x400000 \
		-f $(KDIR)/root-block-0x20000-min-0x800.ubi \
		-f $(KDIR)/ubi_mark
	# Seama container
	$(STAGING_DIR_HOST)/bin/seama \
		-s $@ \
		-m "signature=$(SIGNATURE)" \
		-i $@.entity
endef

DEVICE_VARS += DEVICE_DTS PRODUCTID SIGNATURE NETGEAR_BOARD_ID NETGEAR_REGION

define Device/Default
  # .dtb files are prefixed by SoC type, e.g. bcm4708- which is not included in device/image names
  # extract the full dtb name based on the device info
  DEVICE_DTS := $(patsubst %.dtb,%,$(notdir $(wildcard $(if $(IB),$(KDIR),$(DTS_DIR))/*-$(1).dtb)))
  KERNEL := kernel-bin | append-dtb | lzma-d16
  KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
  FILESYSTEMS := squashfs
  KERNEL_NAME := zImage
  IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2)
  IMAGES := trx
  IMAGE/trx := trx-nand
endef

define Device/asus
  IMAGES := trx
  IMAGE/trx := trx-nand | asus-trx
endef

define AsusDevice
  define Device/asus-$(1)
	$$(Device/asus)
	PRODUCTID := $(2)
  endef
  TARGET_DEVICES += asus-$(1)
endef

define Device/linksys
  IMAGES := trx
  IMAGE/trx := trx-nand
endef

define LinksysDevice
  define Device/linksys-$(1)
	$$(Device/linksys)
  endef
  TARGET_DEVICES += linksys-$(1)
endef

define Device/dlink
  IMAGES := bin
  IMAGE/bin := seama-nand
endef

define DLinkDevice
  define Device/dlink-$(1)
	$$(Device/dlink)
	SIGNATURE := $(2)
  endef
  TARGET_DEVICES += dlink-$(1)
endef

define Device/netgear
  IMAGES := chk
  IMAGE/chk := trx-nand | netgear-chk
  NETGEAR_REGION := 1
endef

define NetgearDevice
  define Device/netgear-$(1)
	$$(Device/netgear)
	NETGEAR_BOARD_ID := $(2)
  endef
  TARGET_DEVICES += netgear-$(1)
endef

define Device/netgear-r6250
  $(Device/netgear)
  NETGEAR_BOARD_ID := U12H245T00_NETGEAR
endef

define Device/netgear-r6300-v2
  $(Device/netgear)
  NETGEAR_BOARD_ID := U12H240T00_NETGEAR
endef

define Device/netgear-r8000
  $(Device/netgear)
  NETGEAR_BOARD_ID := U12H315T00_NETGEAR
endef

define Device/smartrg-sr400ac
  IMAGES := trx
  IMAGE/trx := trx-serial
endef

TARGET_DEVICES += \
	buffalo-wzr-1750dhp buffalo-wzr-600dhp2 buffalo-wzr-900dhp \
	buffalo-wxr-1900dhp \
	netgear-r6250 netgear-r6300-v2 netgear-r8000 \
	smartrg-sr400ac

$(eval $(call AsusDevice,rt-ac56u,RT-AC56U))
$(eval $(call AsusDevice,rt-ac68u,RT-AC68U))
$(eval $(call AsusDevice,rt-ac87u,RT-AC87U))
$(eval $(call AsusDevice,rt-n18u,RT-N18U))
$(eval $(call DLinkDevice,dir-885l,wrgac42_dlink.2015_dir885l))
$(eval $(call LinksysDevice,ea6300-v1))
$(eval $(call NetgearDevice,r7000,U12H270T00_NETGEAR))
$(eval $(call NetgearDevice,r7900,U12H315T30_NETGEAR))
# $(eval $(call NetgearDevice,r8500,U12H334T00_NETGEAR))

$(eval $(call BuildImage))