drm/i915: Track media IP stepping separated from GT
Graphics and media IPs can have different stepping so a new field is needed in intel_step_info. The next patch will take care of rename gt_step to graphics_step. Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com> Cc: Matt Atwood <matthew.s.atwood@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211020002353.193893-2-jose.souza@intel.com
This commit is contained in:
parent
a5b7ef27da
commit
e181fa1ddf
@ -1347,6 +1347,7 @@ static inline struct drm_i915_private *pdev_to_i915(struct pci_dev *pdev)
|
||||
|
||||
#define INTEL_DISPLAY_STEP(__i915) (RUNTIME_INFO(__i915)->step.display_step)
|
||||
#define INTEL_GT_STEP(__i915) (RUNTIME_INFO(__i915)->step.gt_step)
|
||||
#define INTEL_MEDIA_STEP(__i915) (RUNTIME_INFO(__i915)->step.media_step)
|
||||
|
||||
#define IS_DISPLAY_STEP(__i915, since, until) \
|
||||
(drm_WARN_ON(&(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
|
||||
@ -1356,6 +1357,10 @@ static inline struct drm_i915_private *pdev_to_i915(struct pci_dev *pdev)
|
||||
(drm_WARN_ON(&(__i915)->drm, INTEL_GT_STEP(__i915) == STEP_NONE), \
|
||||
INTEL_GT_STEP(__i915) >= (since) && INTEL_GT_STEP(__i915) < (until))
|
||||
|
||||
#define IS_MEDIA_STEP(__i915, since, until) \
|
||||
(drm_WARN_ON(&(__i915)->drm, INTEL_MEDIA_STEP(__i915) == STEP_NONE), \
|
||||
INTEL_MEDIA_STEP(__i915) >= (since) && INTEL_MEDIA_STEP(__i915) < (until))
|
||||
|
||||
static __always_inline unsigned int
|
||||
__platform_mask_index(const struct intel_runtime_info *info,
|
||||
enum intel_platform p)
|
||||
|
@ -23,7 +23,8 @@
|
||||
* use a macro to define these to make it easier to identify the platforms
|
||||
* where the two steppings can deviate.
|
||||
*/
|
||||
#define COMMON_STEP(x) .gt_step = STEP_##x, .display_step = STEP_##x
|
||||
#define COMMON_STEP(x) .gt_step = STEP_##x, .display_step = STEP_##x, .media_step = STEP_##x
|
||||
#define COMMON_GT_MEDIA_STEP(x) .gt_step = STEP_##x, .media_step = STEP_##x
|
||||
|
||||
static const struct intel_step_info skl_revids[] = {
|
||||
[0x6] = { COMMON_STEP(G0) },
|
||||
@ -33,13 +34,13 @@ static const struct intel_step_info skl_revids[] = {
|
||||
};
|
||||
|
||||
static const struct intel_step_info kbl_revids[] = {
|
||||
[1] = { .gt_step = STEP_B0, .display_step = STEP_B0 },
|
||||
[2] = { .gt_step = STEP_C0, .display_step = STEP_B0 },
|
||||
[3] = { .gt_step = STEP_D0, .display_step = STEP_B0 },
|
||||
[4] = { .gt_step = STEP_F0, .display_step = STEP_C0 },
|
||||
[5] = { .gt_step = STEP_C0, .display_step = STEP_B1 },
|
||||
[6] = { .gt_step = STEP_D1, .display_step = STEP_B1 },
|
||||
[7] = { .gt_step = STEP_G0, .display_step = STEP_C0 },
|
||||
[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
|
||||
[2] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
|
||||
[3] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_B0 },
|
||||
[4] = { COMMON_GT_MEDIA_STEP(F0), .display_step = STEP_C0 },
|
||||
[5] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B1 },
|
||||
[6] = { COMMON_GT_MEDIA_STEP(D1), .display_step = STEP_B1 },
|
||||
[7] = { COMMON_GT_MEDIA_STEP(G0), .display_step = STEP_C0 },
|
||||
};
|
||||
|
||||
static const struct intel_step_info bxt_revids[] = {
|
||||
@ -63,16 +64,16 @@ static const struct intel_step_info jsl_ehl_revids[] = {
|
||||
};
|
||||
|
||||
static const struct intel_step_info tgl_uy_revids[] = {
|
||||
[0] = { .gt_step = STEP_A0, .display_step = STEP_A0 },
|
||||
[1] = { .gt_step = STEP_B0, .display_step = STEP_C0 },
|
||||
[2] = { .gt_step = STEP_B1, .display_step = STEP_C0 },
|
||||
[3] = { .gt_step = STEP_C0, .display_step = STEP_D0 },
|
||||
[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
|
||||
[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
|
||||
[2] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
|
||||
[3] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
|
||||
};
|
||||
|
||||
/* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
|
||||
static const struct intel_step_info tgl_revids[] = {
|
||||
[0] = { .gt_step = STEP_A0, .display_step = STEP_B0 },
|
||||
[1] = { .gt_step = STEP_B0, .display_step = STEP_D0 },
|
||||
[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
|
||||
[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_D0 },
|
||||
};
|
||||
|
||||
static const struct intel_step_info rkl_revids[] = {
|
||||
@ -87,38 +88,38 @@ static const struct intel_step_info dg1_revids[] = {
|
||||
};
|
||||
|
||||
static const struct intel_step_info adls_revids[] = {
|
||||
[0x0] = { .gt_step = STEP_A0, .display_step = STEP_A0 },
|
||||
[0x1] = { .gt_step = STEP_A0, .display_step = STEP_A2 },
|
||||
[0x4] = { .gt_step = STEP_B0, .display_step = STEP_B0 },
|
||||
[0x8] = { .gt_step = STEP_C0, .display_step = STEP_B0 },
|
||||
[0xC] = { .gt_step = STEP_D0, .display_step = STEP_C0 },
|
||||
[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
|
||||
[0x1] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A2 },
|
||||
[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
|
||||
[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
|
||||
[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
|
||||
};
|
||||
|
||||
static const struct intel_step_info adlp_revids[] = {
|
||||
[0x0] = { .gt_step = STEP_A0, .display_step = STEP_A0 },
|
||||
[0x4] = { .gt_step = STEP_B0, .display_step = STEP_B0 },
|
||||
[0x8] = { .gt_step = STEP_C0, .display_step = STEP_C0 },
|
||||
[0xC] = { .gt_step = STEP_C0, .display_step = STEP_D0 },
|
||||
[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
|
||||
[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
|
||||
[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
|
||||
[0xC] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
|
||||
};
|
||||
|
||||
static const struct intel_step_info xehpsdv_revids[] = {
|
||||
[0x0] = { .gt_step = STEP_A0 },
|
||||
[0x1] = { .gt_step = STEP_A1 },
|
||||
[0x4] = { .gt_step = STEP_B0 },
|
||||
[0x8] = { .gt_step = STEP_C0 },
|
||||
[0x0] = { COMMON_GT_MEDIA_STEP(A0) },
|
||||
[0x1] = { COMMON_GT_MEDIA_STEP(A1) },
|
||||
[0x4] = { COMMON_GT_MEDIA_STEP(B0) },
|
||||
[0x8] = { COMMON_GT_MEDIA_STEP(C0) },
|
||||
};
|
||||
|
||||
static const struct intel_step_info dg2_g10_revid_step_tbl[] = {
|
||||
[0x0] = { .gt_step = STEP_A0, .display_step = STEP_A0 },
|
||||
[0x1] = { .gt_step = STEP_A1, .display_step = STEP_A0 },
|
||||
[0x4] = { .gt_step = STEP_B0, .display_step = STEP_B0 },
|
||||
[0x8] = { .gt_step = STEP_C0, .display_step = STEP_C0 },
|
||||
[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
|
||||
[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_A0 },
|
||||
[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
|
||||
[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
|
||||
};
|
||||
|
||||
static const struct intel_step_info dg2_g11_revid_step_tbl[] = {
|
||||
[0x0] = { .gt_step = STEP_A0, .display_step = STEP_B0 },
|
||||
[0x4] = { .gt_step = STEP_B0, .display_step = STEP_C0 },
|
||||
[0x5] = { .gt_step = STEP_B1, .display_step = STEP_C0 },
|
||||
[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
|
||||
[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
|
||||
[0x5] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
|
||||
};
|
||||
|
||||
void intel_step_init(struct drm_i915_private *i915)
|
||||
|
@ -13,6 +13,7 @@ struct drm_i915_private;
|
||||
struct intel_step_info {
|
||||
u8 gt_step;
|
||||
u8 display_step;
|
||||
u8 media_step;
|
||||
};
|
||||
|
||||
#define STEP_ENUM_VAL(name) STEP_##name,
|
||||
|
Loading…
Reference in New Issue
Block a user