Commit e631a440 authored by Anusha Srivatsa's avatar Anusha Srivatsa

drm/i915/step: Add macro magic for handling steps

With the addition of stepping info for
all platforms, lets use macros for handling them
and autogenerating code for all steps at a time.
Suggested-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: default avatarAnusha Srivatsa <anusha.srivatsa@intel.com>
Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210721215238.24980-1-anusha.srivatsa@intel.com
parent 34ba3c8a
...@@ -210,3 +210,17 @@ void intel_step_init(struct drm_i915_private *i915) ...@@ -210,3 +210,17 @@ void intel_step_init(struct drm_i915_private *i915)
RUNTIME_INFO(i915)->step = step; RUNTIME_INFO(i915)->step = step;
} }
#define STEP_NAME_CASE(name) \
case STEP_##name: \
return #name;
const char *intel_step_name(enum intel_step step)
{
switch (step) {
STEP_NAME_LIST(STEP_NAME_CASE);
default:
return "**";
}
}
...@@ -15,31 +15,39 @@ struct intel_step_info { ...@@ -15,31 +15,39 @@ struct intel_step_info {
u8 display_step; u8 display_step;
}; };
#define STEP_ENUM_VAL(name) STEP_##name,
#define STEP_NAME_LIST(func) \
func(A0) \
func(A1) \
func(A2) \
func(B0) \
func(B1) \
func(B2) \
func(C0) \
func(C1) \
func(D0) \
func(D1) \
func(E0) \
func(F0) \
func(G0) \
func(H0) \
func(I0) \
func(I1) \
func(J0)
/* /*
* 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
* and display steppings as symbolic names. * and display steppings as symbolic names.
*/ */
enum intel_step { enum intel_step {
STEP_NONE = 0, STEP_NONE = 0,
STEP_A0, STEP_NAME_LIST(STEP_ENUM_VAL)
STEP_A1,
STEP_A2,
STEP_B0,
STEP_B1,
STEP_C0,
STEP_D0,
STEP_D1,
STEP_E0,
STEP_F0,
STEP_G0,
STEP_H0,
STEP_I0,
STEP_I1,
STEP_J0,
STEP_FUTURE, STEP_FUTURE,
STEP_FOREVER, STEP_FOREVER,
}; };
void intel_step_init(struct drm_i915_private *i915); void intel_step_init(struct drm_i915_private *i915);
const char *intel_step_name(enum intel_step step);
#endif /* __INTEL_STEP_H__ */ #endif /* __INTEL_STEP_H__ */
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