diff options
| -rw-r--r-- | drivers/pci/controller/dwc/pci-imx6.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 30e764b6cbcc..3e45f49b8a4f 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c | |||
| @@ -52,6 +52,7 @@ enum imx6_pcie_variants { | |||
| 52 | 52 | ||
| 53 | #define IMX6_PCIE_FLAG_IMX6_PHY BIT(0) | 53 | #define IMX6_PCIE_FLAG_IMX6_PHY BIT(0) |
| 54 | #define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE BIT(1) | 54 | #define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE BIT(1) |
| 55 | #define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2) | ||
| 55 | 56 | ||
| 56 | struct imx6_pcie_drvdata { | 57 | struct imx6_pcie_drvdata { |
| 57 | enum imx6_pcie_variants variant; | 58 | enum imx6_pcie_variants variant; |
| @@ -965,17 +966,11 @@ static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie) | |||
| 965 | } | 966 | } |
| 966 | } | 967 | } |
| 967 | 968 | ||
| 968 | static inline bool imx6_pcie_supports_suspend(struct imx6_pcie *imx6_pcie) | ||
| 969 | { | ||
| 970 | return (imx6_pcie->drvdata->variant == IMX7D || | ||
| 971 | imx6_pcie->drvdata->variant == IMX6SX); | ||
| 972 | } | ||
| 973 | |||
| 974 | static int imx6_pcie_suspend_noirq(struct device *dev) | 969 | static int imx6_pcie_suspend_noirq(struct device *dev) |
| 975 | { | 970 | { |
| 976 | struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); | 971 | struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); |
| 977 | 972 | ||
| 978 | if (!imx6_pcie_supports_suspend(imx6_pcie)) | 973 | if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_SUPPORTS_SUSPEND)) |
| 979 | return 0; | 974 | return 0; |
| 980 | 975 | ||
| 981 | imx6_pcie_pm_turnoff(imx6_pcie); | 976 | imx6_pcie_pm_turnoff(imx6_pcie); |
| @@ -991,7 +986,7 @@ static int imx6_pcie_resume_noirq(struct device *dev) | |||
| 991 | struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); | 986 | struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); |
| 992 | struct pcie_port *pp = &imx6_pcie->pci->pp; | 987 | struct pcie_port *pp = &imx6_pcie->pci->pp; |
| 993 | 988 | ||
| 994 | if (!imx6_pcie_supports_suspend(imx6_pcie)) | 989 | if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_SUPPORTS_SUSPEND)) |
| 995 | return 0; | 990 | return 0; |
| 996 | 991 | ||
| 997 | imx6_pcie_assert_core_reset(imx6_pcie); | 992 | imx6_pcie_assert_core_reset(imx6_pcie); |
| @@ -1221,7 +1216,8 @@ static const struct imx6_pcie_drvdata drvdata[] = { | |||
| 1221 | [IMX6SX] = { | 1216 | [IMX6SX] = { |
| 1222 | .variant = IMX6SX, | 1217 | .variant = IMX6SX, |
| 1223 | .flags = IMX6_PCIE_FLAG_IMX6_PHY | | 1218 | .flags = IMX6_PCIE_FLAG_IMX6_PHY | |
| 1224 | IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE, | 1219 | IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE | |
| 1220 | IMX6_PCIE_FLAG_SUPPORTS_SUSPEND, | ||
| 1225 | }, | 1221 | }, |
| 1226 | [IMX6QP] = { | 1222 | [IMX6QP] = { |
| 1227 | .variant = IMX6QP, | 1223 | .variant = IMX6QP, |
| @@ -1230,6 +1226,7 @@ static const struct imx6_pcie_drvdata drvdata[] = { | |||
| 1230 | }, | 1226 | }, |
| 1231 | [IMX7D] = { | 1227 | [IMX7D] = { |
| 1232 | .variant = IMX7D, | 1228 | .variant = IMX7D, |
| 1229 | .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND, | ||
| 1233 | }, | 1230 | }, |
| 1234 | [IMX8MQ] = { | 1231 | [IMX8MQ] = { |
| 1235 | .variant = IMX8MQ, | 1232 | .variant = IMX8MQ, |
