*
* Copyright (C) 2005 Felix Fietkau <nbd@nbd.name>
* Copyright (C) 2008 Michael Buesch <mb@bu3sch.de>
+ * Copyright (C) 2013 Hauke Mehrtens <hauke@hauke-m.de>
* Based on 'robocfg' by Oleg I. Vdovikin
*
* This program is free software; you can redistribute it and/or
#endif
#define DRIVER_NAME "bcm53xx"
-#define DRIVER_VERSION "0.02"
+#define DRIVER_VERSION "0.03"
#define PFX "roboswitch: "
#define ROBO_PHY_ADDR 0x1E /* robo switch phy address */
#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)
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) {
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;
/* 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;
__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;
driver.ports = 9;
driver.cpuport = 8;
}
+ if (robo.is_5365)
+ snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, "BCM5365");
+ else
+ snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, "BCM5%s%x", robo.devid & 0xff00 ? "" : "3", robo.devid);
return switch_register_driver(&driver);
}