From 081796fe472d2e06918730a70a60b0b32023d4f5 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Fri, 10 Dec 2010 15:17:03 +0000
Subject: [PATCH] ar71xx: add nbg460n image generation

This adds image generation for NBG460N/550N/550NH boards.

Signed-off-by: Michael Kurz <michi.kurz@googlemail.com>

SVN-Revision: 24419
---
 .../etc/defconfig/nbg460n_550n_550nh/network  | 26 +++++++++++++++++
 target/linux/ar71xx/base-files/etc/diag.sh    |  3 ++
 .../etc/uci-defaults/nbg460n_550n_550nh       | 22 +++++++++++++++
 target/linux/ar71xx/base-files/lib/ar71xx.sh  |  3 ++
 .../ar71xx/base-files/lib/upgrade/platform.sh |  2 +-
 target/linux/ar71xx/generic/profiles/zyxel.mk |  2 +-
 target/linux/ar71xx/image/Makefile            | 28 +++++++++++++++++++
 7 files changed, 84 insertions(+), 2 deletions(-)
 create mode 100644 target/linux/ar71xx/base-files/etc/defconfig/nbg460n_550n_550nh/network
 create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/nbg460n_550n_550nh

diff --git a/target/linux/ar71xx/base-files/etc/defconfig/nbg460n_550n_550nh/network b/target/linux/ar71xx/base-files/etc/defconfig/nbg460n_550n_550nh/network
new file mode 100644
index 0000000000..3ab4bc81da
--- /dev/null
+++ b/target/linux/ar71xx/base-files/etc/defconfig/nbg460n_550n_550nh/network
@@ -0,0 +1,26 @@
+config interface loopback
+	option ifname	lo
+	option proto	static
+	option ipaddr	127.0.0.1
+	option netmask	255.0.0.0
+
+config interface lan
+	option ifname	eth0
+	option type	bridge
+	option proto	static
+	option ipaddr	192.168.1.1
+	option netmask	255.255.255.0
+
+config interface wan
+	option ifname	eth1
+	option proto	dhcp
+
+config switch
+	option name	rtl8366s
+	option reset	1
+	option enable_vlan 1
+
+config switch_vlan
+	option device	rtl8366s
+	option vlan 	0
+	option ports	"0 1 2 3 5"
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 77217c70f7..a89ede9493 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -66,6 +66,9 @@ get_status_led() {
 	mzk-w300nh)
 		status_led="mzk-w300nh:green:status"
 		;;
+	nbg460n_550n_550nh)
+		status_led="nbg460n:green:power"
+		;;
 	pb44)
 		status_led="pb44:amber:jump1"
 		;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/nbg460n_550n_550nh b/target/linux/ar71xx/base-files/etc/uci-defaults/nbg460n_550n_550nh
new file mode 100644
index 0000000000..f3fbaf2e05
--- /dev/null
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/nbg460n_550n_550nh
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+
+. /lib/ar71xx.sh
+
+board=$(ar71xx_board_name)
+
+nbg460n_550n_550nh_set_wlan_led() {
+	uci batch <<EOF
+set system.wlan_led=led
+set system.wlan_led.name='WLAN'
+set system.wlan_led.sysfs='nbg460n:green:wlan'
+set system.wlan_led.trigger='phy0rx'
+commit system
+EOF
+}
+
+if [ "${board}" == "nbg460n_550n_550nh" ]; then
+	nbg460n_550n_550nh_set_wlan_led
+fi
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index fa00516c2e..ec3aa5b62a 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -49,6 +49,9 @@ ar71xx_board_name() {
 	*MZK-W300NH)
 		name="mzk-w300nh"
 		;;
