mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
|
From 8e6f31baba7e2c13ab7e954fe6179420a7545a8b Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||
|
Date: Tue, 31 Jan 2017 19:37:56 +0100
|
||
|
Subject: [PATCH 3/3] net: bgmac: use PHY subsystem for initializing PHY
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
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: Rafał Miłecki <rafal@milecki.pl>
|
||
|
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
|
---
|
||
|
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c | 10 ++++++++++
|
||
|
1 file changed, 10 insertions(+)
|
||
|
|
||
|
--- a/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
|
||
|
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
|
||
|
@@ -132,6 +132,10 @@ static void bcma_mdio_phy_init(struct bg
|
||
|
struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo;
|
||
|
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) {
|
||
|
for (i = 0; i < 5; i++) {
|
||
|
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b);
|
||
|
@@ -140,6 +144,7 @@ static void bcma_mdio_phy_init(struct bg
|
||
|
bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa);
|
||
|
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
|
||
|
}
|
||
|
+ return;
|
||
|
}
|
||
|
if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg != 10) ||
|
||
|
(ci->id == BCMA_CHIP_ID_BCM4749 && ci->pkg != 10) ||
|
||
|
@@ -161,7 +166,12 @@ static void bcma_mdio_phy_init(struct bg
|
||
|
bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273);
|
||
|
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 */
|