Browse Source

kernel: b53: add soft reset for BCM539x switches

Signed-off-by: Hauke Mehrtens <[email protected]>

SVN-Revision: 37987
Hauke Mehrtens 12 years ago
parent
commit
2da56b4ebc

+ 5 - 0
target/linux/generic/files/drivers/net/phy/b53/b53_common.c

@@ -477,6 +477,11 @@ static int b53_switch_reset(struct b53_device *dev)
 
 	b53_switch_reset_gpio(dev);
 
+	if (is539x(dev)) {
+		b53_write8(dev, B53_CTRL_PAGE, B53_SOFTRESET, 0x83);
+		b53_write8(dev, B53_CTRL_PAGE, B53_SOFTRESET, 0x00);
+	}
+
 	b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, &mgmt);
 
 	if (!(mgmt & SM_SW_FWD_EN)) {

+ 7 - 0
target/linux/generic/files/drivers/net/phy/b53/b53_priv.h

@@ -122,6 +122,13 @@ static inline int is5397_98(struct b53_device *dev)
 		dev->chip_id == BCM5398_DEVICE_ID;
 }
 
+static inline int is539x(struct b53_device *dev)
+{
+	return dev->chip_id == BCM5395_DEVICE_ID ||
+		dev->chip_id == BCM5397_DEVICE_ID ||
+		dev->chip_id == BCM5398_DEVICE_ID;
+}
+
 static inline int is531x5(struct b53_device *dev)
 {
 	return dev->chip_id == BCM53115_DEVICE_ID ||