ramips: switch to 6.1 kernel
[openwrt/staging/stintel.git] / target / linux / ramips / files / drivers / net / ethernet / ralink / mtk_eth_soc.c
index 9c11e9cc894c3a771185eff638c2dbc0a3a8957a..3748264dadf7719574b784c30de85ea76cc93448 100644 (file)
@@ -61,8 +61,6 @@
 #define NEXT_TX_DESP_IDX(X)    (((X) + 1) & (ring->tx_ring_size - 1))
 #define NEXT_RX_DESP_IDX(X)    (((X) + 1) & (ring->rx_ring_size - 1))
 
-#define SYSC_REG_RSTCTRL       0x34
-
 static int fe_msg_level = -1;
 module_param_named(msg_level, fe_msg_level, int, 0);
 MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)");
@@ -127,20 +125,6 @@ void fe_m32(struct fe_priv *eth, u32 clear, u32 set, unsigned reg)
        spin_unlock(&eth->page_lock);
 }
 
-void fe_reset(u32 reset_bits)
-{
-       u32 t;
-
-       t = rt_sysc_r32(SYSC_REG_RSTCTRL);
-       t |= reset_bits;
-       rt_sysc_w32(t, SYSC_REG_RSTCTRL);
-       usleep_range(10, 20);
-
-       t &= ~reset_bits;
-       rt_sysc_w32(t, SYSC_REG_RSTCTRL);
-       usleep_range(10, 20);
-}
-
 static void fe_reset_fe(struct fe_priv *priv)
 {
        if (!priv->resets)
@@ -168,7 +152,7 @@ static inline void fe_int_enable(u32 mask)
        fe_reg_r32(FE_REG_FE_INT_ENABLE);
 }
 
-static inline void fe_hw_set_macaddr(struct fe_priv *priv, unsigned char *mac)
+static inline void fe_hw_set_macaddr(struct fe_priv *priv, const unsigned char *mac)
 {
        unsigned long flags;
 
@@ -1381,10 +1365,8 @@ static int __init fe_init(struct net_device *dev)
 
        fe_reset_phy(priv);
 
-       of_get_mac_address(priv->dev->of_node, dev->dev_addr);
-
-       /* If the mac address is invalid, use random mac address  */
-       if (!is_valid_ether_addr(dev->dev_addr)) {
+       /* Set the MAC address if it is correct, if not use a random MAC address  */
+       if (of_get_ethdev_address(priv->dev->of_node, dev)) {
                eth_hw_addr_random(dev);
                dev_err(priv->dev, "generated random MAC address %pM\n",
                        dev->dev_addr);
@@ -1619,6 +1601,7 @@ static int fe_probe(struct platform_device *pdev)
                        goto err_free_dev;
                }
                spin_lock_init(&priv->hw_stats->stats_lock);
+               u64_stats_init(&priv->hw_stats->syncp);
        }
 
        sysclk = devm_clk_get(&pdev->dev, NULL);
@@ -1646,7 +1629,6 @@ static int fe_probe(struct platform_device *pdev)
        priv->tx_ring.tx_ring_size = NUM_DMA_DESC;
        priv->rx_ring.rx_ring_size = NUM_DMA_DESC;
        INIT_WORK(&priv->pending_work, fe_pending_work);
-       u64_stats_init(&priv->hw_stats->syncp);
 
        napi_weight = 16;
        if (priv->flags & FE_FLAG_NAPI_WEIGHT) {
@@ -1654,7 +1636,7 @@ static int fe_probe(struct platform_device *pdev)
                priv->tx_ring.tx_ring_size *= 4;
                priv->rx_ring.rx_ring_size *= 4;
        }
-       netif_napi_add(netdev, &priv->rx_napi, fe_poll, napi_weight);
+       netif_napi_add_weight(netdev, &priv->rx_napi, fe_poll, napi_weight);
        fe_set_ethtool_ops(netdev);
 
        err = register_netdev(netdev);