diff options
Diffstat (limited to 'drivers/ata/ahci_imx.c')
-rw-r--r-- | drivers/ata/ahci_imx.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c index 35d51c59a370..3f3a7db208ae 100644 --- a/drivers/ata/ahci_imx.c +++ b/drivers/ata/ahci_imx.c | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <linux/libata.h> | 28 | #include <linux/libata.h> |
29 | #include "ahci.h" | 29 | #include "ahci.h" |
30 | 30 | ||
31 | #define DRV_NAME "ahci-imx" | ||
32 | |||
31 | enum { | 33 | enum { |
32 | /* Timer 1-ms Register */ | 34 | /* Timer 1-ms Register */ |
33 | IMX_TIMER1MS = 0x00e0, | 35 | IMX_TIMER1MS = 0x00e0, |
@@ -221,11 +223,9 @@ static int imx_sata_enable(struct ahci_host_priv *hpriv) | |||
221 | if (imxpriv->no_device) | 223 | if (imxpriv->no_device) |
222 | return 0; | 224 | return 0; |
223 | 225 | ||
224 | if (hpriv->target_pwr) { | 226 | ret = ahci_platform_enable_regulators(hpriv); |
225 | ret = regulator_enable(hpriv->target_pwr); | 227 | if (ret) |
226 | if (ret) | 228 | return ret; |
227 | return ret; | ||
228 | } | ||
229 | 229 | ||
230 | ret = clk_prepare_enable(imxpriv->sata_ref_clk); | 230 | ret = clk_prepare_enable(imxpriv->sata_ref_clk); |
231 | if (ret < 0) | 231 | if (ret < 0) |
@@ -270,8 +270,7 @@ static int imx_sata_enable(struct ahci_host_priv *hpriv) | |||
270 | disable_clk: | 270 | disable_clk: |
271 | clk_disable_unprepare(imxpriv->sata_ref_clk); | 271 | clk_disable_unprepare(imxpriv->sata_ref_clk); |
272 | disable_regulator: | 272 | disable_regulator: |
273 | if (hpriv->target_pwr) | 273 | ahci_platform_disable_regulators(hpriv); |
274 | regulator_disable(hpriv->target_pwr); | ||
275 | 274 | ||
276 | return ret; | 275 | return ret; |
277 | } | 276 | } |
@@ -291,8 +290,7 @@ static void imx_sata_disable(struct ahci_host_priv *hpriv) | |||
291 | 290 | ||
292 | clk_disable_unprepare(imxpriv->sata_ref_clk); | 291 | clk_disable_unprepare(imxpriv->sata_ref_clk); |
293 | 292 | ||
294 | if (hpriv->target_pwr) | 293 | ahci_platform_disable_regulators(hpriv); |
295 | regulator_disable(hpriv->target_pwr); | ||
296 | } | 294 | } |
297 | 295 | ||
298 | static void ahci_imx_error_handler(struct ata_port *ap) | 296 | static void ahci_imx_error_handler(struct ata_port *ap) |
@@ -524,6 +522,10 @@ static u32 imx_ahci_parse_props(struct device *dev, | |||
524 | return reg_value; | 522 | return reg_value; |
525 | } | 523 | } |
526 | 524 | ||
525 | static struct scsi_host_template ahci_platform_sht = { | ||
526 | AHCI_SHT(DRV_NAME), | ||
527 | }; | ||
528 | |||
527 | static int imx_ahci_probe(struct platform_device *pdev) | 529 | static int imx_ahci_probe(struct platform_device *pdev) |
528 | { | 530 | { |
529 | struct device *dev = &pdev->dev; | 531 | struct device *dev = &pdev->dev; |
@@ -620,7 +622,8 @@ static int imx_ahci_probe(struct platform_device *pdev) | |||
620 | reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000; | 622 | reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000; |
621 | writel(reg_val, hpriv->mmio + IMX_TIMER1MS); | 623 | writel(reg_val, hpriv->mmio + IMX_TIMER1MS); |
622 | 624 | ||
623 | ret = ahci_platform_init_host(pdev, hpriv, &ahci_imx_port_info); | 625 | ret = ahci_platform_init_host(pdev, hpriv, &ahci_imx_port_info, |
626 | &ahci_platform_sht); | ||
624 | if (ret) | 627 | if (ret) |
625 | goto disable_sata; | 628 | goto disable_sata; |
626 | 629 | ||
@@ -678,7 +681,7 @@ static struct platform_driver imx_ahci_driver = { | |||
678 | .probe = imx_ahci_probe, | 681 | .probe = imx_ahci_probe, |
679 | .remove = ata_platform_remove_one, | 682 | .remove = ata_platform_remove_one, |
680 | .driver = { | 683 | .driver = { |
681 | .name = "ahci-imx", | 684 | .name = DRV_NAME, |
682 | .of_match_table = imx_ahci_of_match, | 685 | .of_match_table = imx_ahci_of_match, |
683 | .pm = &ahci_imx_pm_ops, | 686 | .pm = &ahci_imx_pm_ops, |
684 | }, | 687 | }, |