| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- From 53eec2c3580e63fdebfc25ae324f30cd8aa4403b Mon Sep 17 00:00:00 2001
- From: John Crispin <[email protected]>
- Date: Thu, 10 Aug 2017 16:00:46 +0200
- Subject: [PATCH 53/57] net: dsa: mediatek: add software phy polling
- Signed-off-by: John Crispin <[email protected]>
- ---
- drivers/net/dsa/mt7530.c | 38 ++++++++++++++++++++++++++++++++++++++
- drivers/net/dsa/mt7530.h | 1 +
- 2 files changed, 39 insertions(+)
- --- a/drivers/net/dsa/mt7530.c
- +++ b/drivers/net/dsa/mt7530.c
- @@ -728,6 +728,44 @@ static void mt7530_adjust_link(struct ds
- * all finished.
- */
- mt7623_pad_clk_setup(ds);
- + } else {
- + u16 lcl_adv = 0, rmt_adv = 0;
- + u8 flowctrl;
- + u32 mcr = PMCR_USERP_LINK | PMCR_FORCE_MODE;
- +
- + switch (phydev->speed) {
- + case SPEED_1000:
- + mcr |= PMCR_FORCE_SPEED_1000;
- + break;
- + case SPEED_100:
- + mcr |= PMCR_FORCE_SPEED_100;
- + break;
- + };
- +
- + if (phydev->link)
- + mcr |= PMCR_FORCE_LNK;
- +
- + if (phydev->duplex) {
- + mcr |= PMCR_FORCE_FDX;
- +
- + if (phydev->pause)
- + rmt_adv = LPA_PAUSE_CAP;
- + if (phydev->asym_pause)
- + rmt_adv |= LPA_PAUSE_ASYM;
- +
- + if (phydev->advertising & ADVERTISED_Pause)
- + lcl_adv |= ADVERTISE_PAUSE_CAP;
- + if (phydev->advertising & ADVERTISED_Asym_Pause)
- + lcl_adv |= ADVERTISE_PAUSE_ASYM;
- +
- + flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
- +
- + if (flowctrl & FLOW_CTRL_TX)
- + mcr |= PMCR_TX_FC_EN;
- + if (flowctrl & FLOW_CTRL_RX)
- + mcr |= PMCR_RX_FC_EN;
- + }
- + mt7530_write(priv, MT7530_PMCR_P(port), mcr);
- }
- }
-
- --- a/drivers/net/dsa/mt7530.h
- +++ b/drivers/net/dsa/mt7530.h
- @@ -155,6 +155,7 @@ enum mt7530_stp_state {
- #define PMCR_TX_FC_EN BIT(5)
- #define PMCR_RX_FC_EN BIT(4)
- #define PMCR_FORCE_SPEED_1000 BIT(3)
- +#define PMCR_FORCE_SPEED_100 BIT(2)
- #define PMCR_FORCE_FDX BIT(1)
- #define PMCR_FORCE_LNK BIT(0)
- #define PMCR_COMMON_LINK (PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | \
|