Re: [PATCH v2 2/7] phy: qcom: qmp-combo: store DP phy power state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 27/05/2024 10:59, Dmitry Baryshkov wrote:
On Mon, May 27, 2024 at 10:42:34AM +0200, Neil Armstrong wrote:
Switching the PHY Mode requires the DisplayPort PHY to be powered off,
keep track of the DisplayPort phy power state.

How is this different from dp_init_count?

dp_init_count tracks the DP PHY init, while dp_powered_on tracks
the DP PHY beeing powered on by the DRM DP driver, those are
not the same state at all.

While testing, I figured that de-initializing the DP PHY while
is was powered-on by the DRM DP, caused the system to freeze and crash.

SO I've added this to track this state and try to de-init the DP phy
if still in use.

Neil



Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
---
  drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
index 7f999e8a433d..183cd9cd1884 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
@@ -1512,6 +1512,7 @@ struct qmp_combo {
  	unsigned int dp_aux_cfg;
  	struct phy_configure_opts_dp dp_opts;
  	unsigned int dp_init_count;
+	bool dp_powered_on;
struct clk_fixed_rate pipe_clk_fixed;
  	struct clk_hw dp_link_hw;
@@ -2685,6 +2686,8 @@ static int qmp_combo_dp_power_on(struct phy *phy)
  	/* Configure link rate, swing, etc. */
  	cfg->configure_dp_phy(qmp);
+ qmp->dp_powered_on = true;
+
  	mutex_unlock(&qmp->phy_mutex);
return 0;
@@ -2699,6 +2702,8 @@ static int qmp_combo_dp_power_off(struct phy *phy)
  	/* Assert DP PHY power down */
  	writel(DP_PHY_PD_CTL_PSR_PWRDN, qmp->dp_dp_phy + QSERDES_DP_PHY_PD_CTL);
+ qmp->dp_powered_on = false;
+
  	mutex_unlock(&qmp->phy_mutex);
return 0;

--
2.34.1







[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux