From 17c18e23abc68753fb30d3bafd2faaa9889da0ce Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Wed, 13 Feb 2013 16:05:32 +0000
Subject: [PATCH] switch: add support for BCM53125

SVN-Revision: 35586
---
 package/switch/src/switch-robo.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-robo.c
index 2aacc36663..57240a3fd0 100644
--- a/package/switch/src/switch-robo.c
+++ b/package/switch/src/switch-robo.c
@@ -63,6 +63,7 @@
 #define  ROBO_DEVICE_ID_5397	0x97
 #define  ROBO_DEVICE_ID_5398	0x98
 #define  ROBO_DEVICE_ID_53115	0x3115
+#define  ROBO_DEVICE_ID_53125	0x3125
 
 /* Private et.o ioctls */
 #define SIOCGETCPHYRD           (SIOCDEVPRIVATE + 9)
@@ -248,6 +249,13 @@ static int robo_switch_enable(void)
 		robo_write16(ROBO_CTRL_PAGE, ROBO_IM_PORT_CTRL, 0);
 	}
 
+	if (robo.devid == ROBO_DEVICE_ID_53125) {
+		/* Make IM port status link by default */
+		val = robo_read16(ROBO_CTRL_PAGE, ROBO_PORT_OVERRIDE_CTRL) | 0xb1;
+		robo_write16(ROBO_CTRL_PAGE, ROBO_PORT_OVERRIDE_CTRL, val);
+		// TODO: init EEE feature
+	}
+
 #ifdef CONFIG_BCM47XX
 	/* WAN port LED, except for Netgear WGT634U */
 	if (bcm47xx_nvram_getenv("nvram_type", buf, sizeof(buf)) >= 0) {
@@ -486,7 +494,8 @@ static int handle_vlan_port_read_new(switch_driver *d, char *buf, int nr)
 	int j;
 
 	if ((robo.devid == ROBO_DEVICE_ID_5395) ||
-	    (robo.devid == ROBO_DEVICE_ID_53115)) {
+	    (robo.devid == ROBO_DEVICE_ID_53115) ||
+	    (robo.devid == ROBO_DEVICE_ID_53125)) {
 		vtbl_access = ROBO_VTBL_ACCESS_5395;
 		vtbl_index = ROBO_VTBL_INDX_5395;
 		vtbl_entry = ROBO_VTBL_ENTRY_5395;
@@ -557,7 +566,8 @@ static void handle_vlan_port_write_new(switch_driver *d, switch_vlan_config *c,
 
 	/* write config now */
 	if ((robo.devid == ROBO_DEVICE_ID_5395) ||
-	    (robo.devid == ROBO_DEVICE_ID_53115)) {
+	    (robo.devid == ROBO_DEVICE_ID_53115) ||
+	    (robo.devid == ROBO_DEVICE_ID_53125)) {
 		vtbl_access = ROBO_VTBL_ACCESS_5395;
 		vtbl_index = ROBO_VTBL_INDX_5395;
 		vtbl_entry = ROBO_VTBL_ENTRY_5395;
@@ -741,7 +751,8 @@ static void handle_reset_new(switch_driver *d, char *buf, int nr)
 	__u8 vtbl_entry, vtbl_index, vtbl_access;
 
 	if ((robo.devid == ROBO_DEVICE_ID_5395) ||
-	    (robo.devid == ROBO_DEVICE_ID_53115)) {
+	    (robo.devid == ROBO_DEVICE_ID_53115) ||
+	    (robo.devid == ROBO_DEVICE_ID_53125)) {
 		vtbl_access = ROBO_VTBL_ACCESS_5395;
 		vtbl_index = ROBO_VTBL_INDX_5395;
 		vtbl_entry = ROBO_VTBL_ENTRY_5395;
-- 
GitLab