ramips_eth: fix invalid register writes
[openwrt.git] / target / linux / ramips / files / drivers / net / ramips.c
index 23a3fb6..c9a0c9e 100644 (file)
@@ -88,8 +88,8 @@ ramips_alloc_dma(struct net_device *dev)
        if (!priv->tx)
                goto err_cleanup;
 
+       memset(priv->tx, 0, NUM_TX_DESC * sizeof(struct ramips_tx_dma));
        for (i = 0; i < NUM_TX_DESC; i++) {
-               memset(&priv->tx[i], 0, sizeof(struct ramips_tx_dma));
                priv->tx[i].txd2 |= TX_DMA_LSO | TX_DMA_DONE;
                priv->tx[i].txd4 &= (TX_DMA_QN_MASK | TX_DMA_PN_MASK);
                priv->tx[i].txd4 |= TX_DMA_QN(3) | TX_DMA_PN(1);
@@ -270,8 +270,8 @@ ramips_eth_set_mac_addr(struct net_device *dev, void *priv)
 
        memcpy(dev->dev_addr, ((struct sockaddr*)priv)->sa_data, dev->addr_len);
        ramips_fe_wr((mac[0] << 8) | mac[1], RAMIPS_GDMA1_MAC_ADRH);
-       ramips_fe_wr(RAMIPS_GDMA1_MAC_ADRL,
-                    (mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5]);
+       ramips_fe_wr((mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5],
+                    RAMIPS_GDMA1_MAC_ADRL);
        return 0;
 }
 
@@ -357,8 +357,9 @@ ramips_eth_stop(struct net_device *dev)
 {
        struct raeth_priv *priv = netdev_priv(dev);
 
-       ramips_fe_wr(RAMIPS_PDMA_GLO_CFG, ramips_fe_rr(RAMIPS_PDMA_GLO_CFG) &
-               ~(RAMIPS_TX_WB_DDONE | RAMIPS_RX_DMA_EN | RAMIPS_TX_DMA_EN));
+       ramips_fe_wr(ramips_fe_rr(RAMIPS_PDMA_GLO_CFG) &
+                    ~(RAMIPS_TX_WB_DDONE | RAMIPS_RX_DMA_EN | RAMIPS_TX_DMA_EN),
+                    RAMIPS_PDMA_GLO_CFG);
        free_irq(dev->irq, dev);
        netif_stop_queue(dev);
        tasklet_kill(&priv->tx_housekeeping_tasklet);
This page took 0.027249 seconds and 4 git commands to generate.