drm/client: Extract drm_connector_first_mode()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 4 Apr 2024 20:33:32 +0000 (23:33 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 3 Oct 2024 05:02:23 +0000 (08:02 +0300)
Use a consistent method for picking the first mode from the
connnector's mode list.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404203336.10454-9-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/drm_client_modeset.c

index d62b31d..251f943 100644 (file)
@@ -159,6 +159,12 @@ drm_connector_preferred_mode(struct drm_connector *connector, int width, int hei
        return NULL;
 }
 
+static struct drm_display_mode *drm_connector_first_mode(struct drm_connector *connector)
+{
+       return list_first_entry_or_null(&connector->modes,
+                                       struct drm_display_mode, head);
+}
+
 static struct drm_display_mode *drm_connector_pick_cmdline_mode(struct drm_connector *connector)
 {
        struct drm_cmdline_mode *cmdline_mode;
@@ -444,10 +450,8 @@ retry:
                        modes[i] = drm_connector_preferred_mode(connector, width, height);
                }
                /* No preferred modes, pick one off the list */
-               if (!modes[i] && !list_empty(&connector->modes)) {
-                       list_for_each_entry(modes[i], &connector->modes, head)
-                               break;
-               }
+               if (!modes[i])
+                       modes[i] = drm_connector_first_mode(connector);
                /*
                 * In case of tiled mode if all tiles not present fallback to
                 * first available non tiled mode.
@@ -693,9 +697,7 @@ retry:
                if (!modes[i] && !list_empty(&connector->modes)) {
                        drm_dbg_kms(dev, "[CONNECTOR:%d:%s] using first listed mode\n",
                                    connector->base.id, connector->name);
-                       modes[i] = list_first_entry(&connector->modes,
-                                                   struct drm_display_mode,
-                                                   head);
+                       modes[i] = drm_connector_first_mode(connector);
                }
 
                /* last resort: use current mode */