ar71xx: image: simplify Meraki MR16 device definition
[oweals/openwrt.git] / target / linux / ar71xx / image / generic.mk
1 DEVICE_VARS += DAP_SIGNATURE NETGEAR_BOARD_ID NETGEAR_HW_ID NETGEAR_KERNEL_MAGIC ROOTFS_SIZE SEAMA_SIGNATURE
2
3 define Build/mkbuffaloimg
4         $(STAGING_DIR_HOST)/bin/mkbuffaloimg -B $(BOARDNAME) \
5                 -R $$(($(subst k, * 1024,$(ROOTFS_SIZE)))) \
6                 -K $$(($(subst k, * 1024,$(KERNEL_SIZE)))) \
7                 -i $@ -o $@.new
8         mv $@.new $@
9 endef
10
11 define Build/mkwrggimg
12         $(STAGING_DIR_HOST)/bin/mkwrggimg -b \
13                 -i $@ -o $@.imghdr -d /dev/mtdblock/1 \
14                 -m $(BOARDNAME) -s $(DAP_SIGNATURE) \
15                 -v LEDE -B $(REVISION)
16         mv $@.imghdr $@
17 endef
18
19 define Build/netgear-squashfs
20         rm -rf $@.fs $@.squashfs
21         mkdir -p $@.fs/image
22         cp $@ $@.fs/image/uImage
23         $(STAGING_DIR_HOST)/bin/mksquashfs-lzma \
24                 $@.fs $@.squashfs \
25                 -noappend -root-owned -be -b 65536 \
26                 $(if $(SOURCE_DATE_EPOCH),-fixed-time $(SOURCE_DATE_EPOCH))
27
28         dd if=/dev/zero bs=1k count=1 >> $@.squashfs
29         mkimage \
30                 -A mips -O linux -T filesystem -C none \
31                 -M $(NETGEAR_KERNEL_MAGIC) \
32                 -a 0xbf070000 -e 0xbf070000 \
33                 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
34                 -d $@.squashfs $@
35         rm -rf $@.squashfs $@.fs
36 endef
37
38 define Build/netgear-uImage
39         $(call Build/uImage,$(1) -M $(NETGEAR_KERNEL_MAGIC))
40 endef
41
42 define Build/relocate-kernel
43         rm -rf $@.relocate
44         $(CP) ../../generic/image/relocate $@.relocate
45         $(MAKE) -j1 -C $@.relocate KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
46         ( \
47                 dd if=$@.relocate/loader.bin bs=32 conv=sync && \
48                 perl -e '@s = stat("$@"); print pack("N", @s[7])' && \
49                 cat "$@" \
50         ) > "$@.new"
51         mv "$@.new" "$@"
52         rm -rf $@.relocate
53 endef
54
55 define Build/seama
56         $(STAGING_DIR_HOST)/bin/seama -i $@ $(if $(1),$(1),-m "dev=/dev/mtdblock/1" -m "type=firmware")
57         mv $@.seama $@
58 endef
59
60 define Build/seama-seal
61         $(call Build/seama,-s $@.seama $(1))
62 endef
63
64 define Build/uImageHiWiFi
65         # Field ih_name needs to start with "tw150v1"
66         mkimage -A $(LINUX_KARCH) \
67                 -O linux -T kernel \
68                 -C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
69                 -n 'tw150v1 $(call toupper,$(LINUX_KARCH)) LEDE Linux-$(LINUX_VERSION)' -d $@ $@.new
70         @mv $@.new $@
71 endef
72
73 define Build/wrgg-pad-rootfs
74         $(STAGING_DIR_HOST)/bin/padjffs2 $(IMAGE_ROOTFS) -c 64 >>$@
75 endef
76
77
78 define Device/ap531b0
79   DEVICE_TITLE := Rockeetech AP531B0
80   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
81   BOARDNAME := AP531B0
82   IMAGE_SIZE := 16000k
83   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
84 endef
85 TARGET_DEVICES += ap531b0
86
87 define Device/ap90q
88   DEVICE_TITLE := YunCore AP90Q
89   BOARDNAME := AP90Q
90   IMAGE_SIZE := 16000k
91   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
92 endef
93 TARGET_DEVICES += ap90q
94
95 define Device/arduino-yun
96   DEVICE_TITLE := Arduino Yun
97   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
98   BOARDNAME := Yun
99   IMAGE_SIZE := 15936k
100   CONSOLE = ttyATH0,250000
101   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15936k(firmware),64k(nvram),64k(art)ro
102 endef
103 TARGET_DEVICES += arduino-yun
104
105 define Device/bsb
106   DEVICE_TITLE := Smart Electronics Black Swift board
107   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
108   BOARDNAME := BSB
109   IMAGE_SIZE := 16000k
110   CONSOLE := ttyATH0,115200
111   MTDPARTS := spi0.0:128k(u-boot)ro,64k(u-boot-env)ro,16128k(firmware),64k(art)ro
112 endef
113 TARGET_DEVICES += bsb
114
115 define Device/carambola2
116   DEVICE_TITLE := 8devices Carambola2
117   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
118   BOARDNAME := CARAMBOLA2
119   IMAGE_SIZE := 16000k
120   CONSOLE := ttyATH0,115200
121   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
122 endef
123 TARGET_DEVICES += carambola2
124
125 define Device/cf-e316n-v2
126   DEVICE_TITLE := COMFAST CF-E316N v2
127   BOARDNAME := CF-E316N-V2
128   IMAGE_SIZE := 16192k
129   MTDPARTS := spi0.0:64k(u-boot)ro,64k(art)ro,16192k(firmware),64k(art-backup)ro
130 endef
131 TARGET_DEVICES += cf-e316n-v2
132
133 define Device/cf-e320n-v2
134   $(Device/cf-e316n-v2)
135   DEVICE_TITLE := COMFAST CF-E320N v2
136   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
137   BOARDNAME := CF-E320N-V2
138 endef
139 TARGET_DEVICES += cf-e320n-v2
140
141 define Device/cf-e380ac-v1
142   DEVICE_TITLE := COMFAST CF-E380AC v1
143   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k ath10k-firmware-qca988x
144   BOARDNAME := CF-E380AC-V1
145   IMAGE_SIZE := 16128k
146   MTDPARTS := spi0.0:128k(u-boot)ro,64k(art)ro,16128k(firmware),64k(art-backup)ro
147 endef
148 TARGET_DEVICES += cf-e380ac-v1
149
150 define Device/cf-e380ac-v2
151   $(Device/cf-e380ac-v1)
152   DEVICE_TITLE := COMFAST CF-E380AC v2
153   BOARDNAME := CF-E380AC-V2
154   IMAGE_SIZE := 16000k
155   MTDPARTS := spi0.0:256k(u-boot)ro,64k(art)ro,16000k(firmware),64k(art-backup)ro
156 endef
157 TARGET_DEVICES += cf-e380ac-v2
158
159 define Device/cf-e520n
160   DEVICE_TITLE := COMFAST CF-E520N
161   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
162   BOARDNAME := CF-E520N
163   IMAGE_SIZE := 8000k
164   MTDPARTS := spi0.0:64k(u-boot)ro,64k(art)ro,8000k(firmware),64k(art-backup)ro
165 endef
166 TARGET_DEVICES += cf-e520n
167
168 define Device/cf-e530n
169   $(Device/cf-e520n)
170   DEVICE_TITLE := COMFAST CF-E530N
171   BOARDNAME := CF-E530N
172 endef
173 TARGET_DEVICES += cf-e530n
174
175 define Device/cpe505n
176   DEVICE_TITLE := P&W CPE505N
177   BOARDNAME := CPE505N
178   IMAGE_SIZE := 16000k
179   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
180 endef
181 TARGET_DEVICES += cpe505n
182
183 define Device/cpe830
184   $(Device/ap90q)
185   DEVICE_TITLE := YunCore CPE830
186   DEVICE_PACKAGES := rssileds
187   BOARDNAME := CPE830
188 endef
189 TARGET_DEVICES += cpe830
190
191 define Device/cpe870
192   DEVICE_TITLE := YunCore CPE870
193   DEVICE_PACKAGES := rssileds
194   BOARDNAME := CPE870
195   IMAGE_SIZE := 7936k
196   MTDPARTS := spi0.0:64k(u-boot)ro,64k(u-boot-env),7936k(firmware),64k(config)ro,64k(art)ro
197 endef
198 TARGET_DEVICES += cpe870
199
200 define Device/dragino2
201   BOARDNAME := DRAGINO2
202   CONSOLE := ttyATH0,115200
203   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
204   DEVICE_TITLE := Dragino 2 (MS14)
205   IMAGE_SIZE := 16000k
206   MTDPARTS := spi0.0:256k(u-boot)ro,16000k(firmware),64k(config)ro,64k(art)ro
207 endef
208 TARGET_DEVICES += dragino2
209
210 define Device/weio
211   DEVICE_TITLE := WeIO
212   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
213   BOARDNAME := WEIO
214   IMAGE_SIZE := 16000k
215   CONSOLE := ttyATH0,115200
216   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
217 endef
218 TARGET_DEVICES += weio
219
220 define Device/gl-ar150
221   DEVICE_TITLE := GL.iNet GL-AR150
222   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
223   BOARDNAME := GL-AR150
224   IMAGE_SIZE := 16000k
225   CONSOLE := ttyATH0,115200
226   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
227 endef
228 TARGET_DEVICES += gl-ar150
229
230 define Device/gl-ar300
231   DEVICE_TITLE := GL.iNet GL-AR300
232   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
233   BOARDNAME := GL-AR300
234   IMAGE_SIZE := 16000k
235   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
236 endef
237 TARGET_DEVICES += gl-ar300
238
239 define Device/gl-ar300m
240   DEVICE_TITLE := GL.iNet GL-AR300M
241   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
242   BOARDNAME := GL-AR300M
243   IMAGE_SIZE := 16000k
244   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
245 endef
246 TARGET_DEVICES += gl-ar300m
247
248 define Device/gl-domino
249   DEVICE_TITLE := GL.iNet Domino Pi
250   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
251   BOARDNAME := DOMINO
252   IMAGE_SIZE := 16000k
253   CONSOLE := ttyATH0,115200
254   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
255 endef
256 TARGET_DEVICES += gl-domino
257
258 define Device/gl-mifi
259   DEVICE_TITLE := GL.iNet GL-MiFi
260   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
261   BOARDNAME := GL-MIFI
262   IMAGE_SIZE := 16000k
263   CONSOLE := ttyATH0,115200
264   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
265 endef
266 TARGET_DEVICES += gl-mifi
267
268 define Device/lima
269   DEVICE_TITLE := 8devices Lima
270   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
271   BOARDNAME := LIMA
272   IMAGE_SIZE := 15616k
273   MTDPARTS := spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,256k(art)ro,-(firmware)
274 endef
275 TARGET_DEVICES += lima
276
277 define Device/mr12
278   DEVICE_TITLE := Meraki MR12
279   DEVICE_PACKAGES := kmod-spi-gpio
280   BOARDNAME := MR12
281   ROOTFS_SIZE := 13440k
282   IMAGE_SIZE := 15680k
283   MTDPARTS := spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13440k(rootfs),2240k(kernel),64k(mac),128k(art)ro,15680k@0x80000(firmware)
284   IMAGE/kernel.bin := append-kernel
285   IMAGE/rootfs.bin := append-rootfs | pad-rootfs
286   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
287   IMAGES := kernel.bin rootfs.bin sysupgrade.bin
288 endef
289
290 define Device/mr16
291   $(Device/mr12)
292   DEVICE_TITLE := Meraki MR16
293   BOARDNAME := MR16
294 endef
295 TARGET_DEVICES += mr12 mr16
296
297 define Device/dr344
298   DEVICE_TITLE := Wallys DR344
299   BOARDNAME := DR344
300   KERNEL_SIZE := 1408k
301   ROOTFS_SIZE := 6336k
302   IMAGE_SIZE := 7744k
303   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
304   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
305 endef
306 TARGET_DEVICES += dr344
307
308 define Device/dr531
309   DEVICE_TITLE := Wallys DR531
310   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
311   BOARDNAME := DR531
312   IMAGE_SIZE := 7808k
313   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(partition-table)ro,7808k(firmware),64k(art)ro
314 endef
315 TARGET_DEVICES += dr531
316
317 define Device/wndr3700
318   DEVICE_TITLE := NETGEAR WNDR3700
319   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport kmod-leds-wndr3700-usb
320   BOARDNAME := WNDR3700
321   NETGEAR_KERNEL_MAGIC := 0x33373030
322   NETGEAR_BOARD_ID := WNDR3700
323   IMAGE_SIZE := 7680k
324   MTDPARTS := spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,7680k(firmware),64k(art)ro
325   IMAGES := sysupgrade.bin factory.img factory-NA.img
326   KERNEL := kernel-bin | patch-cmdline | lzma -d20 | netgear-uImage lzma
327   IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | netgear-squashfs | append-rootfs | pad-rootfs
328   IMAGE/sysupgrade.bin := $$(IMAGE/default) | check-size $$$$(IMAGE_SIZE)
329   IMAGE/factory.img := $$(IMAGE/default) | netgear-dni | check-size $$$$(IMAGE_SIZE)
330   IMAGE/factory-NA.img := $$(IMAGE/default) | netgear-dni NA | check-size $$$$(IMAGE_SIZE)
331 endef
332
333 define Device/wndr3700v2
334   $(Device/wndr3700)
335   DEVICE_TITLE := NETGEAR WNDR3700 v2
336   NETGEAR_BOARD_ID := WNDR3700v2
337   NETGEAR_KERNEL_MAGIC := 0x33373031
338   NETGEAR_HW_ID := 29763654+16+64
339   IMAGE_SIZE := 15872k
340   MTDPARTS := spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,15872k(firmware),64k(art)ro
341   IMAGES := sysupgrade.bin factory.img
342 endef
343
344 define Device/wndr3800
345   $(Device/wndr3700v2)
346   DEVICE_TITLE := NETGEAR WNDR3800
347   NETGEAR_BOARD_ID := WNDR3800
348   NETGEAR_HW_ID := 29763654+16+128
349 endef
350
351 define Device/wndr3800ch
352   $(Device/wndr3800)
353   DEVICE_TITLE := NETGEAR WNDR3800 (Ch)
354   NETGEAR_BOARD_ID := WNDR3800CH
355 endef
356
357 define Device/wndrmac
358   $(Device/wndr3700v2)
359   DEVICE_TITLE := NETGEAR WNDRMAC
360   NETGEAR_BOARD_ID := WNDRMAC
361 endef
362
363 define Device/wndrmacv2
364   $(Device/wndr3800)
365   DEVICE_TITLE := NETGEAR WNDRMAC v2
366   NETGEAR_BOARD_ID := WNDRMACv2
367 endef
368 TARGET_DEVICES += wndr3700 wndr3700v2 wndr3800 wndr3800ch wndrmac wndrmacv2
369
370 define Device/cap324
371   DEVICE_TITLE := PowerCloud CAP324 Cloud AP
372   BOARDNAME := CAP324
373   DEVICE_PROFILE := CAP324
374   IMAGE_SIZE := 15296k
375   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,15296k(firmware),640k(certs),64k(nvram),64k(art)ro
376 endef
377 TARGET_DEVICES += cap324
378
379 define Device/cap324-nocloud
380   DEVICE_TITLE := PowerCloud CAP324 Cloud AP (No-Cloud)
381   BOARDNAME := CAP324
382   DEVICE_PROFILE := CAP324
383   IMAGE_SIZE := 16000k
384   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
385 endef
386 TARGET_DEVICES += cap324-nocloud
387
388 define Device/cr3000
389   DEVICE_TITLE := PowerCloud CR3000 Cloud Router
390   BOARDNAME := CR3000
391   DEVICE_PROFILE := CR3000
392   IMAGE_SIZE := 7104k
393   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)ro
394 endef
395 TARGET_DEVICES += cr3000
396
397 define Device/cr3000-nocloud
398   DEVICE_TITLE := PowerCloud CR3000 (No-Cloud)
399   BOARDNAME := CR3000
400   DEVICE_PROFILE := CR3000
401   IMAGE_SIZE := 7808k
402   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
403 endef
404 TARGET_DEVICES += cr3000-nocloud
405
406 define Device/cr5000
407   DEVICE_TITLE := PowerCloud CR5000 Cloud Router
408   DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-core
409   BOARDNAME := CR5000
410   DEVICE_PROFILE := CR5000
411   IMAGE_SIZE := 7104k
412   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)ro
413 endef
414 TARGET_DEVICES += cr5000
415
416 define Device/cr5000-nocloud
417   DEVICE_TITLE := PowerCloud CR5000 (No-Cloud)
418   DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-core
419   BOARDNAME := CR5000
420   DEVICE_PROFILE := CR5000
421   IMAGE_SIZE := 7808k
422   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
423 endef
424 TARGET_DEVICES += cr5000-nocloud
425
426 define Device/pqi-air-pen
427   DEVICE_TITLE := PQI Air Pen
428   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
429   BOARDNAME := PQI-AIR-PEN
430   IMAGE_SIZE := 7744k
431   CONSOLE := ttyATH0,115200
432   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(art)ro,64k(NVRAM)ro,7680k(firmware),64k(CONF)
433 endef
434 TARGET_DEVICES += pqi-air-pen
435
436 define Device/antminer-s1
437   $(Device/tplink-8mlzma)
438   DEVICE_TITLE := Antminer-S1
439   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-crypto-manager kmod-i2c-gpio-custom kmod-usb-hid
440   BOARDNAME := ANTMINER-S1
441   DEVICE_PROFILE := ANTMINERS1
442   TPLINK_HWID := 0x04440101
443   CONSOLE := ttyATH0,115200
444 endef
445
446 define Device/antminer-s3
447   $(Device/tplink-8mlzma)
448   DEVICE_TITLE := Antminer-S3
449   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-crypto-manager kmod-i2c-gpio-custom kmod-usb-hid
450   BOARDNAME := ANTMINER-S3
451   DEVICE_PROFILE := ANTMINERS3
452   TPLINK_HWID := 0x04440301
453   CONSOLE := ttyATH0,115200
454 endef
455
456 define Device/antrouter-r1
457   $(Device/tplink-8mlzma)
458   DEVICE_TITLE := Antrouter-R1
459   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
460   BOARDNAME := ANTROUTER-R1
461   DEVICE_PROFILE := ANTROUTERR1
462   TPLINK_HWID := 0x44440101
463   CONSOLE := ttyATH0,115200
464 endef
465
466 define Device/el-m150
467   $(Device/tplink-8mlzma)
468   DEVICE_TITLE := EasyLink EL-M150
469   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
470   BOARDNAME := EL-M150
471   DEVICE_PROFILE := ELM150
472   TPLINK_HWID := 0x01500101
473   CONSOLE := ttyATH0,115200
474 endef
475
476 define Device/el-mini
477   $(Device/tplink-8mlzma)
478   DEVICE_TITLE := EasyLink EL-MINI
479   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
480   BOARDNAME := EL-MINI
481   DEVICE_PROFILE := ELMINI
482   TPLINK_HWID := 0x01530001
483   CONSOLE := ttyATH0,115200
484 endef
485 TARGET_DEVICES += antminer-s1 antminer-s3 antrouter-r1 el-m150 el-mini
486
487 define Device/gl-inet-6408A-v1
488   $(Device/tplink-8mlzma)
489   DEVICE_TITLE := GL.iNet 6408
490   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
491   BOARDNAME := GL-INET
492   DEVICE_PROFILE := GLINET
493   TPLINK_HWID := 0x08000001
494   CONSOLE := ttyATH0,115200
495 endef
496
497 define Device/gl-inet-6416A-v1
498   $(Device/tplink-16mlzma)
499   DEVICE_TITLE := GL.iNet 6416
500   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
501   BOARDNAME := GL-INET
502   DEVICE_PROFILE := GLINET
503   TPLINK_HWID := 0x08000001
504   CONSOLE := ttyATH0,115200
505 endef
506 TARGET_DEVICES += gl-inet-6408A-v1 gl-inet-6416A-v1
507
508 define Device/jwap230
509   DEVICE_TITLE := jjPlus JWAP230
510   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
511   BOARDNAME := JWAP230
512   IMAGE_SIZE := 16000k
513   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
514 endef
515 TARGET_DEVICES += jwap230
516
517 define Device/r602n
518   DEVICE_TITLE := P&W R602N
519   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
520   BOARDNAME := R602N
521   IMAGE_SIZE := 16000k
522   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
523 endef
524 TARGET_DEVICES += r602n
525
526 define Device/rnx-n360rt
527   $(Device/tplink-4m)
528   DEVICE_TITLE := Rosewill RNX-N360RT
529   BOARDNAME := TL-WR941ND
530   DEVICE_PROFILE := RNXN360RT
531   TPLINK_HWID := 0x09410002
532   TPLINK_HWREV := 0x00420001
533 endef
534 TARGET_DEVICES += rnx-n360rt
535
536 define Device/mc-mac1200r
537   $(Device/tplink-8mlzma)
538   DEVICE_TITLE := Mercury MAC1200R
539   DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca988x
540   BOARDNAME := MC-MAC1200R
541   DEVICE_PROFILE := MAC1200R
542   TPLINK_HWID := 0x12000001
543 endef
544 TARGET_DEVICES += mc-mac1200r
545
546 define Device/minibox-v1
547   $(Device/tplink-16mlzma)
548   DEVICE_TITLE := Gainstrong MiniBox V1.0
549   DEVICE_PACKAGES := kmod-usb-core kmod-usb2  kmod-usb-ledtrig-usbport
550   BOARDNAME := MINIBOX-V1
551   DEVICE_PROFILE := MINIBOXV1
552   TPLINK_HWID := 0x3C000201
553   CONSOLE := ttyATH0,115200
554 endef
555 TARGET_DEVICES += minibox-v1
556
557 define Device/omy-g1
558   $(Device/tplink-16mlzma)
559   DEVICE_TITLE := OMYlink OMY-G1
560   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
561   BOARDNAME := OMY-G1
562   DEVICE_PROFILE := OMYG1
563   TPLINK_HWID := 0x06660101
564 endef
565
566 define Device/omy-x1
567   $(Device/tplink-8mlzma)
568   DEVICE_TITLE := OMYlink OMY-X1
569   BOARDNAME := OMY-X1
570   DEVICE_PROFILE := OMYX1
571   TPLINK_HWID := 0x06660201
572 endef
573 TARGET_DEVICES += omy-g1 omy-x1
574
575 define Device/onion-omega
576   $(Device/tplink-16mlzma)
577   DEVICE_TITLE := Onion Omega
578   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-i2c-core kmod-i2c-gpio-custom kmod-spi-bitbang kmod-spi-dev kmod-spi-gpio kmod-spi-gpio-custom kmod-usb-serial
579   BOARDNAME := ONION-OMEGA
580   DEVICE_PROFILE := OMEGA
581   TPLINK_HWID := 0x04700001
582   CONSOLE := ttyATH0,115200
583 endef
584 TARGET_DEVICES += onion-omega
585
586 define Device/sc1750
587   DEVICE_TITLE := Abicom SC1750
588   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
589   BOARDNAME := SC1750
590   IMAGE_SIZE := 15744k
591   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15744k(firmware),128k(APConfig),128k(kplog),64k(ART)
592 endef
593 TARGET_DEVICES += sc1750
594
595 define Device/sc300m
596   DEVICE_TITLE := Abicom SC300M
597   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
598   BOARDNAME := SC300M
599   IMAGE_SIZE := 15744k
600   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15744k(firmware),128k(APConfig),128k(kplog),64k(ART)
601 endef
602 TARGET_DEVICES += sc300m
603
604 define Device/sc450
605   DEVICE_TITLE := Abicom SC450
606   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
607   BOARDNAME := SC450
608   IMAGE_SIZE := 15744k
609   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15744k(firmware),128k(APConfig),128k(kplog),64k(ART)
610 endef
611 TARGET_DEVICES += sc450
612
613 define Device/smart-300
614   $(Device/tplink-8mlzma)
615   DEVICE_TITLE := NC-LINK SMART-300
616   BOARDNAME := SMART-300
617   DEVICE_PROFILE := SMART-300
618   TPLINK_HWID := 0x93410001
619 endef
620 TARGET_DEVICES += smart-300
621
622 define Device/som9331
623   $(Device/tplink-8mlzma)
624   DEVICE_TITLE := OpenEmbed SOM9331
625   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-i2c-core kmod-i2c-gpio-custom kmod-spi-bitbang kmod-spi-dev kmod-spi-gpio kmod-spi-gpio-custom kmod-usb-serial
626   BOARDNAME := SOM9331
627   DEVICE_PROFILE := SOM9331
628   TPLINK_HWID := 0x04800054
629   CONSOLE := ttyATH0,115200
630 endef
631 TARGET_DEVICES += som9331
632
633 define Device/sr3200
634   DEVICE_TITLE := YunCore SR3200
635   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k ath10k-firmware-qca988x
636   BOARDNAME := SR3200
637   IMAGE_SIZE := 16000k
638   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
639 endef
640 TARGET_DEVICES += sr3200
641
642 define Device/xd3200
643   $(Device/sr3200)
644   DEVICE_TITLE := YunCore XD3200
645   DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca988x
646   BOARDNAME := XD3200
647 endef
648 TARGET_DEVICES += xd3200
649
650 define Device/tellstick-znet-lite
651   $(Device/tplink-16mlzma)
652   DEVICE_TITLE := TellStick ZNet Lite
653   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-acm kmod-usb-serial kmod-usb-serial-pl2303
654   BOARDNAME := TELLSTICK-ZNET-LITE
655   DEVICE_PROFILE := TELLSTICKZNETLITE
656   TPLINK_HWID := 0x00726001
657   CONSOLE := ttyATH0,115200
658 endef
659 TARGET_DEVICES += tellstick-znet-lite
660
661 define Device/oolite
662   $(Device/tplink-16mlzma)
663   DEVICE_TITLE := Gainstrong OOLITE
664   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
665   BOARDNAME := GS-OOLITE
666   DEVICE_PROFILE := OOLITE
667   TPLINK_HWID := 0x3C000101
668   CONSOLE := ttyATH0,115200
669 endef
670 TARGET_DEVICES += oolite
671
672 define Device/NBG6616
673   DEVICE_TITLE := ZyXEL NBG6616
674   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-storage kmod-rtc-pcf8563 kmod-ath10k ath10k-firmware-qca988x
675   BOARDNAME := NBG6616
676   KERNEL_SIZE := 2048k
677   IMAGE_SIZE := 15323k
678   MTDPARTS := spi0.0:192k(u-boot)ro,64k(env)ro,64k(RFdata)ro,384k(zyxel_rfsd),384k(romd),64k(header),2048k(kernel),13184k(rootfs),15232k@0x120000(firmware)
679   CMDLINE += mem=128M
680   IMAGES := sysupgrade.bin
681   KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 boot/vmlinux.lzma.uImage
682   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
683   # We cannot currently build a factory image. It is the sysupgrade image
684   # prefixed with a header (which is actually written into the MTD device).
685   # The header is 2kiB and is filled with 0xff. The format seems to be:
686   #   2 bytes:  0x0000
687   #   2 bytes:  checksum of the data partition (big endian)
688   #   4 bytes:  length of the contained image file (big endian)
689   #  32 bytes:  Firmware Version string (NUL terminated, 0xff padded)
690   #   2 bytes:  0x0000
691   #   2 bytes:  checksum over the header partition (big endian)
692   #  32 bytes:  Model (e.g. "NBG6616", NUL termiated, 0xff padded)
693   #      rest: 0xff padding
694   #
695   # The checksums are calculated by adding up all bytes and if a 16bit
696   # overflow occurs, one is added and the sum is masked to 16 bit:
697   #   csum = csum + databyte; if (csum > 0xffff) { csum += 1; csum &= 0xffff };
698   # Should the file have an odd number of bytes then the byte len-0x800 is
699   # used additionally.
700   # The checksum for the header is calcualted over the first 2048 bytes with
701   # the firmware checksum as the placeholder during calculation.
702   #
703   # The header is padded with 0xff to the erase block size of the device.
704 endef
705 TARGET_DEVICES += NBG6616
706
707 define Device/c-55
708   DEVICE_TITLE := AirTight Networks C-55
709   DEVICE_PACKAGES := kmod-ath9k
710   BOARDNAME := C-55
711   KERNEL_SIZE := 2048k
712   IMAGE_SIZE := 15872k
713   MTDPARTS := spi0.0:256k(u-boot)ro,128k(u-boot-env)ro,2048k(kernel),13824k(rootfs),13824k(opt)ro,2624k(failsafe)ro,64k(art)ro,15872k@0x60000(firmware)
714   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
715 endef
716 TARGET_DEVICES += c-55
717
718 define Device/hiwifi-hc6361
719   DEVICE_TITLE := HiWiFi HC6361
720   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage \
721         kmod-fs-ext4 kmod-nls-iso8859-1 e2fsprogs
722   BOARDNAME := HiWiFi-HC6361
723   DEVICE_PROFILE := HIWIFI_HC6361
724   IMAGE_SIZE := 16128k
725   KERNEL := kernel-bin | patch-cmdline | lzma | uImageHiWiFi lzma
726   CONSOLE := ttyATH0,115200
727   MTDPARTS := spi0.0:64k(u-boot)ro,64k(bdinfo)ro,16128k(firmware),64k(backup)ro,64k(art)ro
728 endef
729 TARGET_DEVICES += hiwifi-hc6361
730
731 define Device/seama
732   LOADER_TYPE := bin
733   BLOCKSIZE := 64k
734   KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma
735   KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | seama
736   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX).seama
737   IMAGES := sysupgrade.bin factory.bin
738
739   # 64 bytes offset:
740   # - 28 bytes seama_header
741   # - 36 bytes of META data (4-bytes aligned)
742   IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
743   IMAGE/sysupgrade.bin := \
744         $$(IMAGE/default) | seama | pad-rootfs | \
745         check-size $$$$(IMAGE_SIZE)
746   IMAGE/factory.bin := \
747         $$(IMAGE/default) | seama | pad-rootfs | \
748         seama-seal -m "signature=$$$$(SEAMA_SIGNATURE)" | \
749         check-size $$$$(IMAGE_SIZE)
750   SEAMA_SIGNATURE :=
751 endef
752
753 define Device/dir-869-a1
754   $(Device/seama)
755   DEVICE_TITLE := D-Link DIR-869 rev. A1
756   DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca988x
757   BOARDNAME := DIR-869-A1
758   IMAGE_SIZE := 15872k
759   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
760   SEAMA_SIGNATURE := wrgac54_dlink.2015_dir869
761   IMAGE/factory.bin := \
762         $$(IMAGE/default) | pad-rootfs -x 64 | \
763         seama | seama-seal -m "signature=$$$$(SEAMA_SIGNATURE)" | \
764         check-size $$$$(IMAGE_SIZE)
765 endef
766
767 define Device/mynet-n600
768   $(Device/seama)
769   DEVICE_TITLE := Western Digital My Net N600
770   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
771   BOARDNAME := MYNET-N600
772   IMAGE_SIZE := 15808k
773   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
774   SEAMA_SIGNATURE := wrgnd16_wd_db600
775 endef
776
777 define Device/mynet-n750
778   $(Device/seama)
779   DEVICE_TITLE := Western Digital My Net N750
780   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
781   BOARDNAME := MYNET-N750
782   IMAGE_SIZE := 15808k
783   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
784   SEAMA_SIGNATURE := wrgnd13_wd_av
785 endef
786
787 define Device/qihoo-c301
788   $(Device/seama)
789   DEVICE_TITLE := Qihoo C301
790   DEVICE_PACKAGES :=  kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
791   BOARDNAME := QIHOO-C301
792   IMAGE_SIZE := 15744k
793   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(devdata),64k(devconf),15744k(firmware),64k(warm_start),64k(action_image_config),64k(radiocfg)ro;spi0.1:15360k(upgrade2),1024k(privatedata)
794   SEAMA_SIGNATURE := wrgac26_qihoo360_360rg
795 endef
796 TARGET_DEVICES += dir-869-a1 mynet-n600 mynet-n750 qihoo-c301
797
798 define Device/dap-2695-a1
799   DEVICE_TITLE := D-Link DAP-2695 rev. A1
800   DEVICE_PACKAGES := ath10k-firmware-qca988x kmod-ath10k
801   BOARDNAME := DAP-2695-A1
802   IMAGES := factory.img sysupgrade.bin
803   IMAGE_SIZE := 15360k
804   IMAGE/factory.img := append-kernel | pad-offset 65536 160 | append-rootfs | wrgg-pad-rootfs | mkwrggimg | check-size $$$$(IMAGE_SIZE)
805   IMAGE/sysupgrade.bin := append-kernel | pad-offset 65536 160 | mkwrggimg | append-rootfs | wrgg-pad-rootfs | check-size $$$$(IMAGE_SIZE)
806   KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma
807   KERNEL_INITRAMFS := $$(KERNEL) | mkwrggimg
808   MTDPARTS := spi0.0:256k(bootloader)ro,64k(bdcfg)ro,64k(rgdb)ro,64k(langpack)ro,15360k(firmware),448k(captival)ro,64k(certificate)ro,64k(radiocfg)ro
809   DAP_SIGNATURE := wapac02_dkbs_dap2695
810 endef
811 TARGET_DEVICES += dap-2695-a1
812
813 define Device/bhr-4grv2
814   DEVICE_TITLE := Buffalo BHR-4GRV2
815   BOARDNAME := BHR-4GRV2
816   ROOTFS_SIZE := 14528k
817   KERNEL_SIZE := 1472k
818   IMAGE_SIZE := 16000k
819   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware)
820   IMAGES := sysupgrade.bin factory.bin
821   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
822   IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | mkbuffaloimg
823 endef
824 TARGET_DEVICES += bhr-4grv2
825
826 define Device/wpj-16m
827   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
828   MTDPARTS := spi0.0:192k(u-boot)ro,16128k(firmware),64k(art)ro
829   IMAGE_SIZE := 16128k
830 endef
831
832 define Device/wpj342
833   $(Device/wpj-16m)
834   DEVICE_TITLE := Compex WPJ342 (16MB flash)
835   BOARDNAME := WPJ342
836 endef
837
838 define Device/wpj344
839   $(Device/wpj-16m)
840   DEVICE_TITLE := Compex WPJ344 (16MB flash)
841   BOARDNAME := WPJ344
842 endef
843
844 define Device/wpj531
845   $(Device/wpj-16m)
846   DEVICE_TITLE := Compex WPJ531 (16MB flash)
847   BOARDNAME := WPJ531
848 endef
849
850 define Device/wpj558
851   $(Device/wpj-16m)
852   DEVICE_TITLE := Compex WPJ558 (16MB flash)
853   BOARDNAME := WPJ558
854 endef
855
856 define Device/wpj563
857   $(Device/wpj-16m)
858   DEVICE_TITLE := Compex WPJ563 (16MB flash)
859   BOARDNAME := WPJ563
860 endef
861 TARGET_DEVICES += wpj342 wpj344 wpj531 wpj558 wpj563
862
863 define Device/wrtnode2q
864   DEVICE_TITLE := WRTnode2Q
865   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
866   BOARDNAME := WRTNODE2Q
867   IMAGE_SIZE := 16064k
868   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(art)ro,16064k(firmware),16384k@0x0(fullflash)
869 endef
870 TARGET_DEVICES += wrtnode2q
871
872 define Device/zbt-we1526
873   DEVICE_TITLE := Zbtlink ZBT-WE1526
874   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
875   BOARDNAME := ZBT-WE1526
876   IMAGE_SIZE := 16000k
877   KERNEL_SIZE := 1472k
878   ROOTFS_SIZE := 14528k
879   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware)
880   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
881 endef
882 TARGET_DEVICES += zbt-we1526
883
884 define Device/fritz300e
885   DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E
886   DEVICE_PACKAGES := fritz-tffs rssileds -swconfig -uboot-envtools
887   BOARDNAME := FRITZ300E
888   SUPPORTED_DEVICES := fritz300e
889   IMAGE_SIZE := 15232k
890   KERNEL := kernel-bin | patch-cmdline | lzma | eva-image
891   IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | \
892         append-squashfs-fakeroot-be | pad-to 256 | \
893         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
894 endef
895 TARGET_DEVICES += fritz300e