From b8a84038a54c86d323955f264958a5bc1cb6102f Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Wed, 13 Feb 2013 16:03:47 +0000
Subject: [PATCH] switch: fix switches with more than 6 ports

This is based on a patch by jcharest and the Broadcom SDK.

SVN-Revision: 35582
---
 package/switch/src/switch-robo.c | 13 +++++++++----
 1 file 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();
-- 
GitLab