lkml.org 
[lkml]   [2019]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC net-next v2 05/14] net: stmmac: dwxgmac2: Add MAC loopback support
    Date
    In preparation for the addition of stmmac selftests we implement the MAC
    loopback callback in dwxgmac2 core.

    Signed-off-by: Jose Abreu <joabreu@synopsys.com>
    Cc: Joao Pinto <jpinto@synopsys.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
    ---
    drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 1 +
    drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 13 +++++++++++++
    2 files changed, 14 insertions(+)

    diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
    index 085b700a4994..f629ccc8932a 100644
    --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
    +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
    @@ -29,6 +29,7 @@
    #define XGMAC_CONFIG_GPSL GENMASK(29, 16)
    #define XGMAC_CONFIG_GPSL_SHIFT 16
    #define XGMAC_CONFIG_S2KP BIT(11)
    +#define XGMAC_CONFIG_LM BIT(10)
    #define XGMAC_CONFIG_IPC BIT(9)
    #define XGMAC_CONFIG_JE BIT(8)
    #define XGMAC_CONFIG_WD BIT(7)
    diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
    index 64b8cb88ea45..c27b3ca052ea 100644
    --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
    +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
    @@ -321,6 +321,18 @@ static void dwxgmac2_set_filter(struct mac_device_info *hw,
    writel(value, ioaddr + XGMAC_PACKET_FILTER);
    }

    +static void dwxgmac2_set_mac_loopback(void __iomem *ioaddr, bool enable)
    +{
    + u32 value = readl(ioaddr + XGMAC_RX_CONFIG);
    +
    + if (enable)
    + value |= XGMAC_CONFIG_LM;
    + else
    + value &= ~XGMAC_CONFIG_LM;
    +
    + writel(value, ioaddr + XGMAC_RX_CONFIG);
    +}
    +
    const struct stmmac_ops dwxgmac210_ops = {
    .core_init = dwxgmac2_core_init,
    .set_mac = dwxgmac2_set_mac,
    @@ -350,6 +362,7 @@ const struct stmmac_ops dwxgmac210_ops = {
    .pcs_get_adv_lp = NULL,
    .debug = NULL,
    .set_filter = dwxgmac2_set_filter,
    + .set_mac_loopback = dwxgmac2_set_mac_loopback,
    };

    int dwxgmac2_setup(struct stmmac_priv *priv)
    --
    2.7.4
    \
     
     \ /
      Last update: 2019-05-14 17:46    [W:5.457 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site