diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2013-02-13 16:03:47 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2013-02-13 16:03:47 +0000 |
commit | b8a84038a54c86d323955f264958a5bc1cb6102f (patch) | |
tree | abb9da65b9cfcef59e1354f4ea65b31f4c8f9970 | |
parent | 3c51948454e18fbeada3058511a0177e261f8a81 (diff) | |
download | master-31e0f0ae-b8a84038a54c86d323955f264958a5bc1cb6102f.tar.gz master-31e0f0ae-b8a84038a54c86d323955f264958a5bc1cb6102f.tar.bz2 master-31e0f0ae-b8a84038a54c86d323955f264958a5bc1cb6102f.zip |
switch: fix switches with more than 6 ports
This is based on a patch by jcharest and the Broadcom SDK.
SVN-Revision: 35582
-rw-r--r-- | package/switch/src/switch-robo.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-robo.c index 0ab2f69341..0e39c8fe56 100644 --- a/package/switch/src/switch-robo.c +++ b/package/switch/src/switch-robo.c @@ -78,7 +78,7 @@ struct robo_switch { int gpio_lanports_enable; struct ifreq ifr; struct net_device *dev; - unsigned char port[6]; + unsigned char port[9]; }; /* Currently we can only have one device in the system. */ @@ -308,9 +308,6 @@ static int robo_probe(char *devname) } robo.device = devname; - for (i = 0; i < 5; i++) - robo.port[i] = i; - robo.port[5] = 8; /* try access using MII ioctls - get phy address */ err = do_ioctl(SIOCGMIIPHY); @@ -386,6 +383,14 @@ static int robo_probe(char *devname) robo.is_5365 = false; robo.gmii = robo_gmii(); + if (robo.devid == ROBO_DEVICE_ID_5325) { + for (i = 0; i < 5; i++) + robo.port[i] = i; + } else { + for (i = 0; i < 8; i++) + robo.port[i] = i; + } + robo.port[i] = ROBO_IM_PORT_CTRL; robo_switch_reset(); err = robo_switch_enable(); |