Commit cbc1e869 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/client: Extract drm_connector_first_mode()



Use a consistent method for picking the first mode from the
connnector's mode list.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404203336.10454-9-ville.syrjala@linux.intel.com


Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 90c6b187
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -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 @@ static bool drm_client_target_preferred(struct drm_device *dev,
			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 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
		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 */