summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-05-01 23:56:49 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-05-01 23:56:48 -0700
commite575b75923f07b207b4ba7582cec8c8483c7fe5e (patch)
tree69e9a07aa8f3a6b35dd1ca6e67a8a6eb5ba41078
parent1886bd0e4babaf4161ec549a7ceb44202c5ab0b8 (diff)
parent4501fe2b46c34001185d90abffa5de7cb784580b (diff)
Merge "msm: pcie: switch GPIO to sleep state before asserting PERST"
-rw-r--r--arch/arm/boot/dts/qcom/msm8998-pinctrl.dtsi13
-rw-r--r--arch/arm/boot/dts/qcom/msm8998.dtsi5
-rw-r--r--drivers/pci/host/pci-msm.c4
3 files changed, 19 insertions, 3 deletions
diff --git a/arch/arm/boot/dts/qcom/msm8998-pinctrl.dtsi b/arch/arm/boot/dts/qcom/msm8998-pinctrl.dtsi
index 220bad31d7f8..cdf4bede6eb3 100644
--- a/arch/arm/boot/dts/qcom/msm8998-pinctrl.dtsi
+++ b/arch/arm/boot/dts/qcom/msm8998-pinctrl.dtsi
@@ -585,6 +585,19 @@
bias-pull-down;
};
};
+
+ pcie0_wake_sleep: pcie0_wake_sleep {
+ mux {
+ pins = "gpio37";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio37";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
};
hph_en0_ctrl {
diff --git a/arch/arm/boot/dts/qcom/msm8998.dtsi b/arch/arm/boot/dts/qcom/msm8998.dtsi
index 9b5092cf7f14..c25f3ebcb113 100644
--- a/arch/arm/boot/dts/qcom/msm8998.dtsi
+++ b/arch/arm/boot/dts/qcom/msm8998.dtsi
@@ -2662,10 +2662,13 @@
0x800 0x00 0x00
0x808 0x03 0x00>;
- pinctrl-names = "default";
+ pinctrl-names = "default", "sleep";
pinctrl-0 = <&pcie0_clkreq_default
&pcie0_perst_default
&pcie0_wake_default>;
+ pinctrl-1 = <&pcie0_clkreq_default
+ &pcie0_perst_default
+ &pcie0_wake_sleep>;
perst-gpio = <&tlmm 35 0>;
wake-gpio = <&tlmm 37 0>;
diff --git a/drivers/pci/host/pci-msm.c b/drivers/pci/host/pci-msm.c
index f364882943e1..243afbe44df3 100644
--- a/drivers/pci/host/pci-msm.c
+++ b/drivers/pci/host/pci-msm.c
@@ -6754,12 +6754,12 @@ static int msm_pcie_pm_suspend(struct pci_dev *dev,
PCIE_DBG(pcie_dev, "RC%d: PM_Enter_L23 is NOT received\n",
pcie_dev->rc_idx);
- msm_pcie_disable(pcie_dev, PM_PIPE_CLK | PM_CLK | PM_VREG);
-
if (pcie_dev->use_pinctrl && pcie_dev->pins_sleep)
pinctrl_select_state(pcie_dev->pinctrl,
pcie_dev->pins_sleep);
+ msm_pcie_disable(pcie_dev, PM_PIPE_CLK | PM_CLK | PM_VREG);
+
PCIE_DBG(pcie_dev, "RC%d: exit\n", pcie_dev->rc_idx);
return ret;