[Intel-gfx] [PATCH 2/8] drm/i915/dmc: Use RUNTIME_INFO->step for DMC
Jani Nikula
jani.nikula at linux.intel.com
Wed Jul 7 08:29:12 UTC 2021
On Tue, 06 Jul 2021, Anusha Srivatsa <anusha.srivatsa at intel.com> wrote:
> Instead of adding new table for every new platform, lets ues
> the stepping info from RUNTIME_INFO(dev_priv)->step
> This patch uses RUNTIME_INFO->step only for recent
> platforms.
>
> Patches that follow this will address this change for
> remaining platforms + missing platforms.
>
> Signed-off-by: Anusha Srivatsa <anusha.srivatsa at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dmc.c | 61 +++++++++++++++++++++---
> 1 file changed, 54 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
> index f8789d4543bf..a38720f25910 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc.c
> @@ -266,10 +266,12 @@ static const struct stepping_info icl_stepping_info[] = {
> };
>
> static const struct stepping_info no_stepping_info = { '*', '*' };
> +struct stepping_info *display_step;
We can't have driver specific mutable data for this. Almost everything
has to be either device specific or const. The above would be shared
between all devices.
BR,
Jani.
>
> static const struct stepping_info *
> intel_get_stepping_info(struct drm_i915_private *dev_priv)
> {
> + struct intel_step_info step = RUNTIME_INFO(dev_priv)->step;
> const struct stepping_info *si;
> unsigned int size;
>
> @@ -282,15 +284,60 @@ intel_get_stepping_info(struct drm_i915_private *dev_priv)
> } else if (IS_BROXTON(dev_priv)) {
> size = ARRAY_SIZE(bxt_stepping_info);
> si = bxt_stepping_info;
> - } else {
> - size = 0;
> - si = NULL;
> }
>
> - if (INTEL_REVID(dev_priv) < size)
> - return si + INTEL_REVID(dev_priv);
> -
> - return &no_stepping_info;
> + if (IS_ICELAKE(dev_priv) || IS_SKYLAKE(dev_priv) || IS_BROXTON(dev_priv))
> + return INTEL_REVID(dev_priv) < size ? si + INTEL_REVID(dev_priv) : &no_stepping_info;
> +
> + else {
> + switch (step.display_step) {
> + case STEP_A0:
> + display_step->stepping = 'A';
> + display_step->substepping = '0';
> + break;
> + case STEP_A2:
> + display_step->stepping = 'A';
> + display_step->substepping = '2';
> + break;
> + case STEP_B0:
> + display_step->stepping = 'B';
> + display_step->substepping = '0';
> + break;
> + case STEP_B1:
> + display_step->stepping = 'B';
> + display_step->substepping = '1';
> + break;
> + case STEP_C0:
> + display_step->stepping = 'C';
> + display_step->substepping = '0';
> + break;
> + case STEP_D0:
> + display_step->stepping = 'D';
> + display_step->substepping = '0';
> + break;
> + case STEP_D1:
> + display_step->stepping = 'D';
> + display_step->substepping = '1';
> + break;
> + case STEP_E0:
> + display_step->stepping = 'E';
> + display_step->substepping = '0';
> + break;
> + case STEP_F0:
> + display_step->stepping = 'F';
> + display_step->substepping = '0';
> + break;
> + case STEP_G0:
> + display_step->stepping = 'G';
> + display_step->substepping = '0';
> + break;
> + default:
> + display_step->stepping = '*';
> + display_step->substepping = '*';
> + break;
> + }
> + }
> + return display_step;
> }
>
> static void gen9_set_dc_state_debugmask(struct drm_i915_private *dev_priv)
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list