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: Matt Roper <matthew.d.roper@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210721215238.24980-1-anusha.srivatsa@intel.com
This commit is contained in:
Anusha Srivatsa 2021-07-21 14:52:35 -07:00
parent 34ba3c8a7d
commit e631a440c0
2 changed files with 37 additions and 15 deletions

View file

@ -210,3 +210,17 @@ void intel_step_init(struct drm_i915_private *i915)
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 "**";
}
}

View file

@ -15,31 +15,39 @@ struct intel_step_info {
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
* and display steppings as symbolic names.
*/
enum intel_step {
STEP_NONE = 0,
STEP_A0,
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_NAME_LIST(STEP_ENUM_VAL)
STEP_FUTURE,
STEP_FOREVER,
};
void intel_step_init(struct drm_i915_private *i915);
const char *intel_step_name(enum intel_step step);
#endif /* __INTEL_STEP_H__ */