Explorar o código

fix wan configuration on wr850g v2/v3

SVN-Revision: 8482
Mike Baker %!s(int64=18) %!d(string=hai) anos
pai
achega
c6e6780624

+ 6 - 2
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);
 }

+ 1 - 0
package/broadcom-diag/src/diag.h

@@ -30,6 +30,7 @@
 enum polarity_t {
 	REVERSE = 0,
 	NORMAL = 1,
+	INPUT = 2,
 };
 
 enum {

+ 5 - 0
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"