+	*"NBG460N/550N/550NH")
+		name="nbg460n_550n_550nh"
+		;;
 	*PB42)
 		name="pb42"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 089f5f4058..36e2b2146f 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -68,7 +68,7 @@ platform_check_image() {
 	[ "$ARGC" -gt 1 ] && return 1
 
 	case "$board" in
-	ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt400n | bullet-m | nanostation-m | rocket-m | wzr-hp-g300nh )
+	ap81 | ap83 | dir-600-a1 | dir-615-c1 | dir-825-b1 | mzk-w04nu | mzk-w300nh | tew-632brp | wrt400n | bullet-m | nanostation-m | rocket-m | wzr-hp-g300nh | nbg460n_550n_550nh)
 		[ "$magic" != "2705" ] && {
 			echo "Invalid image type."
 			return 1
diff --git a/target/linux/ar71xx/generic/profiles/zyxel.mk b/target/linux/ar71xx/generic/profiles/zyxel.mk
index 73ae4e224c..8004d150c2 100644
--- a/target/linux/ar71xx/generic/profiles/zyxel.mk
+++ b/target/linux/ar71xx/generic/profiles/zyxel.mk
@@ -7,7 +7,7 @@
 
 define Profile/NBG_460N_550N_550NH
 	NAME:=Zyxel NBG 460N/550N/550NH
-	PACKAGES:=kmod-ath9k swconfig
+	PACKAGES:=kmod-ath9k kmod-rtc-pcf8563 swconfig uboot-ar71xx-nbg460n_550n_550nh
 endef
 
 define Profile/NBG_460N_550N_550NH/Description
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 313a6429e6..4c96a88bcf 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -373,6 +373,29 @@ define Image/Build/WNDR3700
 		-o $(call imgname,$(1),$(2))-factory.img
 endef
 
+define Image/Build/ZyXEL
+	$(call PatchKernelLzma,$(2),$(3))
+	if [ `stat -c%s "$(KDIR)/vmlinux-$(2).bin.lzma"` -gt 917504 ]; then \
+		echo "Warning: $(KDIR)/vmlinux-$(2).bin.lzma is too big"; \
+	else if [ `stat -c%s $(KDIR)/root.$(1)` -gt 2752512 ]; then \
+		echo "Warning: $(KDIR)/root.$(1) is too big"; \
+	else \
+		mkimage -A mips -O linux -T kernel -a 0x80060000 -C lzma -e \
+			0x80060000 \
+			-n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
+			-d $(KDIR)/vmlinux-$(2).bin.lzma $(KDIR)/vmlinux-$(2).uImage; \
+		( \
+			dd if=$(KDIR)/vmlinux-$(2).uImage bs=896k conv=sync; \
+			dd if=$(KDIR)/root.$(1); \
+		) > $(call imgname,$(1),$(2))-sysupgrade.bin; \
+		$(STAGING_DIR_HOST)/bin/mkzynfw \
+			-B $(4) \
+			-b $(BIN_DIR)/$(IMG_PREFIX)-$(2)-u-boot.bin \
+			-r $(call imgname,$(1),$(2))-sysupgrade.bin:0x10000 \
+			-o $(call imgname,$(1),$(2))-factory.bin; \
+	fi; fi
+endef
+
 define Image/Build/WNDR3700/initramfs
 	$(call PatchKernelLzma,$(2),$(3) $(wndr3700_mtdlayout))
 	$(call MkImageLzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage)
@@ -541,6 +564,10 @@ define Image/Build/Profile/MZKW300NH
 	$(call Image/Build/Template/$(fs_64k)/$(1),Planex,mzk-w300nh,board=MZK-W300NH)
 endef
 
+define Image/Build/Profile/NBG_460N_550N_550NH
+	$(call Image/Build/Template/$(fs_64k)/$(1),ZyXEL,nbg460n_550n_550nh,board=NBG460N,NBG-460N)
+endef
+
 define Image/Build/Profile/TLMR3420V1
 	$(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-mr3420-v1,board=TL-MR3420,TL-MR3420v1)
 endef
@@ -629,6 +656,7 @@ define Image/Build/Profile/Default
 	$(call Image/Build/Profile/JWAP003,$(1))
 	$(call Image/Build/Profile/MZKW04NU,$(1))
 	$(call Image/Build/Profile/MZKW300NH,$(1))
+	$(call Image/Build/Profile/NBG_460N_550N_550NH,$(1))
 	$(call Image/Build/Profile/PB42,$(1))
 	$(call Image/Build/Profile/PB44,$(1))
 	$(call Image/Build/Profile/PB92,$(1))
-- 
2.25.1