Commit e631a440 authored by Anusha Srivatsa's avatar Anusha Srivatsa
Browse files

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
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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 "**";
	}
}
+23 −15
Original line number Diff line number Diff line
@@ -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__ */