diff options
author | hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-09-14 16:14:02 +0000 |
---|---|---|
committer | hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-09-14 16:14:02 +0000 |
commit | 1f9a4043c628cec7830989ffcda55f59693c71d2 (patch) | |
tree | 56c6776e676c7e1d0d085a8b4fd9d4df4ee78505 /target/linux/generic/files | |
parent | 33bfec551e3dbc872f2bf3eb7d9158794057597c (diff) |
kernel: b53: add soft reset for BCM539x switches
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37987 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/files')
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/b53/b53_common.c | 5 | ||||
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/b53/b53_priv.h | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c index 25ab412f80..d1fc930f27 100644 --- a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c +++ b/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)) { diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_priv.h b/target/linux/generic/files/drivers/net/phy/b53/b53_priv.h index 53da406407..308a729a3c 100644 --- a/target/linux/generic/files/drivers/net/phy/b53/b53_priv.h +++ b/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 || |