Message ID | 20210715050507.31176-1-anusha.srivatsa@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] drm/i915/step: Add macro magic for handling steps | expand |
On Wed, Jul 14, 2021 at 10:05:06PM -0700, Anusha Srivatsa wrote: >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> Lucas De Marchi >--- > drivers/gpu/drm/i915/intel_step.c | 14 ++++++++++++ > drivers/gpu/drm/i915/intel_step.h | 37 +++++++++++++++++++------------ > 2 files changed, 37 insertions(+), 14 deletions(-) > >diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c >index 9fcf17708cc8..26f6b1d376e1 100644 >--- a/drivers/gpu/drm/i915/intel_step.c >+++ b/drivers/gpu/drm/i915/intel_step.c >@@ -182,3 +182,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 "**"; >+ } >+} >diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h >index 88a77159703e..f6641e2a3c77 100644 >--- a/drivers/gpu/drm/i915/intel_step.h >+++ b/drivers/gpu/drm/i915/intel_step.h >@@ -15,30 +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_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__ */ >-- >2.32.0 >
diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c index 9fcf17708cc8..26f6b1d376e1 100644 --- a/drivers/gpu/drm/i915/intel_step.c +++ b/drivers/gpu/drm/i915/intel_step.c @@ -182,3 +182,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 "**"; + } +} diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h index 88a77159703e..f6641e2a3c77 100644 --- a/drivers/gpu/drm/i915/intel_step.h +++ b/drivers/gpu/drm/i915/intel_step.h @@ -15,30 +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_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__ */
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> --- drivers/gpu/drm/i915/intel_step.c | 14 ++++++++++++ drivers/gpu/drm/i915/intel_step.h | 37 +++++++++++++++++++------------ 2 files changed, 37 insertions(+), 14 deletions(-)