summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2013-02-13 16:05:32 +0000
committerHauke Mehrtens <hauke@hauke-m.de>2013-02-13 16:05:32 +0000
commit17c18e23abc68753fb30d3bafd2faaa9889da0ce (patch)
treeaa9f2e75e8f920135ec3684580f5e3e07cc250ba
parent446414f36778b7f7219e9a84a6fbd3060f6af321 (diff)
downloadmtk-20170518-17c18e23abc68753fb30d3bafd2faaa9889da0ce.zip
mtk-20170518-17c18e23abc68753fb30d3bafd2faaa9889da0ce.tar.gz
mtk-20170518-17c18e23abc68753fb30d3bafd2faaa9889da0ce.tar.bz2
switch: add support for BCM53125
SVN-Revision: 35586
-rw-r--r--package/switch/src/switch-robo.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-robo.c
index 2aacc36..57240a3 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;