Merge tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[firefly-linux-kernel-4.4.55.git] / drivers / ata / sata_mv.c
index 35c6b6d09c277526d93461388b6971069c644341..56be318198971f40ea9a57703530260ad51e4067 100644 (file)
@@ -553,10 +553,15 @@ struct mv_host_priv {
        u32                     irq_mask_offset;
        u32                     unmask_all_irqs;
 
-#if defined(CONFIG_HAVE_CLK)
+       /*
+        * Needed on some devices that require their clocks to be enabled.
+        * These are optional: if the platform device does not have any
+        * clocks, they won't be used.  Also, if the underlying hardware
+        * does not support the common clock framework (CONFIG_HAVE_CLK=n),
+        * all the clock operations become no-ops (see clk.h).
+        */
        struct clk              *clk;
        struct clk              **port_clks;
-#endif
        /*
         * These consistent DMA memory pools give us guaranteed
         * alignment for hardware-accessed data structures,
@@ -4032,9 +4037,7 @@ static int mv_platform_probe(struct platform_device *pdev)
        struct resource *res;
        int n_ports = 0, irq = 0;
        int rc;
-#if defined(CONFIG_HAVE_CLK)
        int port;
-#endif
 
        ata_print_version_once(&pdev->dev, DRV_VERSION);
 
@@ -4058,7 +4061,7 @@ static int mv_platform_probe(struct platform_device *pdev)
                of_property_read_u32(pdev->dev.of_node, "nr-ports", &n_ports);
                irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
        } else {
-               mv_platform_data = pdev->dev.platform_data;
+               mv_platform_data = dev_get_platdata(&pdev->dev);
                n_ports = mv_platform_data->n_ports;
                irq = platform_get_irq(pdev, 0);
        }
@@ -4068,13 +4071,11 @@ static int mv_platform_probe(struct platform_device *pdev)
 
        if (!host || !hpriv)
                return -ENOMEM;
-#if defined(CONFIG_HAVE_CLK)
        hpriv->port_clks = devm_kzalloc(&pdev->dev,
                                        sizeof(struct clk *) * n_ports,
                                        GFP_KERNEL);
        if (!hpriv->port_clks)
                return -ENOMEM;
-#endif
        host->private_data = hpriv;
        hpriv->n_ports = n_ports;
        hpriv->board_idx = chip_soc;
@@ -4084,7 +4085,6 @@ static int mv_platform_probe(struct platform_device *pdev)
                                   resource_size(res));
        hpriv->base -= SATAHC0_REG_BASE;
 
-#if defined(CONFIG_HAVE_CLK)
        hpriv->clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(hpriv->clk))
                dev_notice(&pdev->dev, "cannot get optional clkdev\n");
@@ -4098,7 +4098,6 @@ static int mv_platform_probe(struct platform_device *pdev)
                if (!IS_ERR(hpriv->port_clks[port]))
                        clk_prepare_enable(hpriv->port_clks[port]);
        }
-#endif
 
        /*
         * (Re-)program MBUS remapping windows if we are asked to.
@@ -4124,7 +4123,6 @@ static int mv_platform_probe(struct platform_device *pdev)
                return 0;
 
 err:
-#if defined(CONFIG_HAVE_CLK)
        if (!IS_ERR(hpriv->clk)) {
                clk_disable_unprepare(hpriv->clk);
                clk_put(hpriv->clk);
@@ -4135,7 +4133,6 @@ err:
                        clk_put(hpriv->port_clks[port]);
                }
        }
-#endif
 
        return rc;
 }
@@ -4151,13 +4148,10 @@ err:
 static int mv_platform_remove(struct platform_device *pdev)
 {
        struct ata_host *host = platform_get_drvdata(pdev);
-#if defined(CONFIG_HAVE_CLK)
        struct mv_host_priv *hpriv = host->private_data;
        int port;
-#endif
        ata_host_detach(host);
 
-#if defined(CONFIG_HAVE_CLK)
        if (!IS_ERR(hpriv->clk)) {
                clk_disable_unprepare(hpriv->clk);
                clk_put(hpriv->clk);
@@ -4168,7 +4162,6 @@ static int mv_platform_remove(struct platform_device *pdev)
                        clk_put(hpriv->port_clks[port]);
                }
        }
-#endif
        return 0;
 }
 
@@ -4428,9 +4421,6 @@ static int mv_pci_device_resume(struct pci_dev *pdev)
 #endif
 #endif
 
-static int mv_platform_probe(struct platform_device *pdev);
-static int mv_platform_remove(struct platform_device *pdev);
-
 static int __init mv_init(void)
 {
        int rc = -ENODEV;