All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Roper <matthew.d.roper@intel.com>
To: Anusha Srivatsa <anusha.srivatsa@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 09/10] drm/i915/step: Add intel_step_name() helper
Date: Thu, 8 Jul 2021 21:16:16 -0700	[thread overview]
Message-ID: <20210709041616.GD951094@mdroper-desk1.amr.corp.intel.com> (raw)
In-Reply-To: <20210708231821.9163-10-anusha.srivatsa@intel.com>

On Thu, Jul 08, 2021 at 04:18:20PM -0700, Anusha Srivatsa wrote:
> Add a helper to convert the step info to string.
> This is specifically useful when we want to load a specific
> firmware for a given stepping/substepping combination.

What if we use macros to generate the per-stepping code here as well as
the stepping values in the enum?

In intel_step.h:

        #define STEPPING_NAME_LIST(func) \
                func(A0)
                func(A1)
                func(A2)
                func(B0)
                ...

        #define STEPPING_ENUM_VAL(name)  STEP_##name,

        enum intel_step {
                STEP_NONE = 0,
                STEPPING_NAME_LIST(STEPPING_ENUM_VAL)
                STEP_FUTURE,
                STEP_FOREVER,
        };

and in intel_step.c:

        #define STEPPING_NAME_CASE(name)        \
                case STEP_##name:               \
                        return #name;           \
                        break;

        const char *intel_step_name(enum intel_step step) {
                switch(step) {
                STEPPING_NAME_LIST(STEPPING_NAME_CASE)

                default:
                        return "**";
                }
        }

This has the advantage that anytime a new stepping is added (in
STEPPING_NAME_LIST) it will generate a new "STEP_XX" enum value and a
new case statement to return "XX" as the name; we won't have to remember
to update two separate places in the code.


Matt

> 
> Suggested-by: Jani Nikula <jani.nikula@linux.intel.com>
> Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_step.c | 58 +++++++++++++++++++++++++++++++
>  drivers/gpu/drm/i915/intel_step.h |  1 +
>  2 files changed, 59 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
> index 99c0d3df001b..9af7f30b777e 100644
> --- a/drivers/gpu/drm/i915/intel_step.c
> +++ b/drivers/gpu/drm/i915/intel_step.c
> @@ -182,3 +182,61 @@ void intel_step_init(struct drm_i915_private *i915)
>  
>  	RUNTIME_INFO(i915)->step = step;
>  }
> +
> +const char *intel_step_name(enum intel_step step) {
> +	switch (step) {
> +	case STEP_A0:
> +		return "A0";
> +		break;
> +	case STEP_A1:
> +		return "A1";
> +		break;
> +	case STEP_A2:
> +		return "A2";
> +		break;
> +	case STEP_B0:
> +		return "B0";
> +		break;
> +	case STEP_B1:
> +		return "B1";
> +		break;
> +	case STEP_B2:
> +		return "B2";
> +		break;
> +	case STEP_C0:
> +		return "C0";
> +		break;
> +	case STEP_C1:
> +		return "C1";
> +		break;
> +	case STEP_D0:
> +		return "D0";
> +		break;
> +	case STEP_D1:
> +		return "D1";
> +		break;
> +	case STEP_E0:
> +		return "E0";
> +		break;
> +	case STEP_F0:
> +		return "F0";
> +		break;
> +	case STEP_G0:
> +		return "G0";
> +		break;
> +	case STEP_H0:
> +		return "H0";
> +		break;
> +	case STEP_I0:
> +		return "I0";
> +		break;
> +	case STEP_I1:
> +		return "I1";
> +		break;
> +	case STEP_J0:
> +		return "J0";
> +		break;
> +	default:
> +		return "**";
> +	}
> +}
> diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
> index 3e8b2babd9da..2fbe51483472 100644
> --- a/drivers/gpu/drm/i915/intel_step.h
> +++ b/drivers/gpu/drm/i915/intel_step.h
> @@ -43,5 +43,6 @@ enum intel_step {
>  };
>  
>  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
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Matt Roper
Graphics Software Engineer
VTT-OSGC Platform Enablement
Intel Corporation
(916) 356-2795
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2021-07-09  4:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08 23:18 [Intel-gfx] [PATCH 00/10] Get stepping info from RUNTIME_INFO->step Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 01/10] drm/i915: Make pre-production detection use direct revid comparison Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 02/10] drm/i915/skl: Use revid->stepping tables Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 03/10] drm/i915/icl: " Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 04/10] drm/i915/jsl_ehl: " Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 05/10] drm/i915/rkl: " Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 06/10] drm/i915/dg1: " Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 07/10] drm/i915/cnl: Drop all workarounds Anusha Srivatsa
2021-07-08 23:18 ` [Intel-gfx] [PATCH 08/10] drm/i915/bxt: Use revid->stepping tables Anusha Srivatsa
2021-07-09  3:53   ` Matt Roper
2021-07-08 23:18 ` [Intel-gfx] [PATCH 09/10] drm/i915/step: Add intel_step_name() helper Anusha Srivatsa
2021-07-09  4:16   ` Matt Roper [this message]
2021-07-09 17:52     ` Lucas De Marchi
2021-07-09 18:36       ` Srivatsa, Anusha
2021-07-09 18:43         ` Lucas De Marchi
2021-07-08 23:18 ` [Intel-gfx] [PATCH 10/10] drm/i915/dmc: Modify intel_get_stepping_info() Anusha Srivatsa
2021-07-09  0:35 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Get stepping info from RUNTIME_INFO->step Patchwork
2021-07-09  0:36 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-07-09  1:03 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210709041616.GD951094@mdroper-desk1.amr.corp.intel.com \
    --to=matthew.d.roper@intel.com \
    --cc=anusha.srivatsa@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.