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 14define sysupname 15$(call imgname,$(1),$(2))-sysupgrade.bin 16endef 17 18VMLINUX:=$(IMG_PREFIX)-vmlinux 19UIMAGE:=$(IMG_PREFIX)-uImage 20fs_squash:=squashfs-only 21ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) 22 fs_squash:=initramfs 23 VMLINUX:=$(IMG_PREFIX)-vmlinux-initramfs 24 UIMAGE:=$(IMG_PREFIX)-uImage-initramfs 25endif 26 27ifeq ($(CONFIG_RALINK_RT288X),y) 28define kernel_entry 29-a 0x88000000 -e 0x88000000 30endef 31else 32define kernel_entry 33-a 0x80000000 -e 0x80000000 34endef 35endif 36 37define mkcmdline 38board=$(1) console=$(2),$(3) 39endef 40 41define CompressLzma 42 $(STAGING_DIR_HOST)/bin/lzma e $(1) -lc1 -lp2 -pb2 $(2) 43endef 44 45define PatchKernelLzma 46 cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1) 47 $(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))' 48 $(call CompressLzma,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).bin.lzma) 49endef 50 51define MkImage 52 $(eval imagename=$(if $(4),$(4),MIPS OpenWrt Linux-$(LINUX_VERSION))) 53 mkimage -A mips -O linux -T kernel -C $(1) $(call kernel_entry)\ 54 -n "$(imagename)" \ 55 -d $(2) $(3) 56endef 57 58define MkImageLzma 59 $(call PatchKernelLzma,$(1),$(2)) 60 $(call MkImage,lzma,$(KDIR)/vmlinux-$(1).bin.lzma,$(KDIR)/vmlinux-$(1).uImage,$(3)) 61endef 62 63define MkCombineduImage 64 $(call PatchKernelLzma,$(2),$(3)) 65 if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt `expr $(4) - 64` ]; then \ 66 echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \ 67 else if [ `stat -c%s "$(KDIR)/root.$(1)"` -gt $(5) ]; then \ 68 echo "Warning: $(KDIR)/root.$(1) is too big"; \ 69 else \ 70 ( dd if=$(KDIR)/vmlinux-$(2).bin.lzma bs=`expr $(4) - 64` conv=sync ; dd if=$(KDIR)/root.$(1) ) > $(KDIR)/vmlinux-$(2).bin.lzma.combined ; \ 71 fi ; fi 72 $(call MkImage,lzma,$(KDIR)/vmlinux-$(2).bin.lzma.combined,$(call sysupname,$(1),$(2)),$(6)) 73endef 74 75define CatFiles 76 if [ `stat -c%s "$(1)"` -gt $(2) ]; then \ 77 echo "Warning: $(1) is too big"; \ 78 else if [ `stat -c%s $(3)` -gt $(4) ]; then \ 79 echo "Warning: $(3) is too big"; \ 80 else \ 81 ( dd if=$(1) bs=$(2) conv=sync; dd if=$(3) ) > $(5); \ 82 fi; fi 83endef 84 85define Sysupgrade/KRuImage 86 $(call CatFiles,$(KDIR)/vmlinux-$(2).uImage,$(3),$(KDIR)/root.$(1),$(4),$(call sysupname,$(1),$(2))) 87endef 88 89define mkmtd 90mtdparts=$(1):$(2) 91endef 92 93define mkmtd/phys 94$(call mkmtd,physmap-flash.0,$(1)) 95endef 96 97define mkmtd/spi 98$(call mkmtd,spi0.0,$(1)) 99endef 100 101define Image/BuildKernel 102 cp $(KDIR)/vmlinux.elf $(BIN_DIR)/$(VMLINUX).elf 103 cp $(KDIR)/vmlinux $(BIN_DIR)/$(VMLINUX).bin 104 $(call CompressLzma,$(KDIR)/vmlinux,$(KDIR)/vmlinux.bin.lzma) 105 $(call MkImage,lzma,$(KDIR)/vmlinux.bin.lzma,$(KDIR)/uImage.lzma) 106 cp $(KDIR)/uImage.lzma $(BIN_DIR)/$(UIMAGE).bin 107 $(call Image/Build/Initramfs) 108endef 109 110define BuildFirmware/Generic 111 $(call MkImageLzma,$(2),$(3),$(6)) 112 $(call Sysupgrade/KRuImage,$(1),$(2),$(4),$(5)) 113endef 114 115define BuildFirmware/Generic/initramfs 116 $(call MkImageLzma,$(2),$(3)) 117 $(CP) $(KDIR)/vmlinux-$(2).uImage $(call imgname,$(1),$(2))-uImage.bin 118endef 119 120mtdlayout_4M=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,896k(kernel),2880k(rootfs),3776k@0x50000(firmware) 121define BuildFirmware/GENERIC_4M 122 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_4M)),917504,2949120) 123endef 124 125define BuildFirmware/GENERIC_4M/initramfs 126 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_4M))) 127endef 128 129mtdlayout_8M=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,896k(kernel),6976k(rootfs),7872k@0x50000(firmware) 130kernel_size_8M=917504 131rootfs_size_8M=7143424 132define BuildFirmware/GENERIC_8M 133 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_8M)),$(kernel_size_8M),$(rootfs_size_8M)) 134endef 135 136define BuildFirmware/GENERIC_8M/initramfs 137 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_8M))) 138endef 139 140define BuildFirmware/UIMAGE_8M 141 $(call MkCombineduImage,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_8M)),$(kernel_size_8M),$(rootfs_size_8M),$(7)) 142endef 143 144mtdlayout_edimax_3g6200n=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,896k(kernel),2752k(rootfs),128k@0x3e0000(cimage)ro,3648k@0x50000(firmware) 145define BuildFirmware/3G6200N 146 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_edimax_3g6200n)),917504,2818048) 147endef 148 149mtdlayout_allnet_all5002=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,1024k(kernel),31424k(rootfs),32448k@0x50000(firmware) 150define BuildFirmware/ALL5002 151 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_allnet_all5002)),1048576,32178176) 152endef 153 154define BuildFirmware/ALL5002/initramfs 155 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_allnet_all5002))) 156endef 157 158mtdlayout_argus_atp52b=192k(bootloader)ro,64k(config),64k(factory),1152k(kernel),6656k(rootfs),7808k@0x50000(firmware) 159mtd_argus_atp52b_kernel_part_size=1179648 160mtd_argus_atp52b_rootfs_part_size=6815744 161define BuildFirmware/ARGUS_ATP52B 162 $(call BuildFirmware/Generic,$(1),$(2),board=$(3) $(call mkmtd/phys,$(mtdlayout_argus_atp52b)),$(mtd_argus_atp52b_kernel_part_size),$(mtd_argus_atp52b_rootfs_part_size)) 163endef 164 165define BuildFirmware/Buffalo 166 $(call MkImageLzma,$(2),$(3)) 167 $(call Sysupgrade/KRuImage,$(1),$(2),$(4),$(5)) 168 if [ -e "$(call sysupname,$(1),$(2))" ]; then \ 169 buffalo-enc -p $(3) -v 1.76 \ 170 -i $(KDIR)/vmlinux-$(2).uImage \ 171 -o $(KDIR)/vmlinux-$(2).uImage.enc; \ 172 buffalo-enc -p $(3) -v 1.76 \ 173 -i $(KDIR)/root.$(1) \ 174 -o $(KDIR)/root.$(2).enc; \ 175 buffalo-tag -b $(3) -p $(3) -a ram -v 1.76 -m 1.01 \ 176 -l mlang8 -f 1 -r EU \ 177 -i $(KDIR)/vmlinux-$(2).uImage.enc \ 178 -i $(KDIR)/root.$(2).enc \ 179 -o $(call imgname,$(1),$(2))-factory-EU.bin; \ 180 fi 181endef 182 183 184define BuildFirmware/Buffalo2 185 $(call BuildFirmware/Generic,$(1),$(2),board=$(3) $(4),$(5),$(6)) 186endef 187 188mtdlayout_dir300b1=192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,896k(kernel),2880k(rootfs),3776k@0x50000(firmware) 189mtd_dir300b1_kernel_part_size=917504 190mtd_dir300b1_rootfs_part_size=2949120 191define BuildFirmware/DIR300B1 192 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_dir300b1)),$(mtd_dir300b1_kernel_part_size),$(mtd_dir300b1_rootfs_part_size)) 193 mkwrgimg -s $(4) -d /dev/mtdblock/2 \ 194 -i $(call sysupname,$(1),$(2)) \ 195 -o $(call imgname,$(1),$(2))-factory.bin 196endef 197 198define BuildFirmware/DIR300B1/initramfs 199 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_dir300b1)),$(mtd_dir300b1_kernel_part_size),$(mtd_dir300b1_rootfs_part_size)) 200endef 201 202mtdlayout_dir615h1=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,896k(kernel),2880k(rootfs),3776k@0x50000(firmware) 203define BuildFirmware/DIR615H1 204 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_dir615h1)),917504,2949120) 205 mkdir615h1 -e $(call sysupname,$(1),$(2)) \ 206 -o $(call imgname,$(1),$(2))-factory.bin 207endef 208 209define BuildFirmware/DIR615H1/initramfs 210 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_dir615h1))) 211endef 212 213mtdlayout_dap1350=192k(u-boot)ro,64k(devdata)ro,192k(devconf)ro,256k(devlang)ro,1088k(kernel),6400k(rootfs),7488k@0xb0000(firmware) 214mtd_dap1350_kernel_part_size=1114112 215mtd_dap1350_rootfs_part_size=6553600 216define BuildFirmware/DAP1350 217 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),ttyS1,115200) $(call mkmtd/phys,$(mtdlayout_dap1350)),$(mtd_dap1350_kernel_part_size),$(mtd_dap1350_rootfs_part_size)) 218 mkdapimg -s $(4) \ 219 -i $(call sysupname,$(1),$(2)) \ 220 -o $(call imgname,$(1),$(2))-factory.bin 221endef 222 223define BuildFirmware/DAP1350/initramfs 224 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),ttyS1,115200) $(call mkmtd/phys,$(mtdlayout_dap1350)),$(mtd_dap1350_kernel_part_size),$(mtd_dap1350_rootfs_part_size)) 225endef 226 227mtdlayout_dir620a1=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,896k(kernel),6976k(rootfs),7872k@0x50000(firmware) 228kernel_size_dir620a1=917504 229rootfs_size_dir620a1=7143424 230define BuildFirmware/DIR620A1 231 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_dir620a1)),$(kernel_size_dir620a1),$(rootfs_size_dir620a1),DIR_620) 232endef 233 234define BuildFirmware/DIR620A1/initramfs 235 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_dir620a1)),$(kernel_size_dir620a1),$(rootfs_size_dir620a1)) 236endef 237 238define BuildFirmware/Edimax 239 if [ -e "$(call sysupname,$(1),$(2))" ]; then \ 240 mkedimaximg -i $(call sysupname,$(1),$(2)) \ 241 -o $(call imgname,$(1),$(2))-factory.bin \ 242 -s $(3) -m $(4) -f $(5) -S $(6); \ 243 fi 244endef 245 246mtdlayout_f5d8235=320k(u-boot)ro,1536k(kernel),6208k(rootfs),64k(nvram),64k(factory),7744k@0x50000(firmware) 247mtd_f5d8235_kernel_part_size=1572864 248mtd_f5d8235_rootfs_part_size=6356992 249define BuildFirmware/F5D8235 250 $(call BuildFirmware/Generic,$(1),$(2),$(call mkcmdline,$(3),ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_f5d8235)),$(mtd_f5d8235_kernel_part_size),$(mtd_f5d8235_rootfs_part_size)) 251endef 252 253define BuildFirmware/FONERA20N 254 $(call BuildFirmware/GENERIC_8M,$(1),fonera20n,FONERA20N,ttyS1,57600,phys) 255 $(call BuildFirmware/Edimax,$(1),fonera20n,RSDK,NL1T,0x50000,0xc0000) 256endef 257 258define BuildFirmware/FONERA20N/initramfs 259 $(call BuildFirmware/GENERIC_8M/initramfs,$(1),fonera20n,FONERA20N,ttyS1,57600,phys) 260endef 261 262mtdlayout_nw718=192k(u-boot)ro,128k(config)ro,64k(factory)ro,896k(kernel),2816k(rootfs),3712k@0x60000(firmware) 263kernel_size_nw718=917504 264rootfs_size_nw718=2883584 265cmdline_nw718=$(call mkcmdline,NW718,ttyS1,57600) $(call mkmtd/spi,$(mtdlayout_nw718)) 266define BuildFirmware/NW718 267 $(call BuildFirmware/Generic,$(1),$(2),$(cmdline_nw718),$(kernel_size_nw718),$(rootfs_size_nw718)) 268 $(call PatchKernelLzma,$(2),$(cmdline_nw718)) 269 mkimage -A mips -O linux -T kernel -C lzma $(call kernel_entry) \ 270 -n "ARA1B4NCRNW718;1" \ 271 -d "$(KDIR)/vmlinux-$(2).bin.lzma" \ 272 "$(KDIR)/vmlinux-$(2).uImage" 273 $(call CatFiles,$(KDIR)/vmlinux-$(2).uImage,$(kernel_size_nw718),$(KDIR)/root.$(1),$(rootfs_size_nw718),$(call imgname,$(1),$(2))-factory.bin) 274endef 275 276mtdlayout_rtg32b1=192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,896k(kernel),2880k(rootfs),3776k@0x50000(firmware) 277mtd_rtg32b1_kernel_part_size=917504 278mtd_rtg32b1_rootfs_part_size=2949120 279define BuildFirmware/RTG32B1 280 $(call BuildFirmware/Generic,$(1),$(2),board=$(3) $(call mkmtd/spi,$(mtdlayout_rtg32b1)),$(mtd_rtg32b1_kernel_part_size),$(mtd_rtg32b1_rootfs_part_size)) 281endef 282 283mtdlayout_rtn10plus=192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,896k(kernel),2880k(rootfs),3776k@0x50000(firmware) 284mtd_rtn10plus_kernel_part_size=917504 285mtd_rtn10plus_rootfs_part_size=2949120 286define BuildFirmware/RTN10PLUS 287 $(call BuildFirmware/Generic,$(1),$(2),board=$(3) $(call mkmtd/phys,$(mtdlayout_rtn10plus)),$(mtd_rtn10plus_kernel_part_size),$(mtd_rtn10plus_rootfs_part_size)) 288endef 289 290define BuildFirmware/Seama 291 $(call PatchKernelLzma,$(2),$(3)) 292 if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt $(4) ]; then \ 293 echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \ 294 else if [ `stat -c%s $(KDIR)/root.$(1)` -gt $(5) ]; then \ 295 echo "Warning: $(KDIR)/root.$(1) is too big"; \ 296 else \ 297 ( \ 298 dd if=$(KDIR)/vmlinux-$(2).bin.lzma bs=$(4) count=1 conv=sync; \ 299 ) > $(KDIR)/vmlinux-$(2).tmp; \ 300 $(STAGING_DIR_HOST)/bin/seama \ 301 -i $(KDIR)/vmlinux-$(2).tmp \ 302 -m "dev=/dev/mtdblock/2" -m "type=firmware"; \ 303 ( \ 304 dd if=$(KDIR)/vmlinux-$(2).tmp.seama; \ 305 dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \ 306 ) > $(call imgname,$(1),$(2))-sysupgrade.bin; \ 307 ( \ 308 dd if=$(KDIR)/vmlinux-$(2).bin.lzma bs=$(4) count=1 conv=sync; \ 309 dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \ 310 ) > $(KDIR)/vmlinux-$(2).tmp; \ 311 $(STAGING_DIR_HOST)/bin/seama \ 312 -i $(KDIR)/vmlinux-$(2).tmp \ 313 -m "dev=/dev/mtdblock/2" -m "type=firmware"; \ 314 $(STAGING_DIR_HOST)/bin/seama \ 315 -s $(call imgname,$(1),$(2))-factory.bin \ 316 -m "signature=$(6)" \ 317 -i $(KDIR)/vmlinux-$(2).tmp.seama; \ 318 fi; fi 319endef 320 321mtdlayout_dir645a1=192k(u-boot)ro,16k(u-boot-env)ro,16k(factory)ro,32k(nvram)ro,64k(devdata)ro,896k(kernel),6976k(rootfs),7872k@0x50000(firmware) 322define BuildFirmware/DIR645 323 $(call BuildFirmware/Seama,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_dir645a1)),917440,7143424,$(7)) 324endef 325 326define BuildFirmware/DIR645/initramfs 327 $(call BuildFirmware/Generic/initramfs,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_dir645a1))) 328endef 329 330define BuildFirmware/UMedia 331 $(call BuildFirmware/GENERIC_8M,$(1),$(2),$(3),ttyS1,57600,phys) 332 if [ -e "$(call sysupname,$(1),$(2))" ]; then \ 333 fix-u-media-header -T 0x46 -B $(4) \ 334 -i $(call sysupname,$(1),$(2)) \ 335 -o $(call imgname,$(1),$(2))-factory.bin; \ 336 fi 337endef 338 339define BuildFirmware/UMedia/initramfs 340 $(call BuildFirmware/GENERIC_8M/initramfs,$(1),$(2),$(3),ttyS1,57600,phys) 341endef 342 343define BuildFirmware/W306R_4M 344 $(call BuildFirmware/w306r,$(1),$(2),$(call mkcmdline,$(3),$(4),$(5)) $(call mkmtd/$(6),$(mtdlayout_4M)),917504,2949120) 345endef 346 347define BuildFirmware/w306r 348 $(call PatchKernelLzma,$(2),$(3)) 349 mkimage -A mips -O linux -T kernel -C lzma $(call kernel_entry)\ 350 -n 'linkn Kernel Image' \ 351 -d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage 352 $(call CatFiles,$(KDIR)/vmlinux-$(2).uImage,$(4),$(KDIR)/root.$(1),$(5),$(call imgname,$(1),$(2))-factory.bin) 353endef 354 355mtdlayout_whrg300n=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,960k(kernel),2752k(rootfs),64k(user)ro,3712k@0x50000(firmware) 356define BuildFirmware/WHRG300N 357 $(call Image/Build/Template/GENERIC_4M,$(1),whr-g300n,WHR-G300N,ttyS1,57600,phys) 358 $(call BuildFirmware/Buffalo,$(1),whr-g300n,$(call mkcmdline,WHR-G300N,ttyS1,57600) $(call mkmtd/phys,$(mtdlayout_whrg300n)),983040,3801088) 359 ( \ 360 echo -n -e "# Airstation FirmWare\nrun u_fw\nreset\n\n" | \ 361 dd bs=512 count=1 conv=sync; \ 362 dd if=$(call sysupname,$(1),whr-g300n); \ 363 ) > $(KDIR)/whr-g300n-tftp.tmp 364 buffalo-tftp -i $(KDIR)/whr-g300n-tftp.tmp \ 365 -o $(call imgname,$(1),whr-g300n)-tftp.bin 366endef 367 368mtdlayout_wl341v3=128k(u-boot)ro,64k(board-nvram)ro,64k(u-boot-env)ro,896k(kernel),2880k(rootfs),64k(signature-eRcOmM),3776k@0x40000(firmware),4096k@0x0(fullflash) 369kernel_size_wl341v3=917504 370rootfs_size_wl341v3=2949120 371define BuildFirmware/WL341V3 372 $(call BuildFirmware/Generic,$(1),$(2),board=$(3) $(call mkmtd/phys,$(mtdlayout_wl341v3)),$(kernel_size_wl341v3),$(rootfs_size_wl341v3)) 373 if [ -e "$(call sysupname,$(1),$(2))" ]; then \ 374 ( \ 375 dd if=/dev/zero bs=195936 count=1; \ 376 echo "1.01"; \ 377 dd if=/dev/zero bs=581 count=1; \ 378 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"; \ 379 dd if=/dev/zero bs=65552 count=1; \ 380 dd if=$(KDIR)/vmlinux-$(2).uImage bs=$(kernel_size_wl341v3) conv=sync; \ 381 dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \ 382 dd if=/dev/zero bs=`expr 4194304 - 262144 - 16 - $(kernel_size_wl341v3) - \( \( \( \`stat -c%s $(KDIR)/root.$(1)\` / 65536 \) + 1 \) \* 65536 \)` count=1; \ 383 echo -n -e "\x11\x03\x80\x00\x10\x12\x90\xF7\x65\x52\x63\x4F\x6D\x4D\x00\x00"; \ 384 ) > $(call imgname,$(1),$(2))-factory.bin; \ 385 fi 386endef 387 388mtdlayout_wlitx4ag300n=192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,896k(kernel),2816k(rootfs),64k(user)ro,3712k@0x50000(firmware) 389define BuildFirmware/WLITX4AG300N 390 $(call BuildFirmware/Buffalo2,$(1),wli-tx4-ag300n,WLI-TX4-AG300N,$(call mkmtd/phys,$(mtdlayout_wlitx4ag300n)),917504,2883584) 391endef 392 393# 394# Templates 395# 396define Image/Build/Template/initramfs/initramfs 397 $(call BuildFirmware/$(1)/initramfs,initramfs,$(2),$(3),$(4),$(5),$(6),$(7),$(8)) 398endef 399 400define Image/Build/Template/squashfs-only/squashfs 401 $(call BuildFirmware/$(1),squashfs,$(2),$(3),$(4),$(5),$(6),$(7),$(8)) 402endef 403 404# 405# RT288X Profiles 406# 407define Image/Build/Profile/F5D8235V1 408 $(call Image/Build/Template/$(fs_squash)/$(1),F5D8235,f5d8235v1,F5D8235_V1) 409endef 410 411define Image/Build/Profile/RTN15 412 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,rt-n15,RT-N15,ttyS1,57600,phys) 413endef 414 415define Image/Build/Profile/V11STFE 416 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,v11st-fe,V11ST-FE,ttyS1,57600,phys) 417endef 418 419define Image/Build/Profile/WLITX4AG300N 420 $(call Image/Build/Template/$(fs_squash)/$(1),WLITX4AG300N) 421endef 422 423ifeq ($(CONFIG_RALINK_RT288X),y) 424define Image/Build/Profile/Default 425 $(call Image/Build/Profile/F5D8235V1,$(1)) 426 $(call Image/Build/Profile/RTN15,$(1)) 427 $(call Image/Build/Profile/V11STFE,$(1)) 428 $(call Image/Build/Profile/WLITX4AG300N,$(1)) 429endef 430endif 431 432# 433# RT305X Profiles 434# 435define Image/Build/Profile/3G6200N 436 $(call Image/Build/Template/$(fs_squash)/$(1),3G6200N,3g-6200n,3G-6200N,ttyS1,57600,phys) 437endef 438 439define Image/Build/Profile/ALL02393G 440 $(call Image/Build/Template/$(fs_squash)/$(1),UIMAGE_8M,all0239-3g,ALL0239-3G,ttyS1,57600,phys) 441endef 442 443define Image/Build/Profile/ALL0256N 444 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,all0256n,ALL0256N,ttyS1,57600,spi) 445 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,all0256n-8M,ALL0256N,ttyS1,57600,spi) 446endef 447 448define Image/Build/Profile/ALL5002 449 $(call Image/Build/Template/$(fs_squash)/$(1),ALL5002,all5002,ALL5002,ttyS1,57600,spi) 450endef 451 452define Image/Build/Profile/ARGUS_ATP52B 453 $(call Image/Build/Template/$(fs_squash)/$(1),ARGUS_ATP52B,argus_atp52b,ARGUS_ATP52B) 454endef 455 456define Image/Build/Profile/BC2 457 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,bc2,BC2,ttyS1,57600,phys) 458endef 459 460define Image/Build/Profile/CARAMBOLA 461 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,carambola,CARAMBOLA,ttyS1,115200,phys) 462endef 463 464define Image/Build/Profile/DIR300B1 465 $(call Image/Build/Template/$(fs_squash)/$(1),DIR300B1,dir-300-b1,DIR-300-B1,wrgn23_dlwbr_dir300b) 466 $(call Image/Build/Template/$(fs_squash)/$(1),DIR300B1,dir-600-b1,DIR-600-B1,wrgn23_dlwbr_dir600b) 467 $(call Image/Build/Template/$(fs_squash)/$(1),DIR300B1,dir-600-b2,DIR-600-B2,wrgn23_dlwbr_dir600b) 468 $(call Image/Build/Template/$(fs_squash)/$(1),DIR300B1,dir-615-d,DIR-615-D,wrgn23_dlwbr_dir615d) 469 $(call Image/Build/Template/$(fs_squash)/$(1),DIR620A1,dir-620-a1,DIR-620-A1) 470endef 471 472define Image/Build/Profile/DIR615H1 473 $(call Image/Build/Template/$(fs_squash)/$(1),DIR615H1,dir-615-h1,DIR-615-H1,ttyS1,57600,spi) 474endef 475 476define Image/Build/Profile/DAP1350 477 $(call Image/Build/Template/$(fs_squash)/$(1),DAP1350,dap-1350,DAP-1350,RT3052-AP-DAP1350-3) 478endef 479 480define Image/Build/Profile/ESR9753 481 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,esr-9753,ESR-9753,ttyS1,57600,phys) 482endef 483 484define Image/Build/Profile/HW5503G 485 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,hw550-3g,HW550-3G,ttyS1,57600,phys) 486endef 487 488define Image/Build/Profile/F5D8235V2 489 $(call Image/Build/Template/$(fs_squash)/$(1),F5D8235,f5d8235v2,F5D8235_V2) 490endef 491 492define Image/Build/Profile/FONERA20N 493 $(call Image/Build/Template/$(fs_squash)/$(1),FONERA20N) 494endef 495 496define Image/Build/Profile/FREESTATION5 497 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,freestation5,FREESTATION5,ttyS1,115200,phys) 498endef 499 500define Image/Build/Profile/MOFI35003GN 501 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,mofi3500-3gn,MOFI3500-3GN,ttyS1,57600,phys) 502endef 503 504define Image/Build/Profile/NBG419N 505 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,nbg-419n,NBG-419N,ttyS1,57600,phys) 506endef 507 508define Image/Build/Profile/NW718 509 $(call Image/Build/Template/$(fs_squash)/$(1),NW718,nw718) 510endef 511 512define Image/Build/Profile/OMNIEMB 513 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,omni-emb,OMNI-EMB,ttyS1,57600,phys) 514endef 515 516define Image/Build/Profile/PSR680W 517 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,psr-680w,PSR-680W,ttyS1,115200,phys) 518endef 519 520define Image/Build/Profile/PWH2004 521 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,pwh2004,PWH2004,ttyS1,57600,phys) 522endef 523 524define Image/Build/Profile/RTG32B1 525 $(call Image/Build/Template/$(fs_squash)/$(1),RTG32B1,rt-g32-b1,RT-G32-B1) 526endef 527 528define Image/Build/Profile/RTN10PLUS 529 $(call Image/Build/Template/$(fs_squash)/$(1),RTN10PLUS,rt-n10-plus,RT-N10-PLUS) 530endef 531 532define Image/Build/Profile/SLR7205 533 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,sl-r7205,SL-R7205,ttyS1,57600,phys) 534endef 535 536define Image/Build/Profile/V22RW2X2 537 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,v22rw-2x2,V22RW-2X2,ttyS1,57600,phys) 538endef 539 540define Image/Build/Profile/W306R_V20 541 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,w306r-v20,W306R_V20,ttyS1,57600,phys) 542 $(call Image/Build/Template/$(fs_squash)/$(1),W306R_4M,w306r-v20,W306R_V20,ttyS1,57600,phys) 543endef 544 545define Image/Build/Profile/W502U 546 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,w502u,W502U,ttyS1,115200,phys) 547endef 548 549define Image/Build/Profile/WCR150GN 550 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,wcr150gn,WCR150GN,ttyS1,57600,phys) 551endef 552 553define Image/Build/Profile/WHRG300N 554 $(call Image/Build/Template/$(fs_squashfs)/$(1),WHRG300N) 555endef 556 557define Image/Build/Profile/WL_330N 558 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,wl-330n,WL_330N,ttyS1,57600,spi) 559endef 560 561define Image/Build/Profile/WL_330N3G 562 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,wl-330n3g,WL_330N3G,ttyS1,57600,spi) 563endef 564 565define Image/Build/Profile/WL341V3 566 $(call Image/Build/Template/$(fs_squash)/$(1),WL341V3,wl341v3,WL341V3) 567endef 568 569define Image/Build/Profile/WL351 570 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,wl-351,WL-351,ttyS1,57600,phys) 571endef 572 573define Image/Build/Profile/WR5123GN 574 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,wr512-3gn-4M,WR512-3GN,ttyS1,57600,phys) 575 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,wr512-3gn-8M,WR512-3GN,ttyS1,57600,phys) 576endef 577 578 579define Image/Build/Profile/UPVEL 580 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,ur-336un,UR-336UN,ttyS1,57600,phys) 581endef 582 583define Image/Build/Profile/WR6202 584 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,wr6202,WR6202,ttyS1,115200,phys) 585endef 586 587define Image/Build/Profile/XDXRN502J 588 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,xdxrn502j,XDXRN502J,ttyS1,57600,phys) 589endef 590 591ifeq ($(CONFIG_RALINK_RT305X),y) 592define Image/Build/Profile/Default 593 $(call Image/Build/Profile/3G6200N,$(1)) 594 $(call Image/Build/Profile/ALL02393G,$(1)) 595 $(call Image/Build/Profile/ALL0256N,$(1)) 596 $(call Image/Build/Profile/ALL5002,$(1)) 597 $(call Image/Build/Profile/ARGUS_ATP52B,$(1)) 598 $(call Image/Build/Profile/BC2,$(1)) 599 $(call Image/Build/Profile/CARAMBOLA,$(1)) 600 $(call Image/Build/Profile/DIR300B1,$(1)) 601 $(call Image/Build/Profile/DIR615H1,$(1)) 602 $(call Image/Build/Profile/DAP1350,$(1)) 603 $(call Image/Build/Profile/ESR9753,$(1)) 604 $(call Image/Build/Profile/F5D8235V2,$(1)) 605 $(call Image/Build/Profile/RTN10PLUS,$(1)) 606 $(call Image/Build/Profile/FONERA20N,$(1)) 607 $(call Image/Build/Profile/FREESTATION5,$(1)) 608 $(call Image/Build/Profile/HW5503G,$(1)) 609 $(call Image/Build/Profile/MOFI35003GN,$(1)) 610 $(call Image/Build/Profile/NBG419N,$(1)) 611 $(call Image/Build/Profile/NW718,$(1)) 612 $(call Image/Build/Profile/OMNIEMB,$(1)) 613 $(call Image/Build/Profile/PSR680W,$(1)) 614 $(call Image/Build/Profile/PWH2004,$(1)) 615 $(call Image/Build/Profile/RTG32B1,$(1)) 616 $(call Image/Build/Profile/SLR7205,$(1)) 617 $(call Image/Build/Profile/V22RW2X2,$(1)) 618 $(call Image/Build/Profile/W306R_V20,$(1)) 619 $(call Image/Build/Profile/W502U,$(1)) 620 $(call Image/Build/Profile/WCR150GN,$(1)) 621 $(call Image/Build/Profile/WHRG300N,$(1)) 622 $(call Image/Build/Profile/WL_330N,$(1)) 623 $(call Image/Build/Profile/WL_330N3G,$(1)) 624 $(call Image/Build/Profile/WL341V3,$(1)) 625 $(call Image/Build/Profile/WL351,$(1)) 626 $(call Image/Build/Profile/WR5123GN,$(1)) 627 $(call Image/Build/Profile/WR6202,$(1)) 628 $(call Image/Build/Profile/XDXRN502J,$(1)) 629endef 630endif 631 632# 633# RT3662/RT3883 Profiles 634# 635define Image/Build/Profile/DIR645 636 $(call Image/Build/Template/$(fs_squash)/$(1),DIR645,dir-645,DIR-645,ttyS1,57600,spi,wrgn39_dlob.hans_dir645) 637endef 638 639define Image/Build/Profile/RTN56U 640 $(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,rt-n56u,RT-N56U,ttyS1,57600,phys) 641endef 642 643define Image/Build/Profile/TEW691GR 644 $(call Image/Build/Template/$(fs_squash)/$(1),UMedia,tew-691gr,TEW-691GR,0x026910) 645endef 646 647define Image/Build/Profile/TEW692GR 648 $(call Image/Build/Template/$(fs_squash)/$(1),UMedia,tew-692gr,TEW-692GR,0x026920) 649endef 650 651ifeq ($(CONFIG_RALINK_RT3883),y) 652define Image/Build/Profile/Default 653 $(call Image/Build/Profile/DIR645,$(1)) 654 $(call Image/Build/Profile/RTN56U,$(1)) 655 $(call Image/Build/Profile/TEW691GR,$(1)) 656 $(call Image/Build/Profile/TEW692GR,$(1)) 657endef 658endif 659 660define Image/Build/Initramfs 661 $(call Image/Build/Profile/$(PROFILE),initramfs) 662endef 663 664define Image/Build/squashfs 665 $(call prepare_generic_squashfs,$(KDIR)/root.squashfs) 666endef 667 668define Image/Build 669 $(call Image/Build/$(1)) 670 dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync 671 $(call Image/Build/Profile/$(PROFILE),$(1)) 672endef 673 674$(eval $(call BuildImage)) 675