|
@@ -4104,7 +4104,6 @@ static int mv_platform_probe(struct platform_device *pdev)
|
|
|
if (!hpriv->port_phys)
|
|
|
return -ENOMEM;
|
|
|
host->private_data = hpriv;
|
|
|
- hpriv->n_ports = n_ports;
|
|
|
hpriv->board_idx = chip_soc;
|
|
|
|
|
|
host->iomap = NULL;
|
|
@@ -4132,13 +4131,18 @@ static int mv_platform_probe(struct platform_device *pdev)
|
|
|
rc = PTR_ERR(hpriv->port_phys[port]);
|
|
|
hpriv->port_phys[port] = NULL;
|
|
|
if (rc != -EPROBE_DEFER)
|
|
|
- dev_warn(&pdev->dev, "error getting phy %d",
|
|
|
- rc);
|
|
|
+ dev_warn(&pdev->dev, "error getting phy %d", rc);
|
|
|
+
|
|
|
+ /* Cleanup only the initialized ports */
|
|
|
+ hpriv->n_ports = port;
|
|
|
goto err;
|
|
|
} else
|
|
|
phy_power_on(hpriv->port_phys[port]);
|
|
|
}
|
|
|
|
|
|
+ /* All the ports have been initialized */
|
|
|
+ hpriv->n_ports = n_ports;
|
|
|
+
|
|
|
/*
|
|
|
* (Re-)program MBUS remapping windows if we are asked to.
|
|
|
*/
|
|
@@ -4176,7 +4180,7 @@ err:
|
|
|
clk_disable_unprepare(hpriv->clk);
|
|
|
clk_put(hpriv->clk);
|
|
|
}
|
|
|
- for (port = 0; port < n_ports; port++) {
|
|
|
+ for (port = 0; port < hpriv->n_ports; port++) {
|
|
|
if (!IS_ERR(hpriv->port_clks[port])) {
|
|
|
clk_disable_unprepare(hpriv->port_clks[port]);
|
|
|
clk_put(hpriv->port_clks[port]);
|