brcm63xx: backport enet cleanup patches
[openwrt/openwrt.git] / target / linux / brcm63xx / patches-4.4 / 423-bcm63xx_enet_add_b53_support.patch
index 19d7905114a029a9da03d4a2a1ad67f14fc7f0e0..b498edf028013acb1d4cb189cd55fb4ac14521b9 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.h
 +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.h
-@@ -336,6 +336,9 @@ struct bcm_enet_priv {
+@@ -335,6 +335,9 @@ struct bcm_enet_priv {
        struct bcm63xx_enetsw_port used_ports[ENETSW_MAX_PORT];
        int sw_port_link[ENETSW_MAX_PORT];
  
@@ -20,7 +20,7 @@
  
  #include <bcm63xx_dev_enet.h>
  #include "bcm63xx_enet.h"
-@@ -1974,7 +1975,8 @@ static int bcm_enet_remove(struct platfo
+@@ -1969,7 +1970,8 @@ static int bcm_enet_remove(struct platfo
        return 0;
  }
  
@@ -30,7 +30,7 @@
        .probe  = bcm_enet_probe,
        .remove = bcm_enet_remove,
        .driver = {
-@@ -1983,6 +1985,42 @@ struct platform_driver bcm63xx_enet_driv
+@@ -1978,6 +1980,42 @@ struct platform_driver bcm63xx_enet_driv
        },
  };
  
@@ -73,7 +73,7 @@
  /*
   * switch mii access callbacks
   */
-@@ -2241,29 +2279,6 @@ static int bcm_enetsw_open(struct net_de
+@@ -2236,29 +2274,6 @@ static int bcm_enetsw_open(struct net_de
                enetsw_writeb(priv, rgmii_ctrl, ENETSW_RGMII_CTRL_REG(i));
        }
  
        /* initialize flow control buffer allocation */
        enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0,
                        ENETDMA_BUFALLOC_REG(priv->rx_chan));
-@@ -2722,6 +2737,9 @@ static int bcm_enetsw_probe(struct platf
+@@ -2717,6 +2732,9 @@ static int bcm_enetsw_probe(struct platf
        struct bcm63xx_enetsw_platform_data *pd;
        struct resource *res_mem;
        int ret, irq_rx, irq_tx;
 +      u16 port_mask = BIT(8);
 +      u8 val;
  
-       /* stop if shared driver failed, assume driver->probe will be
-        * called in the same order we register devices (correct ?)
-@@ -2811,6 +2829,43 @@ static int bcm_enetsw_probe(struct platf
+       if (!bcm_enet_shared_base[0])
+               return -EPROBE_DEFER;
+@@ -2799,6 +2817,43 @@ static int bcm_enetsw_probe(struct platf
        priv->pdev = pdev;
        priv->net_dev = dev;
  
 +
        return 0;
  
- out_put_clk:
-@@ -2839,6 +2894,9 @@ static int bcm_enetsw_remove(struct plat
+ out_disable_clk:
+@@ -2820,6 +2875,9 @@ static int bcm_enetsw_remove(struct plat
        priv = netdev_priv(dev);
        unregister_netdev(dev);
  
 +      /* remove switch */
 +      bcmenet_switch_unregister(priv);
 +
-       /* release device resources */
-       iounmap(priv->base);
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       clk_disable_unprepare(priv->mac_clk);
+       free_netdev(dev);