devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vinod Polimera <quic_vpolimer@quicinc.com>
To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, devicetree@vger.kernel.org
Cc: Vinod Polimera <quic_vpolimer@quicinc.com>,
	linux-kernel@vger.kernel.org, robdclark@gmail.com,
	dianders@chromium.org, swboyd@chromium.org,
	quic_kalyant@quicinc.com, dmitry.baryshkov@linaro.org,
	quic_khsieh@quicinc.com, quic_vproddut@quicinc.com,
	quic_bjorande@quicinc.com, quic_aravindh@quicinc.com,
	quic_abhinavk@quicinc.com, quic_sbillaka@quicinc.com
Subject: [PATCH v8 12/15] drm/msm/disp/dpu: get timing engine status from intf status register
Date: Wed, 12 Oct 2022 17:32:36 +0530	[thread overview]
Message-ID: <1665576159-3749-13-git-send-email-quic_vpolimer@quicinc.com> (raw)
In-Reply-To: <1665576159-3749-1-git-send-email-quic_vpolimer@quicinc.com>

Timing gen status can be read reliablly from intf status
register rather than from the timing gen control register,
which will readback as "0" after disable though the timing
gen is still under going disable path. This support was
added from DPU version 5.0.0.

Signed-off-by: Vinod Polimera <quic_vpolimer@quicinc.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c |  3 ++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 12 +++++++-----
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c    |  8 +++++++-
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
index 27f029f..0332cea 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
@@ -77,7 +77,8 @@
 
 #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE)
 
-#define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN)
+#define INTF_SC7280_MASK \
+	(INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) | BIT(DPU_INTF_STATUS_SUPPORTED))
 
 #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
 			 BIT(MDP_SSPP_TOP0_INTR2) | \
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
index 38aa38a..21ae3cf 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
@@ -203,17 +203,19 @@ enum {
 
 /**
  * INTF sub-blocks
- * @DPU_INTF_INPUT_CTRL         Supports the setting of pp block from which
- *                              pixel data arrives to this INTF
- * @DPU_INTF_TE                 INTF block has TE configuration support
- * @DPU_DATA_HCTL_EN            Allows data to be transferred at different rate
-                                than video timing
+ * @DPU_INTF_INPUT_CTRL             Supports the setting of pp block from which
+ *                                  pixel data arrives to this INTF
+ * @DPU_INTF_TE                     INTF block has TE configuration support
+ * @DPU_DATA_HCTL_EN                Allows data to be transferred at different rate
+				    than video timing
+ * @DPU_INTF_STATUS_SUPPORTED       INTF block has INTF_STATUS register
  * @DPU_INTF_MAX
  */
 enum {
 	DPU_INTF_INPUT_CTRL = 0x1,
 	DPU_INTF_TE,
 	DPU_DATA_HCTL_EN,
+	DPU_INTF_STATUS_SUPPORTED,
 	DPU_INTF_MAX
 };
 
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
index 7ce66bf..2394473 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
@@ -62,6 +62,7 @@
 #define   INTF_LINE_COUNT               0x0B0
 
 #define   INTF_MUX                      0x25C
+#define   INTF_STATUS                   0x26C
 
 #define INTF_CFG_ACTIVE_H_EN	BIT(29)
 #define INTF_CFG_ACTIVE_V_EN	BIT(30)
@@ -297,8 +298,13 @@ static void dpu_hw_intf_get_status(
 		struct intf_status *s)
 {
 	struct dpu_hw_blk_reg_map *c = &intf->hw;
+	unsigned long cap = intf->cap->features;
+
+	if (cap & BIT(DPU_INTF_STATUS_SUPPORTED))
+		s->is_en = BIT(0) & DPU_REG_READ(c, INTF_STATUS);
+	else
+		s->is_en = DPU_REG_READ(c, INTF_TIMING_ENGINE_EN);
 
-	s->is_en = DPU_REG_READ(c, INTF_TIMING_ENGINE_EN);
 	s->is_prog_fetch_en = !!(DPU_REG_READ(c, INTF_CONFIG) & BIT(31));
 	if (s->is_en) {
 		s->frame_count = DPU_REG_READ(c, INTF_FRAME_COUNT);
-- 
2.7.4


  parent reply	other threads:[~2022-10-12 12:03 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-12 12:02 [PATCH v8 00/15] Add PSR support for eDP Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 01/15] drm/msm/disp/dpu: clear dpu_assign_crtc and get crtc from connector state instead of dpu_enc Vinod Polimera
2022-10-24 15:22   ` Dmitry Baryshkov
2022-10-27 13:34     ` Vinod Polimera
2022-10-27 17:40       ` Dmitry Baryshkov
2022-11-01 11:16         ` Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 02/15] drm: add helper functions to retrieve old and new crtc Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 03/15] drm/msm/dp: use atomic callbacks for DP bridge ops Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 04/15] drm/msm/dp: Add basic PSR support for eDP Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 05/15] drm/msm/dp: use the eDP bridge ops to validate eDP modes Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 06/15] drm/msm/dp: disable self_refresh_aware after entering psr Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 07/15] drm/bridge: use atomic enable/disable callbacks for panel bridge Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 08/15] drm/bridge: add psr support for panel bridge callbacks Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 09/15] drm/msm/disp/dpu: use atomic enable/disable callbacks for encoder functions Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 10/15] drm/msm/disp/dpu: check for crtc enable rather than crtc active to release shared resources Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 11/15] drm/msm/disp/dpu: add PSR support for eDP interface in dpu driver Vinod Polimera
2022-10-12 12:02 ` Vinod Polimera [this message]
2022-11-01 12:15   ` [PATCH v8 12/15] drm/msm/disp/dpu: get timing engine status from intf status register Marijn Suijten
2022-10-12 12:02 ` [PATCH v8 13/15] drm/msm/disp/dpu: wait for extra vsync till timing engine status is disabled Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 14/15] drm/msm/disp/dpu: reset the datapath after timing engine disable Vinod Polimera
2022-10-12 12:02 ` [PATCH v8 15/15] drm/msm/disp/dpu: clear active interface in the datapath cleanup Vinod Polimera

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1665576159-3749-13-git-send-email-quic_vpolimer@quicinc.com \
    --to=quic_vpolimer@quicinc.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_aravindh@quicinc.com \
    --cc=quic_bjorande@quicinc.com \
    --cc=quic_kalyant@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=quic_sbillaka@quicinc.com \
    --cc=quic_vproddut@quicinc.com \
    --cc=robdclark@gmail.com \
    --cc=swboyd@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).