[Intel-gfx] [PATCH] drm/i915/display: Add DC5 counter and DMC debugfs entries for MTL

Lucas De Marchi lucas.demarchi at intel.com
Fri Oct 7 21:08:06 UTC 2022


On Fri, Oct 07, 2022 at 12:42:03PM -0700, Anusha Srivatsa wrote:
>MTL and dgfx use the same DC5 counter.
>
>While at it, this patch also adds the corresponding
>debugfs entries. Some cleanup wrt dc3co register
>which makes the code more readable.
>
>Driver loads all firmware that it finds in the firmware
>binary but platform doesn't *need* all of them. Cleaning the
>previous debugs entries to reflect which firmware is needed
>and if the needed firmware is loaded or not.
>
>MTL needs both Pipe A and Pipe B DMC to be loaded
>along with Main DMC.
>
>BSpec: 49788
>Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>Cc: Radhakrishna Sripada <radhakrishna.sripada at intel.com>
>Signed-off-by: Anusha Srivatsa <anusha.srivatsa at intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

thanks
Lucas De Marchi

>---
> drivers/gpu/drm/i915/display/intel_dmc.c | 22 ++++++++++------------
> 1 file changed, 10 insertions(+), 12 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
>index e52ecc0738a6..081a4d0083b1 100644
>--- a/drivers/gpu/drm/i915/display/intel_dmc.c
>+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
>@@ -1065,12 +1065,13 @@ static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
> 	seq_printf(m, "fw loaded: %s\n",
> 		   str_yes_no(intel_dmc_has_payload(i915)));
> 	seq_printf(m, "path: %s\n", dmc->fw_path);
>-	seq_printf(m, "Pipe A fw support: %s\n",
>+	seq_printf(m, "Pipe A fw needed: %s\n",
> 		   str_yes_no(GRAPHICS_VER(i915) >= 12));
> 	seq_printf(m, "Pipe A fw loaded: %s\n",
> 		   str_yes_no(dmc->dmc_info[DMC_FW_PIPEA].payload));
>-	seq_printf(m, "Pipe B fw support: %s\n",
>-		   str_yes_no(IS_ALDERLAKE_P(i915)));
>+	seq_printf(m, "Pipe B fw needed: %s\n",
>+		   str_yes_no(IS_ALDERLAKE_P(i915) ||
>+			      DISPLAY_VER(i915) >= 14));
> 	seq_printf(m, "Pipe B fw loaded: %s\n",
> 		   str_yes_no(dmc->dmc_info[DMC_FW_PIPEB].payload));
>
>@@ -1081,22 +1082,19 @@ static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
> 		   DMC_VERSION_MINOR(dmc->version));
>
> 	if (DISPLAY_VER(i915) >= 12) {
>-		if (IS_DGFX(i915)) {
>+		i915_reg_t dc3co_reg;
>+
>+		if (IS_DGFX(i915) || DISPLAY_VER(i915) >= 14) {
>+			dc3co_reg = DG1_DMC_DEBUG3;
> 			dc5_reg = DG1_DMC_DEBUG_DC5_COUNT;
> 		} else {
>+			dc3co_reg = TGL_DMC_DEBUG3;
> 			dc5_reg = TGL_DMC_DEBUG_DC5_COUNT;
> 			dc6_reg = TGL_DMC_DEBUG_DC6_COUNT;
> 		}
>
>-		/*
>-		 * NOTE: DMC_DEBUG3 is a general purpose reg.
>-		 * According to B.Specs:49196 DMC f/w reuses DC5/6 counter
>-		 * reg for DC3CO debugging and validation,
>-		 * but TGL DMC f/w is using DMC_DEBUG3 reg for DC3CO counter.
>-		 */
> 		seq_printf(m, "DC3CO count: %d\n",
>-			   intel_de_read(i915, IS_DGFX(i915) ?
>-					 DG1_DMC_DEBUG3 : TGL_DMC_DEBUG3));
>+			   intel_de_read(i915, dc3co_reg));
> 	} else {
> 		dc5_reg = IS_BROXTON(i915) ? BXT_DMC_DC3_DC5_COUNT :
> 			SKL_DMC_DC3_DC5_COUNT;
>-- 
>2.25.1
>


More information about the Intel-gfx mailing list