cpsw->quirk_irq = true;
        }
 
+       ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
+
+       ndev->netdev_ops = &cpsw_netdev_ops;
+       ndev->ethtool_ops = &cpsw_ethtool_ops;
+       netif_napi_add(ndev, &cpsw->napi_rx, cpsw_rx_poll, CPSW_POLL_WEIGHT);
+       netif_tx_napi_add(ndev, &cpsw->napi_tx, cpsw_tx_poll, CPSW_POLL_WEIGHT);
+       cpsw_split_res(ndev);
+
+       /* register the network device */
+       SET_NETDEV_DEV(ndev, &pdev->dev);
+       ret = register_netdev(ndev);
+       if (ret) {
+               dev_err(priv->dev, "error registering net device\n");
+               ret = -ENODEV;
+               goto clean_ale_ret;
+       }
+
+       if (cpsw->data.dual_emac) {
+               ret = cpsw_probe_dual_emac(priv);
+               if (ret) {
+                       cpsw_err(priv, probe, "error probe slave 2 emac interface\n");
+                       goto clean_unregister_netdev_ret;
+               }
+       }
+
        /* Grab RX and TX IRQs. Note that we also have RX_THRESHOLD and
         * MISC IRQs which are always kept disabled with this driver so
         * we will not request them.
                goto clean_ale_ret;
        }
 
-       ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
-
-       ndev->netdev_ops = &cpsw_netdev_ops;
-       ndev->ethtool_ops = &cpsw_ethtool_ops;
-       netif_napi_add(ndev, &cpsw->napi_rx, cpsw_rx_poll, CPSW_POLL_WEIGHT);
-       netif_tx_napi_add(ndev, &cpsw->napi_tx, cpsw_tx_poll, CPSW_POLL_WEIGHT);
-       cpsw_split_res(ndev);
-
-       /* register the network device */
-       SET_NETDEV_DEV(ndev, &pdev->dev);
-       ret = register_netdev(ndev);
-       if (ret) {
-               dev_err(priv->dev, "error registering net device\n");
-               ret = -ENODEV;
-               goto clean_ale_ret;
-       }
-
        cpsw_notice(priv, probe,
                    "initialized device (regs %pa, irq %d, pool size %d)\n",
                    &ss_res->start, ndev->irq, dma_params.descs_pool_size);
-       if (cpsw->data.dual_emac) {
-               ret = cpsw_probe_dual_emac(priv);
-               if (ret) {
-                       cpsw_err(priv, probe, "error probe slave 2 emac interface\n");
-                       goto clean_unregister_netdev_ret;
-               }
-       }
 
        pm_runtime_put(&pdev->dev);