Commit 8e6f31ba authored by Rafał Miłecki's avatar Rafał Miłecki Committed by David S. Miller

net: bgmac: use PHY subsystem for initializing PHY

This adds support for using bgmac with PHYs supported by standalone PHY
drivers. Having any PHY initialization in bgmac is hacky and shouldn't
be extended but rather removed if anyone has hardware to test it.
Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aa8863e5
...@@ -132,6 +132,10 @@ static void bcma_mdio_phy_init(struct bgmac *bgmac) ...@@ -132,6 +132,10 @@ static void bcma_mdio_phy_init(struct bgmac *bgmac)
struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo; struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo;
u8 i; u8 i;
/* For some legacy hardware we do chipset-based PHY initialization here
* without even detecting PHY ID. It's hacky and should be cleaned as
* soon as someone can test it.
*/
if (ci->id == BCMA_CHIP_ID_BCM5356) { if (ci->id == BCMA_CHIP_ID_BCM5356) {
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b); bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b);
...@@ -140,6 +144,7 @@ static void bcma_mdio_phy_init(struct bgmac *bgmac) ...@@ -140,6 +144,7 @@ static void bcma_mdio_phy_init(struct bgmac *bgmac)
bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa); bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa);
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b); bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
} }
return;
} }
if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg != 10) || if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg != 10) ||
(ci->id == BCMA_CHIP_ID_BCM4749 && ci->pkg != 10) || (ci->id == BCMA_CHIP_ID_BCM4749 && ci->pkg != 10) ||
...@@ -161,7 +166,12 @@ static void bcma_mdio_phy_init(struct bgmac *bgmac) ...@@ -161,7 +166,12 @@ static void bcma_mdio_phy_init(struct bgmac *bgmac)
bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273); bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273);
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b); bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
} }
return;
} }
/* For all other hw do initialization using PHY subsystem. */
if (bgmac->net_dev && bgmac->net_dev->phydev)
phy_init_hw(bgmac->net_dev->phydev);
} }
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipphyreset */ /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipphyreset */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment