From 00f04685a2c8254d08d3440325b096a88b121416 Mon Sep 17 00:00:00 2001
From: juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sat, 28 Nov 2009 08:25:56 +0000
Subject: [PATCH] ar71xx: create sysupgrade image for the WNDR3700

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18570 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../ar71xx/base-files/lib/upgrade/platform.sh |  7 +++
 target/linux/ar71xx/image/Makefile            | 45 +++++++++++++++++++
 2 files changed, 52 insertions(+)

diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 8ee412ed0..97c3a41da 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -82,6 +82,13 @@ platform_check_image() {
 		}
 		return 0
 		;;
+	wndr3700)
+		[ "$magic" != "3337" ] && {
+			echo "Invalid image type."
+			return 1
+		}
+		return 0
+		;;
 	wrt160nl)
 		[ "$magic" != "4e4c" ] && {
 			echo "Invalid image type."
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 79f7b7c5f..4c88a85e6 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -215,6 +215,34 @@ define Image/Build/CyberTAN
 		-o $(call imgname,$(1),$(2)).bin
 endef
 
+wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1024k(kernel),6656k(rootfs),64k(art)ro,7680k@0x70000(firmware)
+define Image/Build/WNDR3700
+	$(call PatchKernelLzma,$(2),$(3) $(wndr3700_mtdlayout))
+	$(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)
+	mkdir $(KDIR)/wndr3700
+	mkdir $(KDIR)/wndr3700/image
+	$(STAGING_DIR_HOST)/bin/wndr3700 \
+		$(KDIR)/vmlinux-$(2).uImage \
+		$(KDIR)/wndr3700/image/uImage
+	$(STAGING_DIR_HOST)/bin/mksquashfs-lzma \
+		$(KDIR)/wndr3700 $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp \
+		-nopad -noappend -root-owned -be
+	-rm -rf $(KDIR)/wndr3700
+	mkimage -A mips -O linux -T filesystem -C none \
+		-a 0xbf070000 -e 0xbf070000 \
+		-n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
+		-d $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp \
+		$(KDIR)/vmlinux-$(2).uImage.squashfs.tmp2
+	$(STAGING_DIR_HOST)/bin/wndr3700 \
+		$(KDIR)/vmlinux-$(2).uImage.squashfs.tmp2 \
+		$(KDIR)/vmlinux-$(2).uImage.squashfs
+	-rm -f $(KDIR)/vmlinux-$(2).uImage.squashfs.tmp*
+	( \
+		dd if=$(KDIR)/vmlinux-$(2).uImage.squashfs bs=1M conv=sync; \
+		dd if=$(KDIR)/root.$(1) bs=64k; \
+	) > $(call imgname,$(1),$(2))-sysupgrade.bin
+endef
+
 define Image/Build/Template/Compex
 	$(call Image/Build/MyLoader,$(1),$(2))
 endef
@@ -319,6 +347,18 @@ define Image/Build/Template/Planex/jffs2-64k
 	$(call Image/Build/Template/Planex,jffs2-64k,$(1),$(2))
 endef
 
+define Image/Build/Template/WNDR3700
+	$(call Image/Build/WNDR3700,$(1),$(2),$(3))
+endef
+
+define Image/Build/Template/WNDR3700/squashfs
+	$(call Image/Build/Template/WNDR3700,squashfs,$(1),$(2))
+endef
+
+define Image/Build/Template/WNDR3700/jffs2-64k
+	$(call Image/Build/Template/WNDR3700,jffs2-64k,$(1),$(2))
+endef
+
 define Image/Build/Profile/AP83
 	$(call Image/Build/Template/AP83/$(1),ap83,board=AP83)
 endef
@@ -400,6 +440,10 @@ define Image/Build/Profile/TLWR941NDV2
 	$(call Image/Build/Template/TPLINK/$(1),tl-wr941ndv2,board=TL-WR941ND,TL-WR941NDv2)
 endef
 
+define Image/Build/Profile/WNDR3700
+	$(call Image/Build/Template/WNDR3700/$(1),wndr3700,board=WNDR3700)
+endef
+
 define Image/Build/Profile/WRT400N
 	$(call Image/Build/Template/WRT400N/$(1),wrt400n,board=WRT400N)
 endef
@@ -422,6 +466,7 @@ define Image/Build/Profile/Default
 	$(call Image/Build/Profile/TLWR941NDV2,$(1))
 	$(call Image/Build/Profile/UBNT,$(1))
 	$(call Image/Build/Profile/WP543,$(1))
+	$(call Image/Build/Profile/WNDR3700,$(1))
 	$(call Image/Build/Profile/WRT400N,$(1))
 	$(call Image/Build/Profile/WRT160NL,$(1))
 endef
-- 
2.20.1