Changeset 34183


Ignore:
Timestamp:
2012-11-13T14:14:55+01:00 (5 years ago)
Author:
blogic
Message:

[ramips] backport ethernet fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/attitude_adjustment/target/linux/ramips/files/drivers/net/ethernet/ramips/ramips_main.c

    r33548 r34183  
    928928 
    929929static int 
    930 ramips_eth_open(struct net_device *dev) 
     930ramips_eth_hw_init(struct net_device *dev) 
    931931{ 
    932932        struct raeth_priv *re = netdev_priv(dev); 
     
    946946 
    947947        ramips_setup_dma(re); 
    948         ramips_fe_twr((ramips_fe_trr(RAETH_REG_PDMA_GLO_CFG) & 0xff) | 
    949                 (RAMIPS_TX_WB_DDONE | RAMIPS_RX_DMA_EN | 
    950                 RAMIPS_TX_DMA_EN | RAMIPS_PDMA_SIZE_4DWORDS), 
    951                 RAETH_REG_PDMA_GLO_CFG); 
    952948        ramips_fe_wr((ramips_fe_rr(RAMIPS_FE_GLO_CFG) & 
    953949                ~(RAMIPS_US_CYC_CNT_MASK << RAMIPS_US_CYC_CNT_SHIFT)) | 
     
    959955        tasklet_init(&re->rx_tasklet, ramips_eth_rx_hw, (unsigned long)dev); 
    960956 
    961         ramips_phy_start(re); 
    962957 
    963958        ramips_fe_twr(RAMIPS_DELAY_INIT, RAETH_REG_DLY_INT_CFG); 
     
    979974        ramips_fe_wr(0, RAMIPS_FE_RST_GL); 
    980975 
     976        return 0; 
     977 
     978err_free_irq: 
     979        free_irq(dev->irq, dev); 
     980        return err; 
     981} 
     982 
     983static int 
     984ramips_eth_open(struct net_device *dev) 
     985{ 
     986        struct raeth_priv *re = netdev_priv(dev); 
     987 
     988        ramips_fe_twr((ramips_fe_trr(RAETH_REG_PDMA_GLO_CFG) & 0xff) | 
     989                (RAMIPS_TX_WB_DDONE | RAMIPS_RX_DMA_EN | 
     990                RAMIPS_TX_DMA_EN | RAMIPS_PDMA_SIZE_4DWORDS), 
     991                RAETH_REG_PDMA_GLO_CFG); 
     992        ramips_phy_start(re); 
    981993        netif_start_queue(dev); 
    982994        return 0; 
    983  
    984  err_free_irq: 
    985         free_irq(dev->irq, dev); 
    986         return err; 
    987995} 
    988996 
     
    9961004                     RAETH_REG_PDMA_GLO_CFG); 
    9971005 
    998         /* disable all interrupts in the hw */ 
    999         ramips_fe_twr(0, RAETH_REG_FE_INT_ENABLE); 
    1000  
     1006        netif_stop_queue(dev); 
    10011007        ramips_phy_stop(re); 
    1002         free_irq(dev->irq, dev); 
    1003         netif_stop_queue(dev); 
    1004         tasklet_kill(&re->tx_housekeeping_tasklet); 
    1005         tasklet_kill(&re->rx_tasklet); 
    1006         ramips_ring_cleanup(re); 
    1007         ramips_ring_free(re); 
    10081008        RADEBUG("ramips_eth: stopped\n"); 
    10091009        return 0; 
     
    10391039                goto err_phy_disconnect; 
    10401040 
     1041        err = ramips_eth_hw_init(dev); 
     1042        if (err) 
     1043                goto err_debugfs; 
     1044 
    10411045        return 0; 
    10421046 
     1047err_debugfs: 
     1048        raeth_debugfs_exit(re); 
    10431049err_phy_disconnect: 
    10441050        ramips_phy_disconnect(re); 
     
    10561062        ramips_phy_disconnect(re); 
    10571063        ramips_mdio_cleanup(re); 
     1064        ramips_fe_twr(0, RAETH_REG_FE_INT_ENABLE); 
     1065        free_irq(dev->irq, dev); 
     1066        tasklet_kill(&re->tx_housekeeping_tasklet); 
     1067        tasklet_kill(&re->rx_tasklet); 
     1068        ramips_ring_cleanup(re); 
     1069        ramips_ring_free(re); 
    10581070} 
    10591071 
Note: See TracChangeset for help on using the changeset viewer.