From c2e9789198880e5de157dd5dbeaf64b9e0340d23 Mon Sep 17 00:00:00 2001
From: mbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sat, 25 Aug 2007 12:27:01 +0000
Subject: fix wan configuration on wr850g v2/v3

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8482 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/broadcom-diag/src/diag.c                              | 8 ++++++--
 package/broadcom-diag/src/diag.h                              | 1 +
 target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig | 5 +++++
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/package/broadcom-diag/src/diag.c b/package/broadcom-diag/src/diag.c
index e8da3129a..ef586baae 100644
--- a/package/broadcom-diag/src/diag.c
+++ b/package/broadcom-diag/src/diag.c
@@ -492,7 +492,7 @@ static struct platform_t __initdata platforms[] = {
 		.leds		= {
 			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
 			{ .name = "wlan",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "dmz",	.gpio = 1 << 6, .polarity = REVERSE },
+			{ .name = "wan",	.gpio = 1 << 6, .polarity = INPUT },
 			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
 		},
 	},
@@ -893,6 +893,7 @@ static void register_leds(struct led_t *l)
 {
 	struct proc_dir_entry *p;
 	u32 mask = 0;
+	u32 oe_mask = 0;
 	u32 val = 0;
 
 	leds = proc_mkdir("led", diag);
@@ -907,10 +908,13 @@ static void register_leds(struct led_t *l)
 			l->state = 0;
 			set_led_extif(l);
 		} else {
+			if (l->polarity != INPUT) oe_mask != l->gpio;
 			mask |= l->gpio;
 			val |= (l->polarity == NORMAL)?0:l->gpio;
 		}
 
+		if (l->polarity == INPUT) continue;
+
 		if ((p = create_proc_entry(l->name, S_IRUSR, leds))) {
 			l->proc.type = PROC_LED;
 			l->proc.ptr = l;
@@ -919,7 +923,7 @@ static void register_leds(struct led_t *l)
 		}
 	}
 
-	gpio_outen(mask, mask);
+	gpio_outen(mask, oe_mask);
 	gpio_control(mask, 0);
 	gpio_out(mask, val);
 }
diff --git a/package/broadcom-diag/src/diag.h b/package/broadcom-diag/src/diag.h
index 93fdedb85..5f46d9dd8 100644
--- a/package/broadcom-diag/src/diag.h
+++ b/package/broadcom-diag/src/diag.h
@@ -30,6 +30,7 @@
 enum polarity_t {
 	REVERSE = 0,
 	NORMAL = 1,
+	INPUT = 2,
 };
 
 enum {
diff --git a/target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig b/target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig
index 8d204862c..2b5696336 100755
--- a/target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig
+++ b/target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig
@@ -111,6 +111,11 @@ start() {
 			c["vlan0ports"]="1 2 3 4 5*"
 			c["vlan1ports"]="0 5"
 		}
+
+		if (model == "Motorola WR850G V2/V3") {
+			c["vlan0ports"]="0 1 2 3 5*"
+			c["vlan1ports"]="4 5"
+		}
 		
 		print "#### VLAN configuration "
 		print "config switch eth0"
-- 
cgit v1.2.3