OSDN Git Service

PCI: imx6: Use flags to indicate support for suspend
authorAndrey Smirnov <andrew.smirnov@gmail.com>
Mon, 15 Apr 2019 00:46:31 +0000 (17:46 -0700)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Wed, 1 May 2019 10:35:47 +0000 (11:35 +0100)
Now that driver data has flags variable that can be used to indicate
quirks/features supported we can switch the code to use it instead of
having a special function that does so based on variant alone. No
functional change intended.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-pci@vger.kernel.org
drivers/pci/controller/dwc/pci-imx6.c

index 30e764b..3e45f49 100644 (file)
@@ -52,6 +52,7 @@ enum imx6_pcie_variants {
 
 #define IMX6_PCIE_FLAG_IMX6_PHY                        BIT(0)
 #define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE       BIT(1)
+#define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND                BIT(2)
 
 struct imx6_pcie_drvdata {
        enum imx6_pcie_variants variant;
@@ -965,17 +966,11 @@ static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie)
        }
 }
 
-static inline bool imx6_pcie_supports_suspend(struct imx6_pcie *imx6_pcie)
-{
-       return (imx6_pcie->drvdata->variant == IMX7D ||
-               imx6_pcie->drvdata->variant == IMX6SX);
-}
-
 static int imx6_pcie_suspend_noirq(struct device *dev)
 {
        struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev);
 
-       if (!imx6_pcie_supports_suspend(imx6_pcie))
+       if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_SUPPORTS_SUSPEND))
                return 0;
 
        imx6_pcie_pm_turnoff(imx6_pcie);
@@ -991,7 +986,7 @@ static int imx6_pcie_resume_noirq(struct device *dev)
        struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev);
        struct pcie_port *pp = &imx6_pcie->pci->pp;
 
-       if (!imx6_pcie_supports_suspend(imx6_pcie))
+       if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_SUPPORTS_SUSPEND))
                return 0;
 
        imx6_pcie_assert_core_reset(imx6_pcie);
@@ -1221,7 +1216,8 @@ static const struct imx6_pcie_drvdata drvdata[] = {
        [IMX6SX] = {
                .variant = IMX6SX,
                .flags = IMX6_PCIE_FLAG_IMX6_PHY |
-                        IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
+                        IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE |
+                        IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
        },
        [IMX6QP] = {
                .variant = IMX6QP,
@@ -1230,6 +1226,7 @@ static const struct imx6_pcie_drvdata drvdata[] = {
        },
        [IMX7D] = {
                .variant = IMX7D,
+               .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
        },
        [IMX8MQ] = {
                .variant = IMX8MQ,