Changeset 32727


Ignore:
Timestamp:
2012-07-15T16:09:18+02:00 (6 years ago)
Author:
florian
Message:

[mcs814x] nuport-mac: add definitions of the various bits/masks used

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c

    r32659 r32727  
    3333 
    3434#define CTRL_REG                (MAC_BASE_ADDR) 
    35 #define MII_BUSY                0x00000001 
    36 #define MII_WRITE               0x00000002 
     35#define  MII_BUSY               (1 << 0) 
     36#define  MII_WRITE              (1 << 1) 
     37#define  RX_ENABLE              (1 << 2) 
     38#define  TX_ENABLE              (1 << 3) 
     39#define  DEFER_CHECK            (1 << 5) 
     40#define  STRIP_PAD              (1 << 8) 
     41#define  DRTRY_DISABLE          (1 << 10) 
     42#define  FULL_DUPLEX            (1 << 20) 
     43#define  HBD_DISABLE            (1 << 28) 
    3744#define MAC_ADDR_HIGH_REG       (MAC_BASE_ADDR + 0x04) 
    3845#define MAC_ADDR_LOW_REG        (MAC_BASE_ADDR + 0x08) 
    3946#define MII_ADDR_REG            (MAC_BASE_ADDR + 0x14) 
     47#define  MII_ADDR_SHIFT         (11) 
     48#define  MII_REG_SHIFT          (6) 
    4049#define MII_DATA_REG            (MAC_BASE_ADDR + 0x18) 
    4150/* Link interrupt registers */ 
    4251#define LINK_INT_CSR            (MAC_BASE_ADDR + 0xD0) 
     52#define  LINK_INT_EN            (1 << 0) 
     53#define  LINK_PHY_ADDR_SHIFT    (1) 
     54#define  LINK_PHY_REG_SHIFT     (6) 
     55#define  LINK_BIT_UP_SHIFT      (11) 
     56#define  LINK_UP                (1 << 16) 
    4357#define LINK_INT_POLL_TIME      (MAC_BASE_ADDR + 0xD4) 
     58#define  LINK_POLL_MASK         ((1 << 20) - 1) 
    4459 
    4560#define DMA_CHAN_WIDTH          32 
     
    5469#define RX_ACT_BYTES            (RX_DMA_BASE + 0x08) 
    5570#define RX_START_DMA            (RX_DMA_BASE + 0x0C) 
     71#define  RX_DMA_ENABLE          (1 << 0) 
     72#define  RX_DMA_RESET           (1 << 1) 
     73#define  RX_DMA_STATUS_FIFO     (1 << 12) 
    5674#define RX_DMA_ENH              (RX_DMA_BASE + 0x14) 
     75#define  RX_DMA_INT_ENABLE      (1 << 1) 
    5776 
    5877/* Transmit DMA registers */ 
     
    6382#define TX_BYTES_SENT           (TX_DMA_BASE + 0x08) 
    6483#define TX_START_DMA            (TX_DMA_BASE + 0x0C) 
     84#define  TX_DMA_ENABLE          (1 << 0) 
     85#define  TX_DMA_START_FRAME     (1 << 2) 
     86#define  TX_DMA_END_FRAME       (1 << 3) 
     87#define  TX_DMA_PAD_DISABLE     (1 << 8) 
     88#define  TX_DMA_CRC_DISABLE     (1 << 9) 
     89#define  TX_DMA_FIFO_FULL       (1 << 16) 
     90#define  TX_DMA_FIFO_EMPTY      (1 << 17) 
     91#define  TX_DMA_STATUS_AVAIL    (1 << 18) 
     92#define  TX_DMA_RESET           (1 << 24) 
    6593#define TX_DMA_STATUS           (TX_DMA_BASE + 0x10) 
    6694#define TX_DMA_ENH              (TX_DMA_BASE + 0x14) 
     95#define  TX_DMA_ENH_ENABLE      (1 << 0) 
     96#define  TX_DMA_INT_FIFO        (1 << 1) 
    6797 
    6898#define RX_ALLOC_SIZE           SZ_2K 
     
    171201                return ret; 
    172202 
    173         val |= (mii_id << 11) | (regnum << 6) | MII_BUSY; 
     203        val |= (mii_id << MII_ADDR_SHIFT) | (regnum << MII_REG_SHIFT) | MII_BUSY; 
    174204        nuport_mac_writel(val, MII_ADDR_REG); 
    175205        ret = nuport_mac_mii_busy_wait(priv); 
     
    192222                return ret; 
    193223 
    194         val |= (mii_id << 11) | (regnum << 6) | MII_BUSY | MII_WRITE; 
     224        val |= (mii_id << MII_ADDR_SHIFT) | (regnum << MII_REG_SHIFT); 
     225        val |= MII_BUSY | MII_WRITE; 
    195226        nuport_mac_writel(value, MII_DATA_REG); 
    196227        nuport_mac_writel(val, MII_ADDR_REG); 
     
    213244        while (timeout--) { 
    214245                reg = nuport_mac_readl(TX_START_DMA); 
    215                 if (!(reg & 0x01)) { 
     246                if (!(reg & TX_DMA_ENABLE)) { 
    216247                        netdev_dbg(priv->dev, "dma ready\n"); 
    217248                        break; 
     
    227258 
    228259        /* enable enhanced mode */ 
    229         nuport_mac_writel(0x01, TX_DMA_ENH); 
     260        nuport_mac_writel(TX_DMA_ENH_ENABLE, TX_DMA_ENH); 
    230261        nuport_mac_writel(p, TX_BUFFER_ADDR); 
    231262        nuport_mac_writel((skb->len) - 1, TX_PKT_BYTES); 
    232263        wmb(); 
    233         nuport_mac_writel(0x0D, TX_START_DMA); 
     264        reg = TX_DMA_ENABLE | TX_DMA_START_FRAME | TX_DMA_END_FRAME; 
     265        nuport_mac_writel(reg, TX_START_DMA); 
    234266 
    235267        return 0; 
     
    241273 
    242274        reg = nuport_mac_readl(TX_START_DMA); 
    243         reg |= (1 << 24); 
     275        reg |= TX_DMA_RESET; 
    244276        nuport_mac_writel(reg, TX_START_DMA); 
    245277} 
     
    254286        while (timeout--) { 
    255287                reg = nuport_mac_readl(RX_START_DMA); 
    256                 if (!(reg & 0x01)) { 
     288                if (!(reg & RX_DMA_ENABLE)) { 
    257289                        netdev_dbg(priv->dev, "dma ready\n"); 
    258290                        break; 
     
    269301        nuport_mac_writel(p, RX_BUFFER_ADDR); 
    270302        wmb(); 
    271         nuport_mac_writel(0x01, RX_START_DMA); 
     303        nuport_mac_writel(RX_DMA_ENABLE, RX_START_DMA); 
    272304 
    273305        return 0; 
     
    279311 
    280312        reg = nuport_mac_readl(RX_START_DMA); 
    281         reg |= (1 << 1); 
     313        reg |= RX_DMA_RESET; 
    282314        nuport_mac_writel(reg, RX_START_DMA); 
    283315} 
     
    289321 
    290322        reg = nuport_mac_readl(RX_DMA_ENH); 
    291         reg &= ~(1 << 1); 
     323        reg &= ~RX_DMA_INT_ENABLE; 
    292324        nuport_mac_writel(reg, RX_DMA_ENH); 
    293325} 
     
    298330 
    299331        reg = nuport_mac_readl(RX_DMA_ENH); 
    300         reg |= (1 << 1); 
     332        reg |= RX_DMA_INT_ENABLE; 
    301333        nuport_mac_writel(reg, RX_DMA_ENH); 
    302334} 
     
    364396                reg = nuport_mac_readl(CTRL_REG); 
    365397                if (phydev->duplex == DUPLEX_FULL) 
    366                         reg |= (1 << 20); 
     398                        reg |= DUPLEX_FULL; 
    367399                else 
    368                         reg &= ~(1 << 20); 
     400                        reg &= ~DUPLEX_FULL; 
    369401                nuport_mac_writel(reg, CTRL_REG); 
    370402 
     
    393425 
    394426        reg = nuport_mac_readl(LINK_INT_CSR); 
    395         phy_addr = (reg >> 1) & 0x0f; 
     427        phy_addr = (reg >> LINK_PHY_ADDR_SHIFT) & (PHY_MAX_ADDR - 1); 
    396428 
    397429        if (phy_addr != priv->phydev->addr) { 
     
    400432        } 
    401433 
    402         priv->phydev->link = (reg & (1 << 16)); 
     434        priv->phydev->link = (reg & LINK_UP); 
    403435        nuport_mac_adjust_link(dev); 
    404436 
     
    418450        /* clear status word available if ready */ 
    419451        reg = nuport_mac_readl(TX_START_DMA); 
    420         if (reg & (1 << 18)) { 
     452        if (reg & TX_DMA_STATUS_AVAIL) { 
    421453                nuport_mac_writel(reg, TX_START_DMA); 
    422454                reg = nuport_mac_readl(TX_DMA_STATUS); 
     
    691723        struct nuport_mac_priv *priv = netdev_priv(dev); 
    692724        unsigned long flags; 
     725        u32 reg = 0; 
    693726 
    694727        ret = clk_enable(priv->emac_clk); 
     
    699732 
    700733        /* Set MAC into full duplex mode by default */ 
    701         nuport_mac_writel(0x1010052C, CTRL_REG); 
     734        reg |= RX_ENABLE | TX_ENABLE; 
     735        reg |= DEFER_CHECK | STRIP_PAD | DRTRY_DISABLE; 
     736        reg |= FULL_DUPLEX | HBD_DISABLE; 
     737        nuport_mac_writel(reg, CTRL_REG); 
    702738 
    703739        /* set mac address in hardware in case it was not already */ 
     
    713749        phy_start(priv->phydev); 
    714750 
    715         /* Enable link interrupt monitoring */ 
     751        /* Enable link interrupt monitoring for our PHY address */ 
     752        reg = LINK_INT_EN | (priv->phydev->addr << LINK_PHY_ADDR_SHIFT); 
     753        /* MII_BMSR register to be watched */ 
     754        reg |= (1 << LINK_PHY_REG_SHIFT); 
     755        /* BMSR_STATUS to be watched in particular */ 
     756        reg |= (2 << LINK_BIT_UP_SHIFT); 
     757 
    716758        spin_lock_irqsave(&priv->lock, flags); 
    717         nuport_mac_writel(0x1041 | (priv->phydev->addr << 1), LINK_INT_CSR); 
    718         nuport_mac_writel(0xFFFFF, LINK_INT_POLL_TIME); 
     759        nuport_mac_writel(reg, LINK_INT_CSR); 
     760        nuport_mac_writel(LINK_POLL_MASK, LINK_INT_POLL_TIME); 
    719761        spin_unlock_irqrestore(&priv->lock, flags); 
    720762 
     
    772814 
    773815        free_irq(priv->link_irq, dev); 
    774         nuport_mac_writel(0x00, LINK_INT_CSR); 
    775         nuport_mac_writel(0x00, LINK_INT_POLL_TIME); 
     816        /* disable PHY polling */ 
     817        nuport_mac_writel(0, LINK_INT_CSR); 
     818        nuport_mac_writel(0, LINK_INT_POLL_TIME); 
    776819        phy_stop(priv->phydev); 
    777820 
Note: See TracChangeset for help on using the changeset viewer.