d1be3e3f4c8cc8c1c45ee7e99376cd8a164e2c2f
[openwrt/staging/aparcar.git] /
1 From 8e6f31baba7e2c13ab7e954fe6179420a7545a8b Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
3 Date: Tue, 31 Jan 2017 19:37:56 +0100
4 Subject: [PATCH 3/3] net: bgmac: use PHY subsystem for initializing PHY
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 This adds support for using bgmac with PHYs supported by standalone PHY
10 drivers. Having any PHY initialization in bgmac is hacky and shouldn't
11 be extended but rather removed if anyone has hardware to test it.
12
13 Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
14 Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
15 Signed-off-by: David S. Miller <davem@davemloft.net>
16 ---
17 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c | 10 ++++++++++
18 1 file changed, 10 insertions(+)
19
20 --- a/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
21 +++ b/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
22 @@ -132,6 +132,10 @@ static void bcma_mdio_phy_init(struct bg
23 struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo;
24 u8 i;
25
26 + /* For some legacy hardware we do chipset-based PHY initialization here
27 + * without even detecting PHY ID. It's hacky and should be cleaned as
28 + * soon as someone can test it.
29 + */
30 if (ci->id == BCMA_CHIP_ID_BCM5356) {
31 for (i = 0; i < 5; i++) {
32 bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b);
33 @@ -140,6 +144,7 @@ static void bcma_mdio_phy_init(struct bg
34 bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa);
35 bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
36 }
37 + return;
38 }
39 if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg != 10) ||
40 (ci->id == BCMA_CHIP_ID_BCM4749 && ci->pkg != 10) ||
41 @@ -161,7 +166,12 @@ static void bcma_mdio_phy_init(struct bg
42 bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273);
43 bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
44 }
45 + return;
46 }
47 +
48 + /* For all other hw do initialization using PHY subsystem. */
49 + if (bgmac->net_dev && bgmac->net_dev->phydev)
50 + phy_init_hw(bgmac->net_dev->phydev);
51 }
52
53 /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipphyreset */