]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/mvpp2.c
net: mvpp2x: remove MBUS configurations from MvPP22 driver
[u-boot] / drivers / net / mvpp2.c
index 1264f145cad0e132fd7c2c95dd98ae335d1e2738..2e5a1943c1ff739d769248e1f5b76a0960d2831f 100644 (file)
@@ -617,10 +617,10 @@ enum mv_netc_lanes {
 #define MVPP2_MAX_TXD                  16
 
 /* Amount of Tx descriptors that can be reserved at once by CPU */
-#define MVPP2_CPU_DESC_CHUNK           64
+#define MVPP2_CPU_DESC_CHUNK           16
 
 /* Max number of Tx descriptors in each aggregated queue */
-#define MVPP2_AGGR_TXQ_SIZE            256
+#define MVPP2_AGGR_TXQ_SIZE            16
 
 /* Descriptor aligned size */
 #define MVPP2_DESC_ALIGNED_SIZE                32
@@ -942,6 +942,7 @@ struct mvpp2 {
        struct mii_dev *bus;
 
        int probe_done;
+       u8 num_ports;
 };
 
 struct mvpp2_pcpu_stats {
@@ -3063,10 +3064,6 @@ static void gop_gmac_sgmii2_5_cfg(struct mvpp2_port *port)
        val |= MVPP2_GMAC_CTRL4_QSGMII_BYPASS_ACTIVE_MASK;
        writel(val, port->base + MVPP2_GMAC_CTRL_4_REG);
 
-       val = readl(port->base + MVPP2_GMAC_CTRL_2_REG);
-       val |= MVPP2_GMAC_PORT_DIS_PADING_MASK;
-       writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
-
        val = readl(port->base + MVPP2_GMAC_CTRL_0_REG);
        /*
         * Configure GIG MAC to 1000Base-X mode connected to a fiber
@@ -3109,10 +3106,6 @@ static void gop_gmac_sgmii_cfg(struct mvpp2_port *port)
        val |= MVPP2_GMAC_CTRL4_QSGMII_BYPASS_ACTIVE_MASK;
        writel(val, port->base + MVPP2_GMAC_CTRL_4_REG);
 
-       val = readl(port->base + MVPP2_GMAC_CTRL_2_REG);
-       val |= MVPP2_GMAC_PORT_DIS_PADING_MASK;
-       writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
-
        val = readl(port->base + MVPP2_GMAC_CTRL_0_REG);
        /* configure GIG MAC to SGMII mode */
        val &= ~MVPP2_GMAC_PORT_TYPE_MASK;
@@ -3151,10 +3144,6 @@ static void gop_gmac_rgmii_cfg(struct mvpp2_port *port)
        val |= MVPP2_GMAC_CTRL4_EXT_PIN_GMII_SEL_MASK;
        writel(val, port->base + MVPP2_GMAC_CTRL_4_REG);
 
-       val = readl(port->base + MVPP2_GMAC_CTRL_2_REG);
-       val &= ~MVPP2_GMAC_PORT_DIS_PADING_MASK;
-       writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
-
        val = readl(port->base + MVPP2_GMAC_CTRL_0_REG);
        /* configure GIG MAC to SGMII mode */
        val &= ~MVPP2_GMAC_PORT_TYPE_MASK;
@@ -4860,6 +4849,7 @@ static int mvpp2_port_probe(struct udevice *dev,
 #endif
 
        priv->port_list[port->id] = port;
+       priv->num_ports++;
        return 0;
 }
 
@@ -5024,13 +5014,14 @@ static int mvpp2_init(struct udevice *dev, struct mvpp2 *priv)
                return -EINVAL;
        }
 
-       /* MBUS windows configuration */
-       dram_target_info = mvebu_mbus_dram_info();
-       if (dram_target_info)
-               mvpp2_conf_mbus_windows(dram_target_info, priv);
-
        if (priv->hw_version == MVPP22)
                mvpp2_axi_init(priv);
+       else {
+               /* MBUS windows configuration */
+               dram_target_info = mvebu_mbus_dram_info();
+               if (dram_target_info)
+                       mvpp2_conf_mbus_windows(dram_target_info, priv);
+       }
 
        if (priv->hw_version == MVPP21) {
                /* Disable HW PHY polling */
@@ -5524,10 +5515,8 @@ static int mvpp2_probe(struct udevice *dev)
        int err;
 
        /* Only call the probe function for the parent once */
-       if (!priv->probe_done) {
+       if (!priv->probe_done)
                err = mvpp2_base_probe(dev->parent);
-               priv->probe_done = 1;
-       }
 
        port->priv = dev_get_priv(dev->parent);
 
@@ -5565,11 +5554,15 @@ static int mvpp2_probe(struct udevice *dev)
                gop_port_init(port);
        }
 
-       /* Initialize network controller */
-       err = mvpp2_init(dev, priv);
-       if (err < 0) {
-               dev_err(&pdev->dev, "failed to initialize controller\n");
-               return err;
+       if (!priv->probe_done) {
+               /* Initialize network controller */
+               err = mvpp2_init(dev, priv);
+               if (err < 0) {
+                       dev_err(&pdev->dev, "failed to initialize controller\n");
+                       return err;
+               }
+               priv->num_ports = 0;
+               priv->probe_done = 1;
        }
 
        err = mvpp2_port_probe(dev, port, dev_of_offset(dev), priv);
@@ -5597,6 +5590,11 @@ static int mvpp2_remove(struct udevice *dev)
        struct mvpp2 *priv = port->priv;
        int i;
 
+       priv->num_ports--;
+
+       if (priv->num_ports)
+               return 0;
+
        for (i = 0; i < MVPP2_BM_POOLS_NUM; i++)
                mvpp2_bm_pool_destroy(dev, priv, &priv->bm_pools[i]);