lkml.org 
[lkml]   [2012]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 1/9] net/macb: Add support for Gigabit Ethernet mode
    Date
    From: Patrice Vilchez <patrice.vilchez@atmel.com>

    Add Gigabit Ethernet mode to GEM cadence IP and enable RGMII connection.

    Signed-off-by: Patrice Vilchez <patrice.vilchez@atmel.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    ---
    drivers/net/ethernet/cadence/macb.c | 15 ++++++++++++---
    drivers/net/ethernet/cadence/macb.h | 4 ++++
    2 files changed, 16 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
    index c4834c2..56375e2 100644
    --- a/drivers/net/ethernet/cadence/macb.c
    +++ b/drivers/net/ethernet/cadence/macb.c
    @@ -152,13 +152,17 @@ static void macb_handle_link_change(struct net_device *dev)

    reg = macb_readl(bp, NCFGR);
    reg &= ~(MACB_BIT(SPD) | MACB_BIT(FD));
    + if (macb_is_gem(bp))
    + reg &= ~GEM_BIT(GBE);

    if (phydev->duplex)
    reg |= MACB_BIT(FD);
    if (phydev->speed == SPEED_100)
    reg |= MACB_BIT(SPD);
    + if (phydev->speed == SPEED_1000)
    + reg |= GEM_BIT(GBE);

    - macb_writel(bp, NCFGR, reg);
    + macb_or_gem_writel(bp, NCFGR, reg);

    bp->speed = phydev->speed;
    bp->duplex = phydev->duplex;
    @@ -213,7 +217,10 @@ static int macb_mii_probe(struct net_device *dev)
    }

    /* mask with MAC supported features */
    - phydev->supported &= PHY_BASIC_FEATURES;
    + if (macb_is_gem(bp))
    + phydev->supported &= PHY_GBIT_FEATURES;
    + else
    + phydev->supported &= PHY_BASIC_FEATURES;

    phydev->advertising = phydev->supported;

    @@ -1377,7 +1384,9 @@ static int __init macb_probe(struct platform_device *pdev)
    bp->phy_interface = err;
    }

    - if (bp->phy_interface == PHY_INTERFACE_MODE_RMII)
    + if (bp->phy_interface == PHY_INTERFACE_MODE_RGMII)
    + macb_or_gem_writel(bp, USRIO, GEM_BIT(RGMII));
    + else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII)
    #if defined(CONFIG_ARCH_AT91)
    macb_or_gem_writel(bp, USRIO, (MACB_BIT(RMII) |
    MACB_BIT(CLKEN)));
    diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
    index 335e288..f69ceef 100644
    --- a/drivers/net/ethernet/cadence/macb.h
    +++ b/drivers/net/ethernet/cadence/macb.h
    @@ -145,6 +145,8 @@
    #define MACB_IRXFCS_SIZE 1

    /* GEM specific NCFGR bitfields. */
    +#define GEM_GBE_OFFSET 10
    +#define GEM_GBE_SIZE 1
    #define GEM_CLK_OFFSET 18
    #define GEM_CLK_SIZE 3
    #define GEM_DBW_OFFSET 21
    @@ -246,6 +248,8 @@
    /* Bitfields in USRIO (AT91) */
    #define MACB_RMII_OFFSET 0
    #define MACB_RMII_SIZE 1
    +#define GEM_RGMII_OFFSET 0 /* GEM gigabit mode */
    +#define GEM_RGMII_SIZE 1
    #define MACB_CLKEN_OFFSET 1
    #define MACB_CLKEN_SIZE 1

    --
    1.7.11.3


    \
     
     \ /
      Last update: 2012-09-19 14:41    [W:6.727 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site