162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright © 2020,2021 Intel Corporation
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef __INTEL_STEP_H__
762306a36Sopenharmony_ci#define __INTEL_STEP_H__
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/types.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistruct drm_i915_private;
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistruct intel_step_info {
1462306a36Sopenharmony_ci	/*
1562306a36Sopenharmony_ci	 * It is expected to have 4 number steps per letter. Deviation from
1662306a36Sopenharmony_ci	 * the expectation breaks gmd_to_intel_step().
1762306a36Sopenharmony_ci	 */
1862306a36Sopenharmony_ci	u8 graphics_step;	/* Represents the compute tile on Xe_HPC */
1962306a36Sopenharmony_ci	u8 display_step;
2062306a36Sopenharmony_ci	u8 media_step;
2162306a36Sopenharmony_ci	u8 basedie_step;
2262306a36Sopenharmony_ci};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define STEP_ENUM_VAL(name)  STEP_##name,
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci#define STEP_NAME_LIST(func)		\
2762306a36Sopenharmony_ci	func(A0)			\
2862306a36Sopenharmony_ci	func(A1)			\
2962306a36Sopenharmony_ci	func(A2)			\
3062306a36Sopenharmony_ci	func(A3)			\
3162306a36Sopenharmony_ci	func(B0)			\
3262306a36Sopenharmony_ci	func(B1)			\
3362306a36Sopenharmony_ci	func(B2)			\
3462306a36Sopenharmony_ci	func(B3)			\
3562306a36Sopenharmony_ci	func(C0)			\
3662306a36Sopenharmony_ci	func(C1)			\
3762306a36Sopenharmony_ci	func(C2)			\
3862306a36Sopenharmony_ci	func(C3)			\
3962306a36Sopenharmony_ci	func(D0)			\
4062306a36Sopenharmony_ci	func(D1)			\
4162306a36Sopenharmony_ci	func(D2)			\
4262306a36Sopenharmony_ci	func(D3)			\
4362306a36Sopenharmony_ci	func(E0)			\
4462306a36Sopenharmony_ci	func(E1)			\
4562306a36Sopenharmony_ci	func(E2)			\
4662306a36Sopenharmony_ci	func(E3)			\
4762306a36Sopenharmony_ci	func(F0)			\
4862306a36Sopenharmony_ci	func(F1)			\
4962306a36Sopenharmony_ci	func(F2)			\
5062306a36Sopenharmony_ci	func(F3)			\
5162306a36Sopenharmony_ci	func(G0)			\
5262306a36Sopenharmony_ci	func(G1)			\
5362306a36Sopenharmony_ci	func(G2)			\
5462306a36Sopenharmony_ci	func(G3)			\
5562306a36Sopenharmony_ci	func(H0)			\
5662306a36Sopenharmony_ci	func(H1)			\
5762306a36Sopenharmony_ci	func(H2)			\
5862306a36Sopenharmony_ci	func(H3)			\
5962306a36Sopenharmony_ci	func(I0)			\
6062306a36Sopenharmony_ci	func(I1)			\
6162306a36Sopenharmony_ci	func(I2)			\
6262306a36Sopenharmony_ci	func(I3)			\
6362306a36Sopenharmony_ci	func(J0)			\
6462306a36Sopenharmony_ci	func(J1)			\
6562306a36Sopenharmony_ci	func(J2)			\
6662306a36Sopenharmony_ci	func(J3)
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci/*
6962306a36Sopenharmony_ci * Symbolic steppings that do not match the hardware. These are valid both as gt
7062306a36Sopenharmony_ci * and display steppings as symbolic names.
7162306a36Sopenharmony_ci */
7262306a36Sopenharmony_cienum intel_step {
7362306a36Sopenharmony_ci	STEP_NONE = 0,
7462306a36Sopenharmony_ci	STEP_NAME_LIST(STEP_ENUM_VAL)
7562306a36Sopenharmony_ci	STEP_FUTURE,
7662306a36Sopenharmony_ci	STEP_FOREVER,
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_civoid intel_step_init(struct drm_i915_private *i915);
8062306a36Sopenharmony_ciconst char *intel_step_name(enum intel_step step);
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci#endif /* __INTEL_STEP_H__ */
83