All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anusha Srivatsa <anusha.srivatsa@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Subject: [Intel-gfx] [RFC 2/2] drm/i915/dmc: Modify stepping/substepping table
Date: Tue, 29 Jun 2021 16:20:49 -0700	[thread overview]
Message-ID: <20210629232049.7584-2-anusha.srivatsa@intel.com> (raw)
In-Reply-To: <20210629232049.7584-1-anusha.srivatsa@intel.com>

Grab the stepping info from RUNTIME_INFO(dev_priv)->step
on the dmc side to grab the right blob.
Adding the helper intel_get_soc_info() that has SOC stepping
lookup table.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc.c | 113 ++++++++++++++++++++++-
 1 file changed, 109 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index f8789d4543bf..1b2e01adac48 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -266,14 +266,119 @@ static const struct stepping_info icl_stepping_info[] = {
 };
 
 static const struct stepping_info no_stepping_info = { '*', '*' };
+struct stepping_info *soc;
+
+static struct stepping_info *
+intel_get_soc_stepping(struct intel_step_info step)
+{
+
+	switch (step.soc_step) {
+		case STEP_A0:
+			soc->stepping = 'A';
+			soc->substepping = '0';
+			break;
+		case STEP_A2:
+			soc->stepping = 'A';
+			soc->substepping = '2';
+			break;
+		case STEP_B0:
+			soc->stepping = 'B';
+			soc->substepping = '0';
+			break;
+		case STEP_B1:
+			soc->stepping = 'B';
+			soc->substepping = '1';
+			break;
+		case STEP_B2:
+			soc->stepping = 'B';
+			soc->substepping = '2';
+			break;
+		case STEP_B10:
+			soc->stepping = 'B';
+			soc->substepping = 'A';
+			break;
+		case STEP_C0:
+			soc->stepping = 'C';
+			soc->substepping = '0';
+			break;
+		case STEP_D0:
+			soc->stepping = 'D';
+			soc->substepping = '0';
+			break;
+		case STEP_D1:
+			soc->stepping = 'D';
+			soc->substepping = '1';
+			break;
+		case STEP_E0:
+			soc->stepping = 'E';
+			soc->substepping = '0';
+			break;
+		case STEP_F0:
+			soc->stepping = 'F';
+			soc->substepping = '0';
+			break;
+		case STEP_G0:
+			soc->stepping = 'G';
+			soc->substepping = '0';
+			break;
+		case STEP_H0:
+			soc->stepping = 'H';
+			soc->substepping = '0';
+			break;
+		case STEP_H5:
+			soc->stepping = 'H';
+			soc->substepping = '5';
+			break;
+		case STEP_J0:
+			soc->stepping = 'J';
+			soc->substepping = '0';
+			break;
+		case STEP_J1:
+			soc->stepping = 'J';
+			soc->substepping = '1';
+			break;
+		case STEP_K0:
+			soc->stepping = 'K';
+			soc->substepping = '0';
+			break;
+		case STEP_P0:
+			soc->stepping = 'L';
+			soc->substepping = '0';
+			break;
+		case STEP_L0:
+			soc->stepping = 'P';
+			soc->substepping = '0';
+			break;
+		case STEP_Q0:
+			soc->stepping = 'Q';
+			soc->substepping = '0';
+			break;
+		case STEP_R0:
+			soc->stepping = 'R';
+			soc->substepping = '0';
+			break;
+		case STEP_Y0:
+			soc->stepping = 'Y';
+			soc->substepping = '0';
+			break;
+		default:
+			soc->stepping = '*';
+			soc->substepping = '*';
+			break;
+	}
+	return soc;
+}
 
 static const struct stepping_info *
 intel_get_stepping_info(struct drm_i915_private *dev_priv)
 {
 	const struct stepping_info *si;
+	struct intel_step_info step = RUNTIME_INFO(dev_priv)->step;
 	unsigned int size;
 
-	if (IS_ICELAKE(dev_priv)) {
+	if (DISPLAY_VER(dev_priv) >= 12) {
+		si = intel_get_soc_stepping(step);
+	} else if (IS_ICELAKE(dev_priv)) {
 		size = ARRAY_SIZE(icl_stepping_info);
 		si = icl_stepping_info;
 	} else if (IS_SKYLAKE(dev_priv)) {
@@ -287,10 +392,10 @@ intel_get_stepping_info(struct drm_i915_private *dev_priv)
 		si = NULL;
 	}
 
-	if (INTEL_REVID(dev_priv) < size)
-		return si + INTEL_REVID(dev_priv);
+	if (DISPLAY_VER(dev_priv) < 12)
+		return INTEL_REVID(dev_priv) < size ? si + INTEL_REVID(dev_priv) : &no_stepping_info;
 
-	return &no_stepping_info;
+	return si;
 }
 
 static void gen9_set_dc_state_debugmask(struct drm_i915_private *dev_priv)
-- 
2.32.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2021-06-29 23:21 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-29 23:20 [Intel-gfx] [RFC 1/2] drm/i915/dmc: Add soc stepping to intel_step Anusha Srivatsa
2021-06-29 23:20 ` Anusha Srivatsa [this message]
2021-06-29 23:50 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [RFC,1/2] " Patchwork
2021-06-29 23:52 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-06-30  0:21 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-06-30  3:18 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

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=20210629232049.7584-2-anusha.srivatsa@intel.com \
    --to=anusha.srivatsa@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.