ramips: fixup-mac-address: add missing include
[openwrt/openwrt.git] / target / linux / ramips / patches-4.4 / 0511-net-mediatek-add-support-for-the-multiphy-carrier-pa.patch
1 From 6543b4cef96c12903f5ec5c015cd223a6b3c9a33 Mon Sep 17 00:00:00 2001
2 From: John Crispin <blogic@openwrt.org>
3 Date: Mon, 14 Dec 2015 21:16:59 +0100
4 Subject: [PATCH 511/513] net: mediatek: add support for the multiphy carrier
5 patch
6
7 Signed-off-by: John Crispin <blogic@openwrt.org>
8 ---
9 drivers/net/ethernet/mediatek/gsw_mt7620.c | 1 +
10 drivers/net/ethernet/mediatek/gsw_mt7620.h | 1 +
11 drivers/net/ethernet/mediatek/gsw_mt7621.c | 1 +
12 drivers/net/ethernet/mediatek/mdio.c | 1 +
13 drivers/net/ethernet/mediatek/mdio_mt7620.c | 12 ++++++++++++
14 5 files changed, 16 insertions(+)
15
16 --- a/drivers/net/ethernet/mediatek/gsw_mt7620.c
17 +++ b/drivers/net/ethernet/mediatek/gsw_mt7620.c
18 @@ -54,6 +54,7 @@ static irqreturn_t gsw_interrupt_mt7620(
19
20 priv->link[i] = link;
21 }
22 + mt7620_handle_carrier(priv);
23 mtk_switch_w32(gsw, status, GSW_REG_ISR);
24
25 return IRQ_HANDLED;
26 --- a/drivers/net/ethernet/mediatek/gsw_mt7620.h
27 +++ b/drivers/net/ethernet/mediatek/gsw_mt7620.h
28 @@ -113,5 +113,6 @@ u32 mt7530_mdio_r32(struct mt7620_gsw *g
29 u32 _mt7620_mii_write(struct mt7620_gsw *gsw, u32 phy_addr,
30 u32 phy_register, u32 write_data);
31 u32 _mt7620_mii_read(struct mt7620_gsw *gsw, int phy_addr, int phy_reg);
32 +void mt7620_handle_carrier(struct fe_priv *priv);
33
34 #endif
35 --- a/drivers/net/ethernet/mediatek/gsw_mt7621.c
36 +++ b/drivers/net/ethernet/mediatek/gsw_mt7621.c
37 @@ -60,6 +60,7 @@ static irqreturn_t gsw_interrupt_mt7621(
38 }
39 }
40
41 + mt7620_handle_carrier(priv);
42 mt7530_mdio_w32(gsw, 0x700c, 0x1f);
43
44 return IRQ_HANDLED;
45 --- a/drivers/net/ethernet/mediatek/mdio.c
46 +++ b/drivers/net/ethernet/mediatek/mdio.c
47 @@ -89,6 +89,7 @@ int fe_connect_phy_node(struct fe_priv *
48
49 phydev->supported &= PHY_GBIT_FEATURES;
50 phydev->advertising = phydev->supported;
51 + phydev->no_auto_carrier_off = 1;
52
53 dev_info(priv->device,
54 "connected port %d to PHY at %s [uid=%08x, driver=%s]\n",
55 --- a/drivers/net/ethernet/mediatek/mdio_mt7620.c
56 +++ b/drivers/net/ethernet/mediatek/mdio_mt7620.c
57 @@ -137,6 +137,17 @@ int mt7620_has_carrier(struct fe_priv *p
58 }
59
60
61 +void mt7620_handle_carrier(struct fe_priv *priv)
62 +{
63 + if (!priv->phy)
64 + return;
65 +
66 + if (mt7620_has_carrier(priv))
67 + netif_carrier_on(priv->netdev);
68 + else
69 + netif_carrier_off(priv->netdev);
70 +}
71 +
72 void mt7620_print_link_state(struct fe_priv *priv, int port, int link,
73 int speed, int duplex)
74 {
75 @@ -153,4 +164,5 @@ void mt7620_mdio_link_adjust(struct fe_p
76 mt7620_print_link_state(priv, port, priv->link[port],
77 priv->phy->speed[port],
78 (priv->phy->duplex[port] == DUPLEX_FULL));
79 + mt7620_handle_carrier(priv);
80 }