source: trunk/target/linux/ramips/image/Makefile @ 29910

Last change on this file since 29910 was 29910, checked in by juhosg, 5 years ago

ramips: add support for Sitecom WL-341v3 and other Sercomm IP1006RRv2 boards

This patch adds support for the Sitecom WL-341 v3 and other Sercomm
IP1006RRv2 based boards for sysupgrade support and for the initial
flash through pushbutton initiated recovery mode with the special
partition table and fixes for the quirks and things required by the
modified bootloader.

There is a known bug, Wi-Fi is not working on my board probably
because of the lack of RAM (the board only has 16MiB ram -- half of
the normal amount for non rebadged versions, but there is an empty
slot for another ram chip,) but I don't know for sure. The driver
loads but hostapd fails to load so I think it's not related to the
specific device except for the lack of RAM.

Moreover, only 7 of the 11 onboard leds are confirmed working, it
seems that one of the others is always on and the remaining ones are
connected to the wireless card leds already recognized by OpenWrt

[juhosg: reordered some parts in order to keep things sorted
alphabetically]

Signed-off-by: Marco Antonio Mauro <marcus90@…>

File size: 13.7 KB
Line 
1#
2# Copyright (C) 2008-2011 OpenWrt.org
3#
4# This is free software, licensed under the GNU General Public License v2.
5# See /LICENSE for more information.
6#
7include $(TOPDIR)/rules.mk
8include $(INCLUDE_DIR)/image.mk
9
10define imgname
11$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1)
12endef
13
14VMLINUX:=$(IMG_PREFIX)-vmlinux
15UIMAGE:=$(IMG_PREFIX)-uImage
16ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
17        VMLINUX:=$(IMG_PREFIX)-vmlinux-initramfs
18        UIMAGE:=$(IMG_PREFIX)-uImage-initramfs
19endif
20
21ifeq ($(CONFIG_RALINK_RT288X),y)
22define kernel_entry
23-a 0x88000000 -e 0x88000000
24endef
25else
26define kernel_entry
27-a 0x80000000 -e 0x80000000
28endef
29endif
30
31define CompressLzma
32  $(STAGING_DIR_HOST)/bin/lzma e $(1) -lc1 -lp2 -pb2 $(2)
33endef
34
35define PatchKernelLzma
36        cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1)
37        $(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))'
38        $(call CompressLzma,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).bin.lzma)
39endef
40
41define MkImage
42        mkimage -A mips -O linux -T kernel -C $(1) $(call kernel_entry)\
43                -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
44                -d $(2) $(3)
45endef
46
47define Image/BuildKernel
48        cp $(KDIR)/vmlinux.elf $(BIN_DIR)/$(VMLINUX).elf
49        cp $(KDIR)/vmlinux $(BIN_DIR)/$(VMLINUX).bin
50        $(call CompressLzma,$(KDIR)/vmlinux,$(KDIR)/vmlinux.bin.lzma)
51        $(call MkImage,lzma,$(KDIR)/vmlinux.bin.lzma,$(KDIR)/uImage.lzma)
52        cp $(KDIR)/uImage.lzma $(BIN_DIR)/$(UIMAGE).bin
53endef
54
55define BuildFirmware/Generic
56        $(call PatchKernelLzma,$(2),$(3) $($(4)))
57        $(call MkImage,lzma,"$(KDIR)/vmlinux-$(2).bin.lzma","$(KDIR)/vmlinux-$(2).uImage")
58        if [ `stat -c%s "$(KDIR)/vmlinux-$(2).uImage"` -gt $(5) ]; then \
59                echo "Warning: $(KDIR)/vmlinux-$(2).uImage is too big"; \
60        else if [ `stat -c%s $(KDIR)/root.$(1)` -gt $(6) ]; then \
61                echo "Warning: $(KDIR)/root.$(1) is too big"; \
62        else \
63                ( \
64                        dd if=$(KDIR)/vmlinux-$(2).uImage bs=$(5) conv=sync; \
65                        dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \
66                ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
67        fi; fi
68endef
69
70define BuildFirmware/WL341V3
71        $(call PatchKernelLzma,$(2),$(3) $($(4)))
72        $(call MkImage,lzma,"$(KDIR)/vmlinux-$(2).bin.lzma","$(KDIR)/vmlinux-$(2).uImage")
73        if [ `stat -c%s "$(KDIR)/vmlinux-$(2).uImage"` -gt $(5) ]; then \
74                echo "Warning: $(KDIR)/vmlinux-$(2).uImage is too big"; \
75        else if [ `stat -c%s $(KDIR)/root.$(1)` -gt $(6) ]; then \
76                echo "Warning: $(KDIR)/root.$(1) is too big"; \
77        else \
78                ( \
79                        dd if=/dev/zero bs=195936 count=1; \
80                        echo "1.01"; \
81                        dd if=/dev/zero bs=581 count=1; \
82                        echo -n -e "\x73\x45\x72\x43\x6F\x4D\x6D\x00\x01\x00\x00\x59\x4E\x37\x95\x58\x10\x00\x20\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x80\x00\x00\x00\x00\x03\x00\x00\x10\x12\x00\x00\x00\x10\x73\x45\x72\x43\x6F\x4D\x6D"; \
83                        dd if=/dev/zero bs=65552 count=1; \
84                        dd if=$(KDIR)/vmlinux-$(2).uImage bs=$(5) conv=sync; \
85                        dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \
86                        dd if=/dev/zero bs=`expr 4194304 - 262144 - 16 - $(5) - \( \( \( \`stat -c%s $(KDIR)/root.$(1)\` / 65536 \) + 1 \) \* 65536 \)` count=1; \
87                        echo -n -e "\x11\x03\x80\x00\x10\x12\x90\xF7\x65\x52\x63\x4F\x6D\x4D\x00\x00"; \
88                ) > $(call imgname,$(1),$(2))-factory.bin; \
89        fi; fi
90endef
91
92define BuildFirmware/Buffalo
93        $(call PatchKernelLzma,$(2),board=$(3) $($(4)))
94        $(call MkImage,lzma,"$(KDIR)/vmlinux-$(2).bin.lzma","$(KDIR)/vmlinux-$(2).uImage")
95        if [ `stat -c%s "$(KDIR)/vmlinux-$(2).uImage"` -gt $(5) ]; then \
96                echo "Warning: $(KDIR)/vmlinux-$(2).uImage is too big"; \
97        else if [ `stat -c%s $(KDIR)/root.$(1)` -gt $(6) ]; then \
98                echo "Warning: $(KDIR)/root.$(1) is too big"; \
99        else \
100                buffalo-enc -p $(3) -v 1.76 \
101                        -i $(KDIR)/vmlinux-$(2).uImage \
102                        -o $(KDIR)/vmlinux-$(2).uImage.enc; \
103                buffalo-enc -p $(3) -v 1.76 \
104                        -i $(KDIR)/root.$(1) \
105                        -o $(KDIR)/root.$(2).enc; \
106                buffalo-tag -b $(3) -p $(3) -a ram -v 1.76 -m 1.01 \
107                        -l mlang8 -f 1 -r EU \
108                        -i $(KDIR)/vmlinux-$(2).uImage.enc \
109                        -i $(KDIR)/root.$(2).enc \
110                        -o $(call imgname,$(1),$(2))-factory-EU.bin; \
111        fi; fi
112endef
113
114define BuildFirmware/Buffalo2
115        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),$($(4)),$(5),$(6))
116endef
117
118define BuildFirmware/NW718
119        $(call PatchKernelLzma,$(2),$(3) $($(4)))
120        mkimage -A mips -O linux -T kernel -C lzma $(call kernel_entry) \
121                -n "ARA1B4NCRNW718;1" \
122                -d "$(KDIR)/vmlinux-$(2).bin.lzma" \
123                "$(KDIR)/vmlinux-$(2).uImage"
124        if [ `stat -c%s "$(KDIR)/vmlinux-$(2).uImage"` -gt $(5) ]; then \
125                echo "Warning: $(KDIR)/vmlinux-$(2).uImage is too big"; \
126        else if [ `stat -c%s $(KDIR)/root.$(1)` -gt $(6) ]; then \
127                echo "Warning: $(KDIR)/root.$(1) is too big"; \
128        else \
129                ( \
130                        dd if=$(KDIR)/vmlinux-$(2).uImage bs=$(5) conv=sync; \
131                        dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \
132                ) > $(call imgname,$(1),$(2))-factory.bin; \
133        fi; fi
134endef
135
136define BuildFirmware/Edimax
137        mkedimaximg -i $(call imgname,$(1),$(2))-sysupgrade.bin \
138                -o $(call imgname,$(1),$(2))-factory.bin \
139                -s $(3) -m $(4) -f $(5) -S $(6)
140endef
141
142mtdlayout_4M=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,832k(kernel),2944k(rootfs),3776k@0x50000(firmware)
143define Image/Build/Template/GENERIC_4M
144        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_4M,851968,3014656)
145endef
146
147mtdlayout_8M=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,832k(kernel),7040k(rootfs),7872k@0x50000(firmware)
148kernel_size_8M=851968
149rootfs_size_8M=7208960
150define Image/Build/Template/GENERIC_8M
151        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_8M,$(kernel_size_8M),$(rootfs_size_8M))
152endef
153
154mtdlayout_dir300b1=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,832k(kernel),2944k(rootfs),3776k@0x50000(firmware)
155mtd_dir300b1_kernel_part_size=851968
156mtd_dir300b1_rootfs_part_size=3014656
157define Image/Build/Template/DIR300B1
158        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_dir300b1,$(mtd_dir300b1_kernel_part_size),$(mtd_dir300b1_rootfs_part_size))
159        mkwrgimg -s $(4) -d /dev/mtdblock/2 \
160                -i $(call imgname,$(1),$(2))-sysupgrade.bin \
161                -o $(call imgname,$(1),$(2))-factory.bin
162endef
163
164mtdlayout_nw718=mtdparts=spi0.0:192k(u-boot)ro,128k(config)ro,64k(factory)ro,832k(kernel),2880k(rootfs),3712k@0x60000(firmware)
165define Image/Build/Template/NW718
166        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_nw718,851968,2949120)
167        $(call BuildFirmware/NW718,$(1),$(2),board=$(3),mtdlayout_nw718,851968,2949120)
168endef
169
170console_OMNIEMB=ttyS1,57600
171mtdlayout_ONMIEMB=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,1024k(kernel),6848k(rootfs),7872k@0x50000(firmware)
172define Image/Build/Template/OMNIEMB
173        $(call BuildFirmware/Generic,$(1),$(2),board=$(3) console=$(console_OMNIEMB),mtdlayout_OMNIEMB,1048576,7012352)
174endef
175
176mtdlayout_sercomm_4M=mtdparts=physmap-flash.0:128k(u-boot)ro,64k(board-nvram)ro,64k(u-boot-env)ro,832k(kernel),2944k(rootfs),64k(signature-eRcOmM),3776k@0x40000(firmware),4096k@0x0(fullflash)
177define Image/Build/Template/WL341V3
178        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_sercomm_4M,851968,3014656)
179        $(call BuildFirmware/WL341V3,$(1),$(2),board=$(3),mtdlayout_sercomm_4M,851968,3014656)
180endef
181
182define Image/Build/Profile/WL341V3
183        $(call Image/Build/Template/WL341V3,$(1),wl341v3,WL341V3)
184endef
185
186define Image/Build/Profile/DIR300B1
187        $(call Image/Build/Template/DIR300B1,$(1),dir-300-b1,DIR-300-B1,wrgn23_dlwbr_dir300b)
188        $(call Image/Build/Template/DIR300B1,$(1),dir-600-b1,DIR-600-B1,wrgn23_dlwbr_dir600b)
189        $(call Image/Build/Template/DIR300B1,$(1),dir-600-b2,DIR-600-B2,wrgn23_dlwbr_dir600b)
190endef
191
192mtdlayout_rtg32b1=mtdparts=spi0.0:192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,832k(kernel),2944k(rootfs),3776k@0x50000(firmware)
193mtd_rtg32b1_kernel_part_size=851968
194mtd_rtg32b1_rootfs_part_size=3014656
195define Image/Build/Template/RTG32B1
196        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_rtg32b1,$(mtd_rtg32b1_kernel_part_size),$(mtd_rtg32b1_rootfs_part_size))
197endef
198
199define Image/Build/Profile/RTG32B1
200        $(call Image/Build/Template/RTG32B1,$(1),rt-g32-b1,RT-G32-B1)
201endef
202
203define Image/Build/Profile/ESR9753
204        $(call Image/Build/Template/GENERIC_4M,$(1),esr-9753,ESR-9753)
205endef
206
207define Image/Build/Profile/FONERA20N
208        $(call Image/Build/Template/GENERIC_8M,$(1),fonera20n,FONERA20N)
209        $(call BuildFirmware/Edimax,$(1),fonera20n,RSDK,NL1T,0x50000,0xc0000)
210endef
211
212define Image/Build/Profile/BC2
213        $(call Image/Build/Template/GENERIC_8M,$(1),bc2,BC2)
214endef
215
216define Image/Build/Profile/ALL0256N
217        $(call Image/Build/Template/GENERIC_4M,$(1),all0256n,ALL0256N)
218endef
219
220define Image/Build/Profile/NBG419N
221        $(call Image/Build/Template/GENERIC_4M,$(1),nbg-419n,NBG-419N)
222endef
223
224define Image/Build/Profile/WL351
225        $(call Image/Build/Template/GENERIC_4M,$(1),wl-351,WL-351)
226endef
227
228define Image/Build/Profile/NW718
229        $(call Image/Build/Template/NW718,$(1),nw718,NW718)
230endef
231
232define Image/Build/Profile/OMNIEMB
233        $(call Image/Build/Template/OMNIEMB,$(1),omni-emb,OMNI-EMB)
234endef
235
236define Image/Build/Profile/PWH2004
237        $(call Image/Build/Template/GENERIC_8M,$(1),pwh2004,PWH2004)
238endef
239
240define Image/Build/Profile/V22RW2X2
241        $(call Image/Build/Template/GENERIC_4M,$(1),v22rw-2x2,V22RW-2X2)
242endef
243
244mtdlayout_whrg300n=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,960k(kernel),2752k(rootfs),64k(user)ro,3712k@0x50000(firmware)
245define Image/Build/Profile/WHRG300N
246        $(call Image/Build/Template/GENERIC_4M,$(1),whr-g300n,WHR-G300N)
247        $(call BuildFirmware/Buffalo,$(1),whr-g300n,WHR-G300N,mtdlayout_whrg300n,983040,3801088)
248        ( \
249                echo -n -e "# Airstation FirmWare\nrun u_fw\nreset\n\n" | \
250                        dd bs=512 count=1 conv=sync; \
251                dd if=$(call imgname,$(1),whr-g300n)-sysupgrade.bin; \
252        ) > $(KDIR)/whr-g300n-tftp.tmp
253        buffalo-tftp -i $(KDIR)/whr-g300n-tftp.tmp \
254                -o $(call imgname,$(1),whr-g300n)-tftp.bin
255endef
256
257define Image/Build/Profile/HW5503G
258        $(call Image/Build/Template/GENERIC_8M,$(1),hw550-3g,HW550-3G)
259endef
260
261define Image/Build/Profile/MOFI35003GN
262        $(call Image/Build/Template/GENERIC_8M,$(1),mofi3500-3gn,MOFI3500-3GN)
263endef
264
265define Image/Build/Profile/WCR150GN
266        $(call Image/Build/Template/GENERIC_4M,$(1),wcr150gn,WCR150GN)
267endef
268
269w502u_cmdline=board=W502U console=ttyS1,115200
270define Image/Build/Profile/W502U
271        $(call BuildFirmware/Generic,$(1),w502u,$(w502u_cmdline),mtdlayout_8M,$(kernel_size_8M),$(rootfs_size_8M))
272endef
273
274mtdlayout_argus_atp52b=mtdparts=physmap-flash.0:192k(bootloader)ro,64k(config),64k(factory),1152k(kernel),6656k(rootfs),7808k@0x50000(firmware)
275mtd_argus_atp52b_kernel_part_size=1179648
276mtd_argus_atp52b_rootfs_part_size=6815744
277define Image/Build/Template/ARGUS_ATP52B
278        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_argus_atp52b,$(mtd_argus_atp52b_kernel_part_size),$(mtd_argus_atp52b_rootfs_part_size))
279endef
280
281define Image/Build/Profile/ARGUS_ATP52B
282        $(call Image/Build/Template/ARGUS_ATP52B,$(1),argus_atp52b,ARGUS_ATP52B)
283endef
284
285mtdlayout_f5d8235=mtdparts=physmap-flash.0:320k(u-boot)ro,1536k(kernel),6208k(rootfs),64k(nvram),64k(factory),7744k@0x50000(firmware)
286mtd_f5d8235_kernel_part_size=1572864
287mtd_f5d8235_rootfs_part_size=6356992
288define Image/Build/Template/F5D8235V2
289        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_f5d8235,$(mtd_f5d8235_kernel_part_size),$(mtd_f5d8235_rootfs_part_size))
290endef
291
292define Image/Build/Profile/F5D8235V2
293        $(call Image/Build/Template/F5D8235V2,$(1),f5d8235v2,F5D8235_V2)
294endef
295
296define Image/Build/Template/F5D8235V1
297        $(call BuildFirmware/Generic,$(1),$(2),board=$(3),mtdlayout_f5d8235,$(mtd_f5d8235_kernel_part_size),$(mtd_f5d8235_rootfs_part_size))
298endef
299
300
301mtdlayout_wr5123gn=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,832k(kernel),2944k(rootfs),3776k@0x50000(firmware)
302mtdlayout_wr5123gn8m=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,832k(kernel),7040k(rootfs),7872k@0x50000(firmware)
303define Image/Build/Profile/WR5123GN
304        $(call BuildFirmware/Generic,$(1),wr512-3gn-4M,board="WR512-3GN",mtdlayout_wr5123gn,851968,3014656)
305        $(call BuildFirmware/Generic,$(1),wr512-3gn-8M,board="WR512-3GN",mtdlayout_wr5123gn8m,851968,7208960)
306endef
307
308ifeq ($(CONFIG_RALINK_RT305X),y)
309define Image/Build/Profile/Default
310        $(call Image/Build/Profile/ARGUS_ATP52B,$(1))
311        $(call Image/Build/Profile/BC2,$(1))
312        $(call Image/Build/Profile/ALL0256N,$(1))
313        $(call Image/Build/Profile/DIR300B1,$(1))
314        $(call Image/Build/Profile/ESR9753,$(1))
315        $(call Image/Build/Profile/RTG32B1,$(1))
316        $(call Image/Build/Profile/FONERA20N,$(1))
317        $(call Image/Build/Profile/V22RW2X2,$(1))
318        $(call Image/Build/Profile/NBG419N,$(1))
319        $(call Image/Build/Profile/NW718,$(1))
320        $(call Image/Build/Profile/OMNIEMB,$(1))
321        $(call Image/Build/Profile/PWH2004,$(1))
322        $(call Image/Build/Profile/WHRG300N,$(1))
323        $(call Image/Build/Profile/WCR150GN,$(1))
324        $(call Image/Build/Profile/F5D8235V2,$(1))
325        $(call Image/Build/Profile/HW5503G,$(1))
326        $(call Image/Build/Profile/MOFI35003GN,$(1))
327        $(call Image/Build/Profile/W502U,$(1))
328        $(call Image/Build/Profile/WR5123GN,$(1))
329        $(call Image/Build/Profile/WL341V3,$(1))
330        $(call Image/Build/Profile/WL351,$(1))
331endef
332endif
333
334define Image/Build/Profile/F5D8235V1
335        $(call Image/Build/Template/F5D8235V1,$(1),f5d8235v1,F5D8235_V1)
336endef
337
338define Image/Build/Profile/RTN15
339        $(call Image/Build/Template/GENERIC_4M,$(1),rt-n15,RT-N15)
340endef
341
342mtdlayout_wlitx4ag300n=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,832k(kernel),2880k(rootfs),64k(user)ro,3712k@0x50000(firmware)
343define Image/Build/Profile/WLITX4AG300N
344        $(call BuildFirmware/Buffalo2,$(1),wli-tx4-ag300n,WLI-TX4-AG300N,mtdlayout_wlitx4ag300n,851968,2949120)
345endef
346
347ifeq ($(CONFIG_RALINK_RT288X),y)
348define Image/Build/Profile/Default
349        $(call Image/Build/Profile/F5D8235V1,$(1))
350        $(call Image/Build/Profile/RTN15,$(1))
351        $(call Image/Build/Profile/WLITX4AG300N,$(1))
352endef
353endif
354
355define Image/Build/squashfs
356        $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
357endef
358
359define Image/Build
360        $(call Image/Build/$(1))
361        dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
362        $(call Image/Build/Profile/$(PROFILE),$(1))
363endef
364
365$(eval $(call BuildImage))
Note: See TracBrowser for help on using the repository browser.