aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/image/Makefile
blob: 32124c71e1400e1b838ce5eb8d2550d54ed94328 (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
#
# 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
	$(CP) $(DTS_DIR)/*.dtb $(KDIR)/

	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/append-dtb
	cat $(KDIR)/$(DT).dtb >> $@
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 $@ \
		-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/netgear-chk
	$(STAGING_DIR_HOST)/bin/mkchkimg \
		-o $@.new -k $@ -b $(BOARD_ID) -r $(REGION)
	mv $@.new $@
endef

DEVICE_VARS += DT PRODUCTID BOARD_ID 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
  DT := $(patsubst %.dtb,%,$(notdir $(wildcard $(if $(IB),$(KDIR),$(DTS_DIR))/*-$(1).dtb)))
  KERNEL := kernel-bin | append-dtb | lzma-d16
  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/netgear
  IMAGES := chk
  IMAGE/chk := trx-nand | netgear-chk
  REGION := 1
endef

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

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

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

define Device/netgear-r8000
  $(Device/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 NetgearDevice,r7000,U12H270T00_NETGEAR))
# $(eval $(call NetgearDevice,r8500,U12H334T00_NETGEAR))

$(eval $(call BuildImage))