diff options
-rw-r--r-- | openwrt/target/linux/package/switch/src/switch-adm.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/openwrt/target/linux/package/switch/src/switch-adm.c b/openwrt/target/linux/package/switch/src/switch-adm.c index 2ce87e777..919d685cb 100644 --- a/openwrt/target/linux/package/switch/src/switch-adm.c +++ b/openwrt/target/linux/package/switch/src/switch-adm.c @@ -413,6 +413,7 @@ static int handle_vlan_enable_write(void *driver, char *buf, int nr) static int handle_reset(void *driver, char *buf, int nr) { int i; + u32 cfg; /* * Reset sequence: RC high->low(100ms)->high(30ms) @@ -438,14 +439,15 @@ static int handle_reset(void *driver, char *buf, int nr) udelay(1000); /* Leave RC high and disable GPIO outputs */ adm_disout((__u8)(eecs | eesk | eedi)); + } - /* set up initial configuration for ports */ - for (i = 0; i <= 5; i++) { - int cfg = 0x8000 | /* Auto MDIX */ - (((i == 5) ? 1 : 0) << 4) | /* Tagging */ - 0xf; /* full duplex, 100Mbps, auto neg, flow ctrl */ - adm_wreg(port_conf[i], cfg); - } + + /* set up initial configuration for cpu port */ + cfg = (0x8000 | /* Auto MDIX */ + (0xf << 10) | /* PVID */ + (1 << 4) | /* Tagging */ + 0xf); /* full duplex, 100Mbps, auto neg, flow ctrl */ + adm_wreg(port_conf[5], cfg); /* vlan mode select register (0x11): vlan on, mac clone */ adm_wreg(0x11, 0xff30); @@ -490,13 +492,12 @@ static int detect_adm() eedi = getgpiopin("adm_eedi", 4); eerc = getgpiopin("adm_rc", 0); - } else if ((strcmp(nvram_get("boardtype"), "bcm94710dev") == 0) && - (strncmp(nvram_get("boardnum"), "42", 2) == 0)) { + } else if ((strcmp(nvram_get("boardtype") ?: "", "bcm94710dev") == 0) && + (strncmp(nvram_get("boardnum") ?: "", "42", 2) == 0)) { /* WRT54G v1.1 hack */ eecs = 2; eesk = 3; eedi = 5; - eerc = 6; ret = 1; } else |