]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/display: add step name in display runtime info
authorJani Nikula <jani.nikula@intel.com>
Mon, 16 Mar 2026 12:14:59 +0000 (14:14 +0200)
committerJani Nikula <jani.nikula@intel.com>
Tue, 17 Mar 2026 15:50:46 +0000 (17:50 +0200)
Initialize the stepping name in display runtime info. This avoids having
to use intel_step_name().

For display device info print at boot, debugfs and snapshot this changes
the unknown step name from ** to N/A, which is more user friendly
anyway.

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://patch.msgid.link/aab445dedb8235d9fdddfe2ee5bb624cdf453a18.1773663208.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_device.c
drivers/gpu/drm/i915/display/intel_display_device.h

index 55689111c5d7ba4ae213ed8881761d8fa530106e..30d734a432110c63fd89700320fbf3a12235bcc3 100644 (file)
@@ -1653,6 +1653,28 @@ static void display_platforms_or(struct intel_display_platforms *dst,
        bitmap_or(dst->bitmap, dst->bitmap, src->bitmap, display_platforms_num_bits());
 }
 
+#define __STEP_NAME(name) [STEP_##name] = #name,
+
+static void initialize_step(struct intel_display *display, enum intel_step step)
+{
+       static const char step_names[][3] = {
+               STEP_NAME_LIST(__STEP_NAME)
+       };
+
+       DISPLAY_RUNTIME_INFO(display)->step = step;
+
+       /* Step name will remain an empty string if not applicable */
+       if (step >= 0 && step < ARRAY_SIZE(step_names))
+               strscpy(DISPLAY_RUNTIME_INFO(display)->step_name, step_names[step]);
+}
+
+#undef __STEP_NAME
+
+static const char *step_name(const struct intel_display_runtime_info *runtime)
+{
+       return strlen(runtime->step_name) ? runtime->step_name : "N/A";
+}
+
 struct intel_display *intel_display_device_probe(struct pci_dev *pdev,
                                                 const struct intel_display_parent_interface *parent)
 {
@@ -1730,14 +1752,14 @@ struct intel_display *intel_display_device_probe(struct pci_dev *pdev,
                                          subdesc ? &subdesc->step_info : NULL);
        }
 
-       DISPLAY_RUNTIME_INFO(display)->step = step;
+       initialize_step(display, step);
 
        drm_info(display->drm, "Found %s%s%s (device ID %04x) %s display version %u.%02u stepping %s\n",
                 desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
                 pdev->device, display->platform.dgfx ? "discrete" : "integrated",
                 DISPLAY_RUNTIME_INFO(display)->ip.ver,
                 DISPLAY_RUNTIME_INFO(display)->ip.rel,
-                step != STEP_NONE ? intel_step_name(step) : "N/A");
+                step_name(DISPLAY_RUNTIME_INFO(display)));
 
        return display;
 
@@ -1953,7 +1975,7 @@ void intel_display_device_info_print(const struct intel_display_device_info *inf
                drm_printf(p, "display version: %u\n",
                           runtime->ip.ver);
 
-       drm_printf(p, "display stepping: %s\n", intel_step_name(runtime->step));
+       drm_printf(p, "display stepping: %s\n", step_name(runtime));
 
 #define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, str_yes_no(info->name))
        DEV_INFO_DISPLAY_FOR_EACH_FLAG(PRINT_FLAG);
index e84c190dcc4f4382206a501874c0f8ecc75aca4e..1170ac3466156fd4ed3faef052486ddfbe1049bf 100644 (file)
@@ -287,6 +287,7 @@ struct intel_display_runtime_info {
                u16 step; /* hardware */
        } ip;
        int step; /* symbolic */
+       char step_name[3]; /* empty string if not applicable */
 
        u32 rawclk_freq;