Commit 944ca7d8 authored by José Roberto de Souza's avatar José Roberto de Souza Committed by Radhakrishna Sripada

drm/i915: Parse and set stepping for platforms with GMD

Expand the current stepping convention to accommodate the GMD
stepping info. Typically GMD step maps to letter stepping
by "A + step %4" and number to "A + step /4" i.e, GMD step
0 maps to STEP_A0, 1 to _A1, 2 to _A2, 3 to _A3, 4 to STEP_B0...

Future platforms might break this formulae and may require a table
mapping to decode GMD step compatible with the convention.

v2:
 - Pass the updated ip version structure
v3:
 - Skip using GMD to step table(MattR)

Cc: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: default avatarRadhakrishna Sripada <radhakrishna.sripada@intel.com>
Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220916014648.1310346-3-radhakrishna.sripada@intel.com
parent c2c70752
...@@ -135,6 +135,19 @@ static const struct intel_step_info adlp_n_revids[] = { ...@@ -135,6 +135,19 @@ static const struct intel_step_info adlp_n_revids[] = {
[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_D0 }, [0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_D0 },
}; };
static u8 gmd_to_intel_step(struct drm_i915_private *i915,
struct ip_version *gmd)
{
u8 step = gmd->step + STEP_A0;
if (step >= STEP_FUTURE) {
drm_dbg(&i915->drm, "Using future steppings\n");
return STEP_FUTURE;
}
return step;
}
static void pvc_step_init(struct drm_i915_private *i915, int pci_revid); static void pvc_step_init(struct drm_i915_private *i915, int pci_revid);
void intel_step_init(struct drm_i915_private *i915) void intel_step_init(struct drm_i915_private *i915)
...@@ -144,6 +157,18 @@ void intel_step_init(struct drm_i915_private *i915) ...@@ -144,6 +157,18 @@ void intel_step_init(struct drm_i915_private *i915)
int revid = INTEL_REVID(i915); int revid = INTEL_REVID(i915);
struct intel_step_info step = {}; struct intel_step_info step = {};
if (HAS_GMD_ID(i915)) {
step.graphics_step = gmd_to_intel_step(i915,
&RUNTIME_INFO(i915)->graphics.ip);
step.media_step = gmd_to_intel_step(i915,
&RUNTIME_INFO(i915)->media.ip);
step.display_step = gmd_to_intel_step(i915,
&RUNTIME_INFO(i915)->display.ip);
RUNTIME_INFO(i915)->step = step;
return;
}
if (IS_PONTEVECCHIO(i915)) { if (IS_PONTEVECCHIO(i915)) {
pvc_step_init(i915, revid); pvc_step_init(i915, revid);
return; return;
......
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
struct drm_i915_private; struct drm_i915_private;
struct intel_step_info { struct intel_step_info {
/*
* It is expected to have 4 number steps per letter. Deviation from
* the expectation breaks gmd_to_intel_step().
*/
u8 graphics_step; /* Represents the compute tile on Xe_HPC */ u8 graphics_step; /* Represents the compute tile on Xe_HPC */
u8 display_step; u8 display_step;
u8 media_step; u8 media_step;
...@@ -23,21 +27,43 @@ struct intel_step_info { ...@@ -23,21 +27,43 @@ struct intel_step_info {
func(A0) \ func(A0) \
func(A1) \ func(A1) \
func(A2) \ func(A2) \
func(A3) \
func(B0) \ func(B0) \
func(B1) \ func(B1) \
func(B2) \ func(B2) \
func(B3) \ func(B3) \
func(C0) \ func(C0) \
func(C1) \ func(C1) \
func(C2) \
func(C3) \
func(D0) \ func(D0) \
func(D1) \ func(D1) \
func(D2) \
func(D3) \
func(E0) \ func(E0) \
func(E1) \
func(E2) \
func(E3) \
func(F0) \ func(F0) \
func(F1) \
func(F2) \
func(F3) \
func(G0) \ func(G0) \
func(G1) \
func(G2) \
func(G3) \
func(H0) \ func(H0) \
func(H1) \
func(H2) \
func(H3) \
func(I0) \ func(I0) \
func(I1) \ func(I1) \
func(J0) func(I2) \
func(I3) \
func(J0) \
func(J1) \
func(J2) \
func(J3)
/* /*
* Symbolic steppings that do not match the hardware. These are valid both as gt * Symbolic steppings that do not match the hardware. These are valid both as gt
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment