Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0e2e647 authored by Tony Truong's avatar Tony Truong
Browse files

msm: pcie: switch pipe clk mux source to XO before disabling GDSC



Having pipe clk mux source set to PCIe pipe clk can possibly
cause PCIe gdsc to be stuck while being disabled until the
source is switched to XO. Therefore switch the source to XO
before disabling PCIe gdsc.

Change-Id: I5292c1e3b7a006b3857ef82fa446392d324d616f
Signed-off-by: default avatarTony Truong <truong@codeaurora.org>
parent f9c0b494
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -3169,11 +3169,11 @@ static int msm_pcie_clk_init(struct msm_pcie_dev_t *dev)
				clk_disable_unprepare(hdl);
		}

		regulator_disable(dev->gdsc);

		/* switch pipe clock mux after gdsc is turned off */
		/* switch pipe clock mux to xo before turning off gdsc */
		if (dev->pipe_clk_mux && dev->ref_clk_src)
			clk_set_parent(dev->pipe_clk_mux, dev->ref_clk_src);

		regulator_disable(dev->gdsc);
	}

	for (i = 0; i < MSM_PCIE_MAX_RESET; i++) {
@@ -3246,12 +3246,12 @@ static void msm_pcie_clk_deinit(struct msm_pcie_dev_t *dev)
				dev->rc_idx);
	}

	regulator_disable(dev->gdsc);

	/* switch pipe clock mux after gdsc is turned off */
	/* switch pipe clock mux to xo before turning off gdsc */
	if (dev->pipe_clk_mux && dev->ref_clk_src)
		clk_set_parent(dev->pipe_clk_mux, dev->ref_clk_src);

	regulator_disable(dev->gdsc);

	PCIE_DBG(dev, "RC%d: exit\n", dev->rc_idx);
}