Changeset 30848


Ignore:
Timestamp:
2012-03-07T17:32:46+01:00 (5 years ago)
Author:
juhosg
Message:

generic: ar8216: move port initialization into a separate function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/files/drivers/net/phy/ar8216.c

    r30847 r30848  
    719719} 
    720720 
     721static void 
     722ar8216_init_port(struct ar8216_priv *priv, int port) 
     723{ 
     724        /* Enable port learning and tx */ 
     725        priv->write(priv, AR8216_REG_PORT_CTRL(port), 
     726                AR8216_PORT_CTRL_LEARN | 
     727                (4 << AR8216_PORT_CTRL_STATE_S)); 
     728 
     729        priv->write(priv, AR8216_REG_PORT_VLAN(port), 0); 
     730 
     731        if (port == AR8216_PORT_CPU) { 
     732                priv->write(priv, AR8216_REG_PORT_STATUS(port), 
     733                        AR8216_PORT_STATUS_LINK_UP | 
     734                        ((priv->chip == AR8316) ? 
     735                                AR8216_PORT_SPEED_1000M : AR8216_PORT_SPEED_100M) | 
     736                        AR8216_PORT_STATUS_TXMAC | 
     737                        AR8216_PORT_STATUS_RXMAC | 
     738                        ((priv->chip == AR8316) ? AR8216_PORT_STATUS_RXFLOW : 0) | 
     739                        ((priv->chip == AR8316) ? AR8216_PORT_STATUS_TXFLOW : 0) | 
     740                        AR8216_PORT_STATUS_DUPLEX); 
     741        } else { 
     742                priv->write(priv, AR8216_REG_PORT_STATUS(port), 
     743                        AR8216_PORT_STATUS_LINK_AUTO); 
     744        } 
     745} 
     746 
    721747static int 
    722748ar8216_reset_switch(struct switch_dev *dev) 
     
    731757                priv->vlan_id[i] = i; 
    732758        } 
    733         for (i = 0; i < AR8216_NUM_PORTS; i++) { 
    734                 /* Enable port learning and tx */ 
    735                 priv->write(priv, AR8216_REG_PORT_CTRL(i), 
    736                         AR8216_PORT_CTRL_LEARN | 
    737                         (4 << AR8216_PORT_CTRL_STATE_S)); 
    738  
    739                 priv->write(priv, AR8216_REG_PORT_VLAN(i), 0); 
    740  
    741                 /* Configure all PHYs */ 
    742                 if (i == AR8216_PORT_CPU) { 
    743                         priv->write(priv, AR8216_REG_PORT_STATUS(i), 
    744                                 AR8216_PORT_STATUS_LINK_UP | 
    745                                 ((priv->chip == AR8316) ? 
    746                                         AR8216_PORT_SPEED_1000M : AR8216_PORT_SPEED_100M) | 
    747                                 AR8216_PORT_STATUS_TXMAC | 
    748                                 AR8216_PORT_STATUS_RXMAC | 
    749                                 ((priv->chip == AR8316) ? AR8216_PORT_STATUS_RXFLOW : 0) | 
    750                                 ((priv->chip == AR8316) ? AR8216_PORT_STATUS_TXFLOW : 0) | 
    751                                 AR8216_PORT_STATUS_DUPLEX); 
    752                 } else { 
    753                         priv->write(priv, AR8216_REG_PORT_STATUS(i), 
    754                                 AR8216_PORT_STATUS_LINK_AUTO); 
    755                 } 
    756         } 
     759 
     760        /* Configure all ports */ 
     761        for (i = 0; i < AR8216_NUM_PORTS; i++) 
     762                ar8216_init_port(priv, i); 
     763 
    757764        /* XXX: undocumented magic from atheros, required! */ 
    758765        priv->write(priv, 0x38, 0xc000050e); 
Note: See TracChangeset for help on using the changeset viewer.