diff options
| -rw-r--r-- | drivers/ata/sata_mv.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index 20a7517bd339..9c1a11de3044 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
| @@ -4104,7 +4104,6 @@ static int mv_platform_probe(struct platform_device *pdev) | |||
| 4104 | if (!hpriv->port_phys) | 4104 | if (!hpriv->port_phys) |
| 4105 | return -ENOMEM; | 4105 | return -ENOMEM; |
| 4106 | host->private_data = hpriv; | 4106 | host->private_data = hpriv; |
| 4107 | hpriv->n_ports = n_ports; | ||
| 4108 | hpriv->board_idx = chip_soc; | 4107 | hpriv->board_idx = chip_soc; |
| 4109 | 4108 | ||
| 4110 | host->iomap = NULL; | 4109 | host->iomap = NULL; |
| @@ -4132,11 +4131,17 @@ static int mv_platform_probe(struct platform_device *pdev) | |||
| 4132 | hpriv->port_phys[port] = NULL; | 4131 | hpriv->port_phys[port] = NULL; |
| 4133 | if ((rc != -EPROBE_DEFER) && (rc != -ENODEV)) | 4132 | if ((rc != -EPROBE_DEFER) && (rc != -ENODEV)) |
| 4134 | dev_warn(&pdev->dev, "error getting phy"); | 4133 | dev_warn(&pdev->dev, "error getting phy"); |
| 4134 | |||
| 4135 | /* Cleanup only the initialized ports */ | ||
| 4136 | hpriv->n_ports = port; | ||
| 4135 | goto err; | 4137 | goto err; |
| 4136 | } else | 4138 | } else |
| 4137 | phy_power_on(hpriv->port_phys[port]); | 4139 | phy_power_on(hpriv->port_phys[port]); |
| 4138 | } | 4140 | } |
| 4139 | 4141 | ||
| 4142 | /* All the ports have been initialized */ | ||
| 4143 | hpriv->n_ports = n_ports; | ||
| 4144 | |||
| 4140 | /* | 4145 | /* |
| 4141 | * (Re-)program MBUS remapping windows if we are asked to. | 4146 | * (Re-)program MBUS remapping windows if we are asked to. |
| 4142 | */ | 4147 | */ |
| @@ -4174,7 +4179,7 @@ err: | |||
| 4174 | clk_disable_unprepare(hpriv->clk); | 4179 | clk_disable_unprepare(hpriv->clk); |
| 4175 | clk_put(hpriv->clk); | 4180 | clk_put(hpriv->clk); |
| 4176 | } | 4181 | } |
| 4177 | for (port = 0; port < n_ports; port++) { | 4182 | for (port = 0; port < hpriv->n_ports; port++) { |
| 4178 | if (!IS_ERR(hpriv->port_clks[port])) { | 4183 | if (!IS_ERR(hpriv->port_clks[port])) { |
| 4179 | clk_disable_unprepare(hpriv->port_clks[port]); | 4184 | clk_disable_unprepare(hpriv->port_clks[port]); |
| 4180 | clk_put(hpriv->port_clks[port]); | 4185 | clk_put(hpriv->port_clks[port]); |